Grunt Uglify 外部文档列表中的文件

Grunt Uglify files from list in external document

我有一个模块系统,可以通过管理员 UI 进行控制,开发人员可以启用或禁用功能,然后任务运行器负责将所有 UI 资产准备到单个文件中在前端加载。

使用 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 说:

Destination library/asset/js/module.min.js not written because src files were empty.

我知道 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 ) );
    }
);

任何指针的想法?谢谢!

答案非常简单 - 在 JSON 中包含每个“文件”的完整路径,然后 Grunt 毫无问题地解析它。