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 毫无问题地解析它。
我有一个模块系统,可以通过管理员 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 毫无问题地解析它。