用于连接文件的Grunt Task Runner

时间:2015-12-07 08:09:07

标签: javascript node.js grunt-contrib-concat

我正在编写动态连接文件的咕噜声,因为我的grunt.config变量中有文件数组。如何在grunt concat中使用它。

我正在从动态文本替换函数编写grunt.config('jsResources', targetConfig);。它作为数组返回。如何在grunt concat中使用它。我试过这种方式,但那不值得。

我的jsResources是数组。我的咕噜声就像

concat: {
    js: {
        //Concatenate all of the files in the jsResources configuration property
        src: ['app/<%= jsResources %>'],
        dest: 'build/views/js/combined.js',
        options: {
            separator: ';\n'
        }
    }            
}

它的重新定位内容但无法读取内容,并在我的combine.js中连接 我的'jsResources'就像['scripts/modules/allModules.js','scripts/config/constants.js','...']它创建空文件combine.js

2 个答案:

答案 0 :(得分:2)

所以我再试了一次,这就是结果:

在将它们放入模板化变量之前,您需要生成路径。模板化变量此处是一个对象,但可以是任何有效的from rest_framework import permissions class MyViewSet(viewsets.GenericViewSet): permissions_classes = (permissions.AllowAny, ) more info。在其中,您可以设置具有数组值的属性。

js

这会生成包含内容的module.exports = function(grunt) { var myFiles = { jsResources: ['file1.js', 'file2.js'] }; myFiles.jsResources = myFiles.jsResources.map(function(item) { return 'app/' + item; }); // var jsres = myFiles.jsResources; // another way grunt.initConfig({ // myFiles: myFiles, // this is also possible instead of grunt.config() below concat: { dist: { src: ['<%= myFiles.jsResources %>'], // src: ['<%= jsres %>'], dest: 'dest.js', }, options: { separator: '\n' } } }); grunt.config('myFiles', myFiles); // grunt.config('jsres', jsres); // another way grunt.loadNpmTasks('grunt-contrib-concat'); grunt.registerTask('default', ['concat:dist']); };

答案 1 :(得分:1)

艾丁的回答是一个很好的方法来解决这个问题。另一种解决方案是(ab)使用expand / cwd选项,如下所示:

grunt.initConfig({
  jsDir: 'app',
  jsResources: [ 'one.js', 'two.js' ],

  concat: {
    app: {
      expand: true,
      cwd: '<%= jsDir %>',
      src: ['<%= jsResources %>'],
      dest: 'dest.js',
      rename: function (dest) { return dest; }
    }
  }
});

请注意,expand: true通常用于具有动态src / dest映射,通常具有许多src / dest对(而不是grunt-contrib-concat所需的映射到单个目标的源数组) 。但是,在这种情况下,它可以与rename选项(简要记录here)结合使用,以实现您的目标。

这是一种hacky方法,但它具有声明性(以Grunt的风格)的优点,并且它允许配置工作目录(正如我在上面用jsDir所示)。