我正在创建一个复杂的Yeoman Generator,我需要读取现有的gruntfile并对其进行修改。
任何解析gruntfile的javascript方式都应该。
任何帮助将不胜感激。
答案 0 :(得分:2)
我认为你不能通过解析js文件并生成新的gruntfile来实现这一点。
而不是这样做,你可以尝试创建模板文件ex。 .jade
(或另一个模板引擎)所以,您可以生成最终的gruntfile,您可以查看grunt配置对象grunt.config并最终读取信息,将数据插入模板并生成最终{ {1}}。
答案 1 :(得分:1)
这是一种模块化的grunt方法,您无需在每次添加新任务,插件或自定义时修改gruntfile.js
即可使用。
将load-grunt-tasks
npm module添加为开发依赖项:npm install load-grunt-tasks --save-dev
。这个插件允许你使用一行代码加载所有的grunt依赖项。
在项目中指定一个文件夹以保存所有模块化配置文件。此示例使用路径grunt/configs/
。每个json文件的名称应与grunt配置中的它的属性名称相匹配。例如,grunt-copy-config
的配置应为grunt/configs/copy.json
将我发布的gruntfile.js复制为public gist(堆栈溢出并未正确格式化代码)。这个gruntfile将自动加载你的插件并使用项目的package.json
文件和grunt/configs/
中的每个.json文件编译一个配置对象。 gruntfile还会加载我保存到grunt/tasks/
作为替代选项 - 您可以在JavaScript文件中托管模块化配置对象,而不是json文件(这就是我的工作)。这使我能够在需要时动态编译我的配置对象。如果您感兴趣的话,我也可以分享这些代码。
答案 2 :(得分:0)
感谢各位提示,好主意,在您的指导下,我为每个配置使用了json文件:
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
browserify: grunt.file.readJSON('browserify.json'),
uglify: grunt.file.readJSON('uglify.json'),
sass: grunt.file.readJSON('sass.json'),
cssmin: grunt.file.readJSON('cssmin.json'),
});
grunt.loadNpmTasks('grunt-browserify');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.registerTask('default', ['browserify', 'sass']);
grunt.registerTask('production', ['browserify', 'sass', 'uglify', 'cssmin']);
};
现在我可以轻松修改配置