有沒有辦法用nodejs創建一個可以用其他參數啓動的應用程序? 舉幾個例子:用某些設置啓動nodejs應用程序?
node myApp.js -nolog
將開始使用自定義noLog=true
參數的應用程序,這樣的事情不會console.logged ..
node myApp.js -prod
將啓動應用程序在一組特定的生產設置。
我不確定節點中是否有任何等價物。如果這是重複的,可能是因爲我甚至沒有意識到要搜索此特定問題的答案的關鍵字。
給我啓發!
有沒有辦法用nodejs創建一個可以用其他參數啓動的應用程序? 舉幾個例子:用某些設置啓動nodejs應用程序?
node myApp.js -nolog
將開始使用自定義noLog=true
參數的應用程序,這樣的事情不會console.logged ..
node myApp.js -prod
將啓動應用程序在一組特定的生產設置。
我不確定節點中是否有任何等價物。如果這是重複的,可能是因爲我甚至沒有意識到要搜索此特定問題的答案的關鍵字。
給我啓發!
要讀取命令行參數,你需要分析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
繼承所有屬性從生產,重寫,以適應當地的ENV值。建議在版本控制系統(git,SVN等)中忽略此文件,以便您的本地配置不會與項目中的其他人發生衝突。要深度複製和合並對象,node.extend可能會有所幫助。
var base = require('./production'),
extend = require('node.extend');
var overrides = {
db: {
user: 'root',
password: ''
}
};
module.exports = extend(overrides, base);
嘗試https://github.com/substack/node-optimist解析的argv,並使用'require'加載不同的設置。 – CodeColorist
@ChiChou似乎被棄用,但這是一個很好的方向!謝謝! – Mia
結帳Yargs樂觀主義者的繼任者! https://github.com/chevex/yargs –