Mik*_*ike 4 javascript node.js gruntjs
我开始在我的一个项目中使用GruntJS.我很容易完成使用简单别名编写一个简单的构建脚本.
但是我的脚本包含许多基本相同的任务,唯一的区别是一些参数,如源文件夹和目标文件夹.
例如:
sass: {
options:{
trace: true,
debugInfo: true,
style: 'compressed'
},
html: {
files: {
'build/html/css/main.css': 'sass/html.sass'
}
},
html2: {
files: {
'build/html2/css/main.css': 'sass/html2.sass'
}
},
html3: {
files: {
'build/html3/css/main.css': 'sass/html3.sass'
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想要实现的是只有一个任务,然后将参数(dest,src)传递给该任务.
我尝试使用MultiTasks实现这个:
grunt.registerTask('sass2', 'Run all Sass compilation tasks.', function() {
var projects = ['html','html2','html3'];
projects.forEach(function(proj){
grunt.config.set('sass.files.dest', 'build/' + proj + '/css/main.css');
grunt.config.set('sass.files.src', 'sass/' + proj + '.sass');
grunt.log.writeln(grunt.config.get('sass.files.dest'));
grunt.log.writeln(grunt.config.get('sass.files.src'));
grunt.task.run('sass');
});
});
Run Code Online (Sandbox Code Playgroud)
Grunt日志输出params的正确值,但只有html3 sass被编译.
我不明白为什么只有一个项目被编译,我怎么能解决这个问题.
也许还有另一种方法可以解决这个问题.一个更好的方法.也许使用模板?
任何形式的帮助或提示将不胜感激.
谢谢!
仅使用最后一个配置,因为grunt.task.run将它们排队以在当前任务完成后运行.来自API:
将一个或多个任务排入队列.taskList中的每个指定任务都将在当前任务完成后立即按指定的顺序运行
你有的是:
相反,您可以执行类似的操作来动态创建大量配置节,然后运行这些任务:
grunt.config.set('sass.' + proj + '.files', [{
src: 'sass/' + proj + '.sass',
dest: 'build/' + proj + '/css/main.css'
}]);
Run Code Online (Sandbox Code Playgroud)
然后使用新创建的部分调用runtask:
grunt.task.run('sass:' + proj);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2897 次 |
| 最近记录: |