【发布时间】:2020-09-14 16:14:07
【问题描述】:
我有一个模块系统,可以通过管理 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 说:
目标库/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 ) );
}
);
关于指针的任何想法?谢谢!
【问题讨论】: