Унизить с помощью grunt-concurrent не работает
Я пытаюсь использовать grunt-concurrent для параллельной минимизации файлов javascript. Я также использую usemin и ngmin.
Когда я использую uglify без grunt-concurrent, я получаю ожидаемый результат с этим выводом журнала:
Running "uglify:dist" (uglify) task
Running "uglify:dist/scripts/jquery_and_angular.js" (uglify) task
File dist/scripts/jquery_and_angular.js created.
Running "uglify:dist/scripts/external-non-angular-libraries.js" (uglify) task
File dist/scripts/external-non-angular-libraries.js created.
Running "uglify:dist/scripts/modules.js" (uglify) task
File dist/scripts/modules.js created.
Running "uglify:dist/scripts/scripts.js" (uglify) task
File dist/scripts/scripts.js created.
Но когда я пытаюсь выполнить эту задачу, используя grunt-concurrent с этой конфигурацией:
concurrent: {
lessAndMinify: [
'ngmin',
'less'
],
uglify: [
'uglify:dist/scripts/jquery_and_angular.js',
'uglify:dist/scripts/external-non-angular-libraries.js',
'uglify:dist/scripts/modules.js',
'uglify:dist/scripts/scripts.js',
'uglify:dist/scripts/templates.js'
]
},
Я получаю сообщение, что эти задачи не настроены:
Running "concurrent:uglify" (concurrent) task
Warning: Running "uglify:dist/scripts/jquery_and_angular.js" (uglify) task
Verifying property uglify.dist/scripts/jquery_and_angular\.js exists in config...ERROR
>> Unable to process task.
Warning: Required config property "uglify.dist/scripts/jquery_and_angular\.js" missing. Use --force to continue.
Aborted due to warnings. Used --force, continuing.
Running "uglify:dist/scripts/jquery_and_angular.js" (uglify) task
Verifying property uglify.dist/scripts/jquery_and_angular\.js exists in config...ERROR
>> Unable to process task.
Warning: Required config property "uglify.dist/scripts/jquery_and_angular\.js" missing. Use --force to continue.
Aborted due to warnings.
Warning: Running "uglify:dist/scripts/modules.js" (uglify) task
Verifying property uglify.dist/scripts/modules\.js exists in config...ERROR
>> Unable to process task.
Warning: Required config property "uglify.dist/scripts/modules\.js" missing. Use --force to continue.
Aborted due to warnings. Used --force, continuing.
Running "uglify:dist/scripts/modules.js" (uglify) task
Verifying property uglify.dist/scripts/modules\.js exists in config...ERROR
>> Unable to process task.
Warning: Required config property "uglify.dist/scripts/modules\.js" missing. Use --force to continue.
Моя конфигурация задачи сборки:
grunt.registerTask('build', [
'clean:dist',
'ngtemplates',
'copy:indexHtml',
'replace',
'useminPrepare',
'concat',
'copy:dist',
'copy:generated',
'concurrent:lessAndMinify', // ngmin and less
// 'concurrent:uglify',
'uglify',
'rev',
'usemin'
]);
Вопрос в том, как я могу использовать grunt-concurrent с uglify и usemin/ngmin?
1 ответ
Решение
usemin добавляет задачи для uglify на лету, но они по какой-то причине не видны в grunt-concurrent. Чтобы решить эту проблему, вы должны вручную добавить файлы в uglify:
uglify: {
dist: {
options: {
sourceMap: true
},
files: {
}
},
// you have to add this manually!
"dist/scripts/jquery_and_angular.js": "dist/scripts/jquery_and_angular.js",
"dist/scripts/external-non-angular-libraries.js": "dist/scripts/external-non-angular-libraries.js",
"dist/scripts/modules.js": "dist/scripts/modules.js",
"dist/scripts/scripts.js": "dist/scripts/scripts.js",
"dist/scripts/templates.js": "dist/scripts/templates.js"
},
Проблема в том, что это не сухо. Вы должны настроить его в index.html, в grunt-concurrent и здесь в uglify.