【问题标题】:grunt-contrib-concat: specify last file to be concatenated?grunt-contrib-concat:指定要连接的最后一个文件?
【发布时间】:2015-07-01 16:18:28
【问题描述】:

我正在使用 grunt-contrib-concat 将我所有的自定义 JS 文件连接在一起,并用 IIFE 包装它们。我遇到了一些加载顺序问题(即,我的 init 文件在某些​​模块之前执行,导致未定义的错误)。我想指定 init.js 应该是 concat 顺序中的最后一个,但我不想同时指定所有其他 JS 文件的顺序,只是这个特定的文件排在最后。

这是我的 concat 的当前配置:

/**
 * Set project info
 */
project: {
  src: 'src',
  app: 'app',
  assets: '<%= project.app %>/assets',
  css: [
    '<%= project.src %>/scss/style.scss'
  ],
  js: [
    '<%= project.src %>/js/*.js'
  ]
},

concat: {
  dev: {
    files: {
      '<%= project.assets %>/js/scripts.min.js': '<%= project.js %>'
    }
  },
  options: {
    stripBanners: true,
    nonull: true,
    banner: ';(function($, window, document, undefined){ \n "use strict";',
    footer: '}(jQuery, window, document));'
  }
},

如何指定要连接的最后一个文件而不向我的项目添加额外的 grunt 模块

【问题讨论】:

    标签: javascript gruntjs grunt-contrib-concat load-order


    【解决方案1】:

    您可以通过连接所有文件 init.js,然后使用保持顺序的数组语法将结果与init.js 连接起来:

    concat: {
        dev1: {
            dest: '<tmp>/concat1.js',
            src: ['<all your js>', '!init.js']
        },
        devFinal: {
            options: {
                stripBanners: true,
                nonull: true,
                banner: ';(function($, window, document, undefined){ \n "use strict";',
                footer: '}(jQuery, window, document));'
            },
            files: {
                dest: 'scripts.min.js',
                src: ['<tmp>/concat1.js', 'init.js']
            },
        },
    }
    

    然后依次调用两个目标:

    grunt.registerTask('myConcat', ['concat:dev1', 'concat:devFinal']);
    

    【讨论】:

    • 我离开了我的项目,目前无法进行测试,但这是否会导致两个任务都被包装在它们自己的 IIFE 中(选项中的横幅/页脚)?还是只有 devFinal 的输出?我需要后者。
    • 如果您将选项块移动到第二个目标下,它应该只适用于它。我已经更新了答案。
    • 嗨——一旦我改变了文件对象的结构,效果很好——必须是我的 concat 版本,但我必须这样做,即files: { 'dest-file-name.js': ['file1.js', 'file2.js' 'etc..'] }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 2023-03-12
    • 2017-08-07
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多