Gruntjs 运行不同的任务仅在一个文件中不同
我有一个复杂的Gruntjs 运行不同的任务仅在一个文件中不同,gruntjs,Gruntjs,我有一个复杂的.grunt文件,里面有很多东西。其中包括concat。它看起来是这样的 concat: { libraries : { src : [many files], dest: 'libraries.js' }, ... a lot of similar things, myCode : { src : [ 'config.js', // this is the main problem ...
.grunt
文件,里面有很多东西。其中包括concat
。它看起来是这样的
concat: {
libraries : {
src : [many files],
dest: 'libraries.js'
},
... a lot of similar things,
myCode : {
src : [
'config.js', // this is the main problem
... a lot of files
],
dest: 'myCode.js'
},
}
所以主要的问题是我有我的预生产环境和真实环境。我希望为它们中的每一个都包含不同的配置(比如config\u dev.js
和config\u prod.js
)
我目前处理它的方式是创建不同的code\u
部分:
myCode_prod : {
src : [
'config_prod.js', // this is the main problem
... a lot of files
],
dest: 'myCode.js'
},
myCode_dev : {
src : [
'config_dev.js', // this is the main problem
... a lot of files
],
dest: 'myCode.js'
}
然后注册两个不同的任务:
grunt.registerTask('default', [
// my other tasks
'concat:libraries',
'concat:otherthings',
'concat:myCode_prod'
]);
及
它运行良好且正确,但问题是,myCode\u dev
只在一个文件和许多其他文件中不同(比如20个文件,它们每周都在添加/更改)。问题是:有时我忘了包括/复制所有这些内容,问题就开始了
那么,有没有一种方法可以用不同的方式来做呢
p.S.我知道这个标题不好,但找不到更好的。所以请随意更改。我认为您需要的是尽早将
dev
与dist
分开。在这方面,我有一个类似的方法,可能会被证明是有用的。主要思想是注册两个任务并选择一个默认任务(您仍然需要查看包含dev
和dist
变体的任务-在本例中,要完全理解它,请查看uglify
和compass
):
最后一行表示当您自己运行命令grunt
时,dev
将默认运行。如果您想创建一个用于生产的构建,那么必须是特定的,比如:grunt:dist
注意,这个项目是以grunt watch为中心的,我认为这是最好的工作流。watch
任务如果配置巧妙,将仅在被监视的文件发生更改时解析/编译某些文件。这样,当只对javascript
文件进行更改时,才不会编译/连接/缩小CSS
文件,而只对javascript
文件进行更改。这一切都在那个项目中,请随意探索。干杯
grunt.registerTask('default', [
// my other tasks
'concat:libraries',
'concat:otherthings',
'concat:myCode_dev'
]);
// Compile production files
grunt.registerTask('dist', [
'jshint',
'jasmine',
'uglify:dist',
'compass:dist'
]);
// Compile developer friendly environment
grunt.registerTask('dev', [
'jshint',
'jasmine',
'uglify:dev',
'compass:dev'
]);
// Default task(s).
grunt.registerTask('default', 'dev');