初始目录结构
考虑以下虚构的目录结构:
src
├── 1.js
├── 2.js
└── a
├── 3.js
├── 4.js
└── b
├── 5.js
├── 6.js
└── c
├── 7.js
└── 8.js
示例一
Gruntfile.js
您可以按如下方式配置您的grunt-contrib-copy 任务:
module.exports = function(grunt) {
grunt.initConfig({
copy: {
js: {
files: [{
expand: true,
dot: true,
cwd: 'src',
dest: 'src/',
src: [
'**/*.js'
],
rename: function(dest, src) {
return dest + src.replace('.js', '.old.js');
}
}]
}
}
});
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.registerTask('default', [
'copy:js'
]);
};
结果目录结构(示例一)
使用如上所示配置的Gruntfile.js 通过CLI 运行$ grunt 后,将产生以下结果:
(注意:每个原始 .js 文件已复制到相同的文件夹位置并添加了 .old.js 扩展名):
src
├── 1.js
├── 1.old.js
├── 2.js
├── 2.old.js
└── a
├── 3.js
├── 3.old.js
├── 4.js
├── 4.old.js
└── b
├── 5.js
├── 5.old.js
├── 6.js
├── 6.old.js
└── c
├── 7.js
├── 7.old.js
├── 8.js
└── 8.old.js
示例 2
如果您不想保留原始的.js 文件,那么您还需要使用grunt-contrib-clean 删除原始文件。
Gruntfile.js
module.exports = function(grunt) {
grunt.initConfig({
copy: {
js: {
files: [{
expand: true,
dot: true,
cwd: 'src',
dest: 'src/',
src: [
'**/*.js'
],
rename: function(dest, src) {
return dest + src.replace('.js', '.old.js');
}
}]
}
},
clean: {
originaljs: [
'src/**/*.js',
'!src/**/*.old.js'
]
}
});
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.registerTask('default', [
'copy:js',
'clean:originaljs'
]);
};
结果目录结构(示例二)
这次在使用修改后的Gruntfile.js 运行$ grunt 后将产生以下结果:
(注意:每个原始的.js 已被删除,仅存在.old.js 扩展名。)
src
├── 1.old.js
├── 2.old.js
└── a
├── 3.old.js
├── 4.old.js
└── b
├── 5.old.js
├── 6.old.js
└── c
├── 7.old.js
└── 8.old.js