我有一个复杂的.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_dev.js
和config_prod.js
)。
我目前处理它的方法是创建不同的code_
部分:
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'
}
然后注册2个不同的任务:
grunt.registerTask('default', [
// my other tasks
'concat:libraries',
'concat:otherthings',
'concat:myCode_prod'
]);
和
grunt.registerTask('default', [
// my other tasks
'concat:libraries',
'concat:otherthings',
'concat:myCode_dev'
]);
它运行良好且正确,但问题是myCode_dev
仅在一个文件和许多其他文件(例如20并且它们每周都在添加/更改)中有所不同。这就是问题所在:有时我会忘记包含/复制所有问题并开始解决问题。
那么有没有办法以不同的方式做到这一点?
P.S。我知道标题很糟糕,但找不到更好的标题。所以请按照你的意愿改变它。
答案 0 :(得分:0)
我认为您需要的是尽早将dev
与dist
分开。在this project我有一个可能证明有用的类似方法。主要想法是注册两个任务并选择一个默认任务(您仍然需要查看包含dev
和dist
变体的任务 - 在这种情况下uglify
和compass
,要完全理解它:
// 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');
最后一行意味着当您单独运行命令dev
时,grunt
默认运行。如果您想要用于制作,那么您必须具体,例如:grunt:dist
。
请注意,此项目以grunt watch
为中心,我认为这是最佳工作流程。如果智能配置,watch
任务将仅在被监视的文件发生更改时解析/编译某些文件。这样,仅对CSS
个文件(仅javascript
个文件)进行更改时,不会编译/连接/缩小javascript
个文件。它就在那个项目中,随时可以探索它。干杯!