#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'); } }] } } });
Комментариев нет:
Отправить комментарий