grunt-contrib-concat: указать последний файл для объединения?

Я использую grunt-contrib-concat, чтобы объединить все мои пользовательские файлы JS и обернуть их с помощью IIFE. Я сталкиваюсь с некоторыми проблемами порядка загрузки (а именно, мой файл инициализации выполняется раньше некоторых модулей, вызывая неопределенные ошибки). я хочу уточнить init.js должен быть LAST в порядке 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 в мой проект?

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']);
Другие вопросы по тегам