我在Grunt中为clean
执行了一项任务,我还有copy
的另一项任务。基本上,我在一个地方清理一些东西,然后用新的东西替换它,进入相同的地方。我无法弄清楚如何映射我的copy.files.dest
,使其使用clean.env.files.src
中的值,但会切换修饰符。所以:
// Project settings
yeoman: {
// configurable paths
app: 'app',
dist: 'dist',
prod:'L:/dist'
}
// the prod sub-block of the clean task configuration
prod:{
files:[{
dot:true,
src:[
'<%= yeoman.prod% >/scripts',
'<%= yeoman.prod% >/styles',
'<%= yeoman.prod% >/views',
'<%= yeoman.prod% >/*.html',
'<%= yeoman.prod% >/images'
]
}]
}
//the prod sub-block of the copy task configuration
prod:{
files:[{
expand:true,
dot:true,
cwd:'<%= yeoman.dist %>',
dest:'<%= yeoman.prod %>',
//can i use the result files from this path, but use yeoman.dist instead of yeoman.prod?
src:['<%= clean:prod:files:src %>']
}]
}
我想使用<%= clean:prod:files:src %>
中的模板,但使用备用配置(换句话说,该任务使用yeoman.prod
,而我希望列出所有相同的文件,并且要做一些需要来自yeoman.dist
的src代替)。
有没有办法通过grunt语法执行此操作,还是我必须依赖我的(未显示)自定义函数?
编辑,删除了对父任务的引用,因为它们没有反映我的代码实际上是什么样的。
答案 0 :(得分:3)
永远记住,Gruntfiles是javascript。它们必须用有效的javascript编写。
clean.prod:{}
无效javascript。
Grunt模板中使用的点符号<%= clean.prod %>
仅仅是一种通过javascript对象进行翻译的模板格式,但不是javascript语言本身的一部分。
所以改为将配置更改为:
clean: {
prod: {
src: [ /* file patterns here */ ]
}
}
然后使用src
访问clean:prod
任务的<%= clean.prod.src %>
属性。
我已从files
数组中取出配置,就像您的目标src/dest
中只有一个prod
块一样,不需要它。但是如果你想在配置中访问该位置的值,你必须记住files
是一个数组。因此,使用模板访问数组的第一项将是:<%= clean.prod.files[0].src %>
。但除非需要,否则不要使用files
数组要简单得多。
有关javascript对象的更多信息,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects;有关grunt模板的详细信息,请参阅http://gruntjs.com/configuring-tasks#templates。