Страницы

Поиск по вопросам

понедельник, 3 декабря 2018 г.

Обратные ссылки в путях файлов Grunt

Здравствуйте. Возникло затруднение в обработке путей в Grunt, а именно задачу concat: как передать что-то из найденных путей в значение целевого пути? Есть примерно такая структура проекта:
src -js --Core ---Core.js ---Something.js ---0_Header.js --FileLoader ---ExternalInterface.js ---Core.js ---Helper.js
Необходимо чтобы concat собирал примерно вот так:
build -js --Ext ---Core ----Core.min.js ---FileLoader ----FileLoader.min.js
Здесь подошло бы что-то вроде этого:
concat: { *** files: { 'build/js/Ext/$1/$1.min.js': ['src/js/(*)/**/*.js'] } *** }
Но это не работает. Отдельно прописывать каждый модуль, когда явно можно автоматизировать - глупо. Как правильно прописать? Благодарю.


Ответ

Как вариант - сформировать нужный объект руками:
var files = {}; grunt.file.expand("./src/js/*").forEach(function (dir) { var dirname = dir.replace(/^.*[\\\/]/, ''); files['build/js/Ext/' + dirname + '.min.js'] = ['src/js/' + dirname + '/**/*.js']; });
И использовать в конфигурации для concat:
grunt.initConfig({ concat: { dist: { files: files } } });
Альтернатива - использовать возможность переименовать dst (регулярка на скорую руку, не учитывает backslah-и):
grunt.initConfig({ concat: { dist: { files:[{ expand: true, src: ['src/js/**/*.js'], rename: function (dst, src) { return src.replace(/src\/js\/([^\/]*).*/, 'build/js/Ext/$1/$1.min.js'); } }] } } });

Комментариев нет:

Отправить комментарий