我们在微调 Grunt 设置时遇到了一些问题。我们当前的项目设置是这样的。我们有一个 Themes 文件夹,在该主题文件夹中有不同的主题,它们都有自己的 SCSS 文件和与该主题相关的其他位。
我们的 grunt 文件是这样设置的,包含大约 15 个主题(省略了默认的 Grunt 设置和 JSHint,因为最终 Grunt 正在工作):
compass: {
options: {
...
}
theme1: {
src: ['App/Themes/theme1/scss/**/*.scss'],
tasks: ['compass'],
options: {
sassDir: 'App/Themes/theme1/scss',
cssDir: 'App/Themes/theme1'
}
},
theme2: {
src: ['App/Themes/theme2/scss/**/*.scss'],
tasks: ['compass'],
options: {
sassDir: 'App/Themes/theme2/scss',
cssDir: 'App/Themes/theme2'
}
},
...
}
concurrent: {
watch: {
tasks: ['compass:theme1', 'compass:theme2', ..., 'compass:themeXX'],
options: {
logConcurrentOutput: true,
spawn: false
}
}
}
grunt.loadNpmTasks('grunt-concurrent');
grunt.loadNpmTasks('grunt-contrib-compass');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default', ['concurrent']);
那么实际的问题是,当我们启动默认任务时,也会启动 x 个监视线程。这对于他们必须执行的小型监视任务有很多开销。
我正在寻找的解决方案是一种设置单个监视任务的方法,该任务可以触发特定主题罗盘编译。有没有办法做到这一点?还是当前设置是唯一的方法?所以除了有 x 个监视任务之外别无选择?
谢谢。