这看起来像是 grunt
的 grunt-contrib-copy
特定问题,但它实际上适用于更通用的范围。
冗余配置
我有以下 Gruntfile.js
:
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
copy: {
examples: {
cli: {
files: [
{ src: ['src/client.js'], dest: 'examples/client.js' }
]
},
srv: {
files: [
{ src: ['src/server.js'], dest: 'examples/server.js' }
]
},
all: { /* ATTENTION: Redundant part! */
files: [
{ src: ['src/client.js'], dest: 'examples/client.js' },
{ src: ['src/server.js'], dest: 'examples/server.js' }
]
}
},
},
});
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.registerTask('default', [...]);
grunt.registerTask('build-examples', ['copy:examples']);
};
但这是多余的!
试图避免冗余
我想做这样的事情:
all: {
files: examples.cli.files.concat(examples.srv.files)
}
但这是不可能的。
此处的最佳做法是什么?谢谢
最佳答案
请记住这是 JavaScript 代码,因此您可以在 JavaScript 代码中执行任何操作:
module.exports = function(grunt) {
// Project configuration.
var clientFiles = [
{ src: ['src/client.js'], dest: 'examples/client.js' }
];
var serverFiles = [
{ src: ['src/server.js'], dest: 'examples/server.js' }
];
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
copy: {
examples: {
cli: {
files: clientFiles
},
srv: {
files: serverFiles
},
all: {
files: clientFiles.concat(serverFiles)
}
},
},
});
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.registerTask('default', [...]);
grunt.registerTask('build-examples', ['copy:examples']);
};
关于javascript - 如何引用 Grunt 文件中的某个部分以避免冗余?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31500699/