我正在处理Gruntfile,并且很难让复制任务以我想要的方式工作。
我使用Uglify定义dynamic file object任务,如:
uglify: {
files: {
expand: true,
cwd: 'src',
src: [
'some/path/file1.js',
'another/path/file2.js'
],
dest: 'dst',
ext: '.min.js'
}
}
此任务非常有效,我将我的文件写成'dst / some / path / file1.min.js'和'dst / another / path / file2.min.js'。
我正在处理copy任务,我想复制我刚刚在其他地方构建的文件。我想用模板引用文件集,而不是重新定义规则。
如果我使用
copy: {
deploy: {
src: '<%= uglify.files %>',
dest: 'deploy/'
}
}
然后我得到了
警告:对象#没有方法'indexOf'
错误。
由于超出此问题范围的各种原因,通配技巧不适用于部署。
因此,在复制任务中,如何引用另一个任务刚刚创建的文件集?
答案 0 :(得分:1)
您有files: {}
作为对象。它应该是一个数组files: []
。
uglify: {
files: [{
expand: true,
cwd: 'src',
src: [
'some/path/file1.js',
'another/path/file2.js'
],
dest: 'dst',
ext: '.min.js'
}]
}
答案 1 :(得分:0)
复制配置中的src应该是字符串或数组,但是你在它上面设置一个对象,当grunt尝试在复制任务的src上应用indexof方法时,错误将是结果。你可以通过将uglify.files设置为对象数组来避免这种情况,例如:
uglify: {
files: [{
expand: true,
cwd: 'src',
src: [
'some/path/file1.js',
'another/path/file2.js'
],
dest: 'dst',
ext: '.min.js'
}]
}
然后,它将通过错误,但你的目标不会满足。你需要选择uglify的dest作为src进行复制。解决方案是grunt方法,TEMP FILES,你应该在temp路径中设置uglify dest,然后从那里选择你需要的副本任务的src。像这样的东西:
copy:{
deploy:{
files: [{
expand: true,
cwd: 'dst'
src: '**/*.min.js'
dest: 'deploy'
}]
}
}