【问题标题】:Reference files from dynamic object来自动态对象的参考文件
【发布时间】:2015-08-01 00:57:03
【问题描述】:

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

我有一个使用dynamic file object 定义的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 任务,我想在其中复制我刚刚在其他地方构建的文件。我不想重新定义规则,而是希望使用模板引用文件集。

如果我使用

copy: {
  deploy: {
    src: '<%= uglify.files %>',
    dest: 'deploy/'
  }
}

然后我得到了

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

错误。

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

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

【问题讨论】:

标签: javascript gruntjs grunt-contrib-copy


【解决方案1】:

您将files: {} 作为对象。它应该是一个数组files: []

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

【讨论】:

  • 更正第3行的语法错误,对象符号必须用{}括起来
  • 好像已经和你输入的一样了!并且没有语法错误! @Sawtaytoes
【解决方案2】:

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'
        }]
    }    
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多