结合两个json文件给一组variables在Gulp中使用
我已经在网上看到很多关于如何使用require语句来使用文件中定义的一组variables的post。
我想知道如何使用两个文件。
例如,在伪…
gulp --env=prod if (env): defaultConfig = require('./config/default.json') envConfig = require('./config/prod.json') config = combine(defaultConfig, envConfig) else: config = require('./config/default.json') // Now i can access everything like so... console.log(config.name) console.log(config.minify)
这保持configurationDRY,也意味着我不必为每个环境创build一个新的文件。
我是Gulp的新手,但我认为这将是一个普遍的要求,但是Google没有提出任何与env特定设置合并的默认设置。
我需要写一个节点模块吗?
使用yargs
parsing命令行参数,并extend
到组合两个configuration对象:
var gulp = require('gulp'); var argv = require('yargs').argv; var extend = require('extend'); var config = extend( require('./config/default.json'), (argv.env) ? require('./config/' + argv.env + '.json') : {} ); gulp.task('default', function() { console.log(config); });
运行gulp --env=prod
将打印组合configuration,而只需运行gulp
将打印默认configuration。
你可以用ES6函数Object.assign
来完成它:
gulp --env=prod if (env): defaultConfig = JSON.parse(require('./config/default.json')) envConfig = JSON.parse(require('./config/prod.json')) config = Object.assign(defaultConfig, envConfig) else: config = JSON.parse(require('./config/default.json')) // Now i can access everything like so... console.log(config.name) console.log(config.minify)
ES6在Node中受支持,所以您可以随时使用它。
编辑:如果你有更旧版本的节点,你可以使用像Sven Schoenungbuild议的extend
。
使用以下function:
function combine(a,b){ var temp0 = JSON.stringify(a); var temp1 = temp0.substring(0, temp0.length-1); var temp2 = (JSON.stringify(b)).substring(1); var temp3 = temp1 + "," + temp2; return JSON.parse(temp3); }
- 使用VSCode在浏览器中debugging简单的Typescript应用程序
- 一个for循环中的gulpstream不能正常工作
- gulp.watch任务抛出一个错误:(FSEvents.framework)FSEventStreamStart:register_with_server:错误
- 如何在文件更改时重新启动节点服务器
- gulp-nodemon监视器不起作用
- 在gulpfile Visual Studio 2015的npm del错误
- Task Runner Explorer窗口在我的Gulpfile.js下“加载失败”,并且没有任何构build进程被列出
- SASS的节点和吞吐量 – 堆栈级别太深
- 如何将多个(npm)package.json文件合并为一个Gulp?