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']);