2013-10-16 14 views
9

Sto utilizzando Grunt 0.4.1 e Grunt-contrib-copy versione 0.4.1. Sto cercando di copiare le immagini da una directory src in una directory di distribuzione, ma sta copiando la directory completa di src invece del solo contenuto della directory delle immagini. In altre parole, questa è la creazione di dist/images/src/images/..., mentre io voglio che il risultato sia solo dist/immagini/...Utilizzo di Grunt Copy per copiare le immagini nella nuova directory

Ecco la mia attività di copia:

copy: { 
    images: { 
    files: { 
     'dist/images/': 'src/images/**/*' 
    } 
    } 
} 

Ed è in esecuzione come segue:

// Default task. 
grunt.loadNpmTasks('grunt-contrib-concat'); 
grunt.loadNpmTasks('grunt-contrib-uglify'); 
grunt.loadNpmTasks('grunt-contrib-less'); 
grunt.loadNpmTasks('grunt-contrib-cssmin'); 
grunt.loadNpmTasks('grunt-contrib-copy'); 
grunt.registerTask('default', ['less', 'concat', 'uglify', 'cssmin', 'copy']); 

come faccio a farlo in modo che solo le sottodirectory di src/immagini vengono copiati nella dist/images?

Questi file sono già compressi e devono essere copiati nella destinazione solo durante la compilazione.

risposta

4

Si desidera specificare l'opzione flatten, che rimuove l'albero delle directory.

copy: { 
    images: { 
     expand:  true, 
     cwd:  'src/images/', 
     src:  ['**/*'], 
     dest:  'dist/images/', 
     filter:  'isFile', 
     flatten: true 
    } 
} 
16

Che cosa realmente risolto il mio problema era che designa la struttura della directory radice da cui copiavo con la direttiva "CWD" e poi lo src esattamente come sopra. Sono appena tornato per postare questo e ho visto la stessa soluzione in sostanza che mi era venuta in mente. Ecco che cosa ha funzionato per me:

copy: { 
    images: { 
    files: [ 
     { 
     expand: true, 
     cwd: 'src/images/', 
     src: ['**/*.{png,jpg,svg}'], 
     dest:'dist/images/' 
     } 
    ] 
    } 
} 

La proprietà "CWD" consente di definire la radice della fonte da cui si sta copiando. Questo non sarà incluso nel percorso dei file copiati. Quindi nel mio caso, definito "cwd" come "src/images", sono quindi in grado di definire il sorgente come "**/*. {Png, jpg, svg}" Questo trova tutte le sottodirectory nelle immagini di origine directory e copia solo i file con le estensioni che ho fornito. Questo mi dà il risultato che voglio: dist/images/... con tutte le sottodirectory come previsto.

Senza utilizzare "cwd", la copia di grunt-contrib copia letteralmente l'intera struttura ad albero di origine nella destinazione. La proprietà "cwd" ti permette di selezionare sottodirectory e file da una struttura di file e copiarli in un altro.

Problemi correlati