這可以使用grunt-contrib-copy插件完成。
最重要的是要注意的是,您可以通過使用重命名函數(其中包含每個文件的目標和源)以編程方式更改目標。
這裏是一個(有點脆)樣品Gruntfile.js
應該複製到所需的結構:
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
copy: {
main: {
files: [
{
expand: true,
cwd: 'src/modules/',
src: ['**/*.js'],
dest: 'dev/js/',
rename: function(dest, src) {
// use the source directory to create the file
// example with your directory structure
// dest = 'dev/js/'
// src = 'module1/js/main.js'
return dest + src.substring(0, src.indexOf('/')) + '.js';
}
},
{
expand: true,
cwd: 'src/modules/',
src: ['**/*.scss'],
dest: 'dev/css/',
rename: function(dest, src) {
return dest + src.substring(0, src.indexOf('/')) + '.css';
}
},
{
expand: true,
cwd: 'src/modules/',
src: ['**/*.html'],
dest: 'dev/',
rename: function(dest, src) {
return dest + src.substring(0, src.indexOf('/')) + '.html';
}
}
]
}
}
});
grunt.loadNpmTasks('grunt-contrib-copy');
// Default task(s).
grunt.registerTask('default', ['copy']);
};
得到相反的情況:需要將文件從一個來源移動到不同的文件夾。你的回答解決了我的問題,謝謝! – kibin 2013-10-04 19:35:16
在這裏還需要注意的是,如果你想在重命名時跳過某些文件,正確的返回值(默認)是'return dest +'/'+ src' - 這會導致文件被複制到默認位置。 – 2014-01-06 13:06:38
@AlexeyKibin - 這也解決了你的問題。 – 2014-01-06 13:15:01