Исходная структура каталогов
Рассмотрим следующую воображаемую структуру каталогов:
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'
]);
};
Результирующая структура каталогов (пример 1)
После запуска $ grunt
через интерфейс командной строки с использованием Gruntfile.js
, настроенного, как показано выше, произойдет следующее:
(Примечание: каждый исходный файл .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'
]);
};
Результирующая структура каталогов (пример 2)
На этот раз после запуска $ grunt
с исправленным Gruntfile.js
результат будет следующим:
(Примечание: все исходные .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
person
RobC
schedule
17.02.2017