我正在使用Grunt 0.4.1和Grunt-contrib-copy版本0.4.1。我正在尝试将图像从src目录复制到分发目录,但它正在复制完整的src目录而不是仅复制images目录的内容。换句话说,这是创建 dist / images / src / images /...,而我希望结果只是 dist / images /...
这是我的复制任务:
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 / images 的子目录复制到 dist / images ?
这些文件已经过压缩,只需要在构建期间复制到目标位置。
答案 0 :(得分:18)
实际修复我的问题是指定我使用“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”属性允许您从一个文件结构中挑选子目录和文件,并将它们复制到另一个文件结构中。
答案 1 :(得分:4)
您需要指定flatten
选项,该选项会删除目录树。
copy: {
images: {
expand: true,
cwd: 'src/images/',
src: ['**/*'],
dest: 'dist/images/',
filter: 'isFile',
flatten: true
}
}