我正在同时使用grunt-contrib-less和grunt-contrib-watch。我的less任务使用文件数组格式来定义多个src和dest。我希望在watch任务中引用这些相同的文件。就像这样:
grunt.initConfig({
less: {
build: {
files: [
{src: 'src/aa.less', dest: 'dest/a.css'},
{src: 'src/aa1.less', dest: 'dest/a1.css'}
]
}
},
watch: {
less: {
files: '<%= less.build.files %>',
tasks: ['less']
}
}
});
那个下划线模板是有效的,但watch无法处理文件数组格式,它只接受字符串或字符串数组作为输入。这是我尝试过的:
'<%= less.build.files.src %>'
无法工作,因为less.build.files是一个数组,而不是对象。
'<%= _(less.build.files).pluck("src").value() %>'
无法工作,即使它生成了正确的文件列表,它解析为单个字符串'src/aa.less,src/aa1.less'
,而不是数组。
'{<%= _(less.build.files).pluck("src") %>}'
可以工作,如此建议https://dev59.com/h3DYa4cB1Zd3GeqPFOGa#21608021,但感觉不太对。我正在尝试针对特定的文件集,而不是从整个项目目录中进行模式匹配。
grunt.config.set('watch.less.files', _(grunt.config.get('less.build.files')).pluck('src').value());
可以工作,但必须与initConfig分开。