如何用程序读取和解析gruntfile,这样我就可以修改它并再次保存

How to read and parse gruntfile programatically so I can modify it and save again?

本文关键字:修改 就可以 保存 读取 程序 何用 和解 gruntfile      更新时间:2024-03-21

我正在创建一个复杂的Yeoman生成器,我需要读取现有的gruntfile并对其进行修改。

解析gruntfile的任何javascript方法都是必不可少的。

任何帮助都将不胜感激。

imo我不认为通过解析js文件并生成一个新的gruntfile可以实现这一点。

您可以尝试创建模板文件,例如.jade(或另一个模板引擎),这样,您就可以生成最终的gruntfile,您可以查看grunt.config配置对象并最终读取信息,将数据插入模板并生成最终的gruntfile.js

这里有一种模块化的grunt方法,您可以使用它,而无需每次添加新任务、插件或自定义时修改gruntfile.js

  1. 添加load-grunt-tasksnpm模块作为开发依赖项:npm install load-grunt-tasks --save-dev。这个插件允许您使用一行代码加载所有的grunt依赖项。

  2. 在项目中指定一个文件夹来存放所有模块化配置文件。此示例使用路径grunt/configs/。每个json文件的名称都应该与grunt配置中的it属性名称相匹配。例如,grunt-copy-config的配置应该是grunt/configs/copy.json

  3. 复制我作为公共要点发布的gruntfile.js(堆栈溢出没有正确格式化代码)。这个grunt文件将自动加载插件,并使用项目的package.json文件和grunt/configs/中的每个.json文件编译配置对象。gruntfile还将我保存的任何自定义任务加载到grunt/tasks/

作为另一种选择,您可以将模块化配置对象托管在JavaScript文件中,而不是json文件中(我就是这么做的)。这为我提供了在需要时动态编译配置对象的能力。如果你对此感兴趣,我也可以共享这些代码。

谢谢你们的提示,好主意,在你们的指导下,我为每个配置使用了一个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']);
};

现在我可以很容易地修改配置

相关文章: