Страницы

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

пятница, 27 декабря 2019 г.

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

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

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

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