2013-10-16 50 views
9

我使用Grunt 0.4.1和Grunt-contrib-copy版本0.4.1。我試圖將圖像從src目錄複製到分發目錄,但它將複製完整的src目錄而不是僅複製圖像目錄的內容。換句話說,這是創造DIST /圖片/ src目錄/圖片/ ...,而我想要的結果僅僅是DIST /圖片/ ...使用Grunt Copy將圖像複製到新目錄

這裏是我的複製任務:

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

,並按如下它正在運行:

// 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']); 

我如何得到它,以便只有的src /圖像的子目錄被複制到dist/images

這些文件已經被壓縮,只需要在構建期間複製到目的地。

回答

4

您需要指定flatten選項,該選項將刪除目錄樹。

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

什麼實際固定我的問題是指定從我的「CWD」指令複製根目錄結構,然後在src酷似以上。剛回來張貼這個,基本上看到了我提出的解決方案。以下是對我有用的東西:

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

「cwd」屬性允許您定義要從中複製的源的根目錄。這不會包含在複製文件的路徑中。因此,在我的情況下,通過將「cwd」定義爲「src/images」,我可以將源代碼定義爲「**/*。{png,jpg,svg}」。這會找到源圖像中的所有子目錄目錄並且只複製我提供的擴展名的文件。這給了我想要的結果:dist/images/...與預期的所有子目錄一樣。

在不使用「cwd」的情況下,grunt-contrib-copy將整個源樹結構複製到目標中。 「cwd」屬性允許你從一個文件結構中挑選子目錄和文件,並將它們複製到另一個文件結構中。

相關問題