#javascript #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']
}
***
}
Но это не работает. Отдельно прописывать каждый модуль, когда явно можно автоматизировать
- глупо.
Как правильно прописать? Благодарю.
Ответы
Ответ 1
Как вариант - сформировать нужный объект руками: 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'); } }] } } });
Комментариев нет:
Отправить комментарий