Javascript 如何以编程方式读取和解析Grunfile,以便修改并再次保存?
我正在创建一个复杂的Yeoman生成器,我需要读取一个现有的GrunFile并对其进行修改 任何解析Grunfile的javascript方法都是不够的Javascript 如何以编程方式读取和解析Grunfile,以便修改并再次保存?,javascript,node.js,gruntjs,yeoman,yeoman-generator,Javascript,Node.js,Gruntjs,Yeoman,Yeoman Generator,我正在创建一个复杂的Yeoman生成器,我需要读取一个现有的GrunFile并对其进行修改 任何解析Grunfile的javascript方法都是不够的 如果您有任何帮助,我们将不胜感激。我认为您无法通过解析js文件并生成新的gruntfile来实现这一点 您可以尝试创建模板文件,例如.jade(或其他模板引擎),这样您就可以生成最终的GrunFile,查看grunt配置对象并最终读取信息,将数据插入模板中并生成最终的gruntfile.js我认为通过解析js文件并生成新的gruntfile无法
如果您有任何帮助,我们将不胜感激。我认为您无法通过解析js文件并生成新的gruntfile来实现这一点
您可以尝试创建模板文件,例如
.jade
(或其他模板引擎),这样您就可以生成最终的GrunFile,查看grunt配置对象并最终读取信息,将数据插入模板中并生成最终的gruntfile.js
我认为通过解析js文件并生成新的gruntfile无法实现这一点
您可以尝试创建模板文件,例如
.jade
(或其他模板引擎),这样您就可以生成最终的GrunFile,查看grunt配置对象并最终读取信息,将数据插入模板中并生成最终的gruntfile.js
谢谢你们的提示和好主意,在你们的指导下,我为每个配置使用了一个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']);
};
现在我可以轻松地修改配置了谢谢你们的提示和好主意,在你们的指导下,我为每个配置使用了一个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']);
};
现在我可以轻松地修改配置了,这是一种模块化的grunt方法,您无需在每次添加新任务、插件或自定义时修改
gruntfile.js
加载grunt任务
作为开发人员依赖项:npm安装加载grunt任务--保存开发人员
。这个插件允许您使用一行代码加载所有grunt依赖项grunt/configs/
。每个json文件的名称都应该与grunt配置中的属性名称匹配。例如,grunt copy config
的配置应该是grunt/configs/copy.json
包.json
文件和grunt/configs/
中的每个.json文件自动加载插件并编译配置对象。GrunFile还加载我保存到grunt/tasks/
作为一个替代选项,您可以在JavaScript文件而不是json文件中托管模块化配置对象(我就是这么做的)。这使我能够在需要时动态编译配置对象。如果你感兴趣,我也可以分享这些代码 这里有一种模块化的grunt方法,您无需每次添加新任务、插件或自定义时修改
gruntfile.js
加载grunt任务
作为开发人员依赖项:npm安装加载grunt任务--保存开发人员
。这个插件允许您使用一行代码加载所有grunt依赖项grunt/configs/
。每个json文件的名称都应该与grunt配置中的属性名称匹配。例如,grunt copy config
的配置应该是grunt/configs/copy.json
包.json
文件和grunt/configs/
中的每个.json文件自动加载插件并编译配置对象。GrunFile还加载我保存到grunt/tasks/
作为一个替代选项,您可以在JavaScript文件而不是json文件中托管模块化配置对象(我就是这么做的)。这使我能够在需要时动态编译配置对象。如果你感兴趣,我也可以分享这些代码 你想修改什么?配置对象?或者在模块化的基础上添加自定义功能?我需要包括更多到现有browserify、sass和uglify任务的路径显示您对项目的总体框架有多大的控制权?您想修改什么?配置对象?或者在模块化的基础上添加自定义功能?我需要包括更多到现有browserify、sass和uglify任务的路径显示您对项目的总体框架有多大的控制权?所以您是说我应该使用
grunt.config
来读/写现有的grunt配置,但是只能在gruntfile.js中使用grunt.config,因此我应该将其存储在一个json文件中,以便轻松阅读。您可以require
将其作为模块并“浏览”对象属性和方法。您是说我应该使用grunt.config
来读取/写入现有的grunt配置,但是只能在gruntfile.js中使用grunt.config,因此我应该将其存储在一个json文件中,以便轻松阅读。您可以require
将其作为模块并“浏览”对象属性和方法。