我开始在我的一个项目中使用 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'
}
}
}
我想要实现的是只有一个任务,然后将参数 (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');
});
});
Grunt 日志为参数输出正确的值,但是只有 html3 sass 被编译。
我不明白为什么只有一个项目被编译,我该如何解决这个问题。
也许还有另一种方法可以解决这个问题。更好的方法。也许使用模板?
任何帮助或提示将不胜感激。
谢谢!