Grunt Уродует файлы из списка во внешнем документе

#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 проанализировал его без проблем.