使用某些设置启动nodejs应用程序?

时间:2014-11-15 14:54:22

标签: javascript node.js

有没有办法制作一个可以使用其他参数启动的nodejs的应用程序? 几个例子:

node myApp.js -nolog

会使用自定义noLog=true参数启动应用程序,因此事情不会是console.logged ..

node myApp.js -prod

将在一组特定的生产设置中启动应用程序。

我不确定节点中是否有任何等效的内容..如果这是重复的,可能是因为我甚至不知道搜索此特定问题的关键字的答案。

启发我!

1 个答案:

答案 0 :(得分:1)

要读取命令行参数,您需要解析process.argv,或使用第三方模块,如minimist

var argv = require('minimist')(process.argv.slice(2));

// do something ...
var config = argv.config;
if (config === 'dev') {
    // set the flag
}

然后通过node app.js --config=dev启动您的应用。

在大多数情况下,您需要包含多个选项,并在代码中手动对其进行硬编码是个坏主意。建议的方法是将它们写在配置文件中,然后使用require进行解析。您可以同时使用.js.json来存储配置,但.js更方便,因为JSON格式过于严格,尤其是它甚至不允许您发表评论。

所以这是一个解决方案。按如下方式组织您的配置:

config
  ├── dev.js
  ├── production.js

production.js被定义为"基类",它存储所有必需的设置,并使用module.export公开它们。

module.exports = {
    db: {
        backend: 'mysql',
        user: 'username',
        password: 's3cr3t'
        // ...
    }
};

dev.js继承生产中的所有属性,覆盖该值以适合您的本地环境。建议在版本控制系统(git,SVN等)中忽略此文件,这样您的本地配置就不会与项目中的其他配置冲突。要深度复制和合并对象,node.extend可能有所帮助。

var base = require('./production'),
    extend = require('node.extend');

var overrides = {
    db: {
         user: 'root',
         password: ''
    }
};

module.exports = extend(overrides, base);