#json #gruntjs #uglifyjs
#json #gruntjs #uglifyjs
Вопрос:
У меня есть модульная система, которой можно управлять через пользовательский интерфейс администратора, разработчики могут включать или отключать функции, а затем программа выполнения задач заботится о подготовке всех ресурсов пользовательского интерфейса к отдельным файлам для загрузки во внешний интерфейс.
С помощью SASS я могу программно управлять скомпилируемым файлом index.scss, что означает, что это достаточно просто — однако, с JS я пока не нахожу такой же опции.
Идея состоит в том, чтобы избежать дублирования файлов, манипуляций или перемещения, снизить сложность, избежать проблем, а также ускорить выполнение задач, которое быстро раздувается и замедляется.
Поскольку процесс начинается с процедуры сохранения, я могу собирать данные о текущих «активных» модулях и сохранять их в любом формате файла — json, csv, любом другом — затем я хотел бы загрузить эту конфигурацию из файла в Gruntfile, который может постоянно просматриваться (если проблема в том, что конфигурация может быть загружена только один раз? — данные нужно будет снова собирать заново перед каждой компиляцией).
простой пример:
* module.json
{"js":["modal.js","toast.js","tab.js","collapse.js","form.js","toggle.js","gallery.js","helper.js","scrollspy.js","scroll.js","lazy.js","javascript.js","comment.js","push.js","nprogress.js","consent.js","search.js","anspress.js","localize.js"]}
*Gruntfile.js
// ------- configuration ------- ##
module.exports = function(grunt) {
grunt.initConfig({
// load modules ##
modules: grunt.file.readJSON('module.json'),
'uglify': {
// options etc ##
files:{
'library/asset/js/module.min.js' : '<%= modules.js %>'
}
}
});
// Development Tasks ##
grunt.registerTask(
'default'
, [ 'uglify' ]
);
}
Эта конфигурация выполняется, но не загружает данные из JSON правильно — Grunt говорит:
Назначение library/asset/js/module.min.js не записано, потому что файлы src были пустыми.
Я знаю, что Grunt может читать JS, так как я могу сделать что-то вроде следующего:
* терминал
$ grunt config
Running "config" task
["modal.js","toast.js","tab.js","collapse.js","form.js","toggle.js","gallery.js","helper.js","scrollspy.js","scroll.js","lazy.js","javascript.js","comment.js","push.js","nprogress.js","consent.js","search.js","anspress.js","localize.js"]
Done.
*Gruntfile.js
// load config ##
grunt.registerTask(
'config'
, function() {
modules = grunt.file.readJSON('module.json')
grunt.log.write(JSON.stringify( modules.js ) );
}
);
Есть идеи указателей? Спасибо!
Ответ №1:
Ответ был довольно простым — включить полные пути к каждому «файлу» в JSON, затем Grunt проанализировал его без проблем.