0

我正在处理Gruntfile,并且很难让复制任务以我想要的方式工作。

我有一个使用动态文件对象定义的Uglify任务,例如:

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: {
  deploy: {
    src: '<%= uglify.files %>',
    dest: 'deploy/'
  }
}

然后我得到

警告:对象 # 没有方法 'indexOf'

错误。

由于超出此问题范围的各种原因,通配技巧不适用于部署。

那么,在复制任务中,我如何引用另一个任务刚刚创建的文件集?

4

2 回答 2

1

你有files: {}一个对象。它应该是一个数组files: []

uglify: {
  files: [{
    expand: true,
    cwd: 'src',
    src: [
      'some/path/file1.js',
      'another/path/file2.js'
    ],
    dest: 'dst',
    ext: '.min.js'
  }]
}
于 2014-04-24T05:30:26.290 回答
0

copy config 上的 src 应该是字符串或数组,但是你在上面设置了一个对象,当 grunt 尝试在 copy 任务的 src 上应用 indexof 方法时,就会出错。您可以通过将 uglify.files 设置为对象数组来避免这种情况,如下所示:

uglify: {
    files: [{
        expand: true,
        cwd: 'src',
        src: [
            'some/path/file1.js',
            'another/path/file2.js'
        ],
        dest: 'dst',
        ext: '.min.js'
   }]
}

然后,它会通过错误,但你的目标不会达到。您需要选择 dest of uglify 作为 src 进行复制。解决方案是 grunt 方法,TEMP FILES,您应该在临时路径中设置 uglify dest,然后从那里选择您需要的内容作为复制任务的 src。像这样的东西:

copy:{
    deploy:{
        files: [{
            expand: true,
            cwd: 'dst'
            src: '**/*.min.js'
            dest: 'deploy'
        }]
    }    
}
于 2015-01-23T10:03:11.360 回答