如何将命令行参数传递给Meteor应用程序?

Ste*_*non 5 meteor

我想在启动时将命令行参数传递给我的Meteor应用程序.

例如--dev, - test或--prod,指示它是否在dev,test或prod环境中运行.然后它可以在启动时加载不同的资源等...

我在/server/server.js中尝试过类似的东西

var arguments = process.argv.splice(2);
console.log('cmd args: ' + JSON.stringify(arguments,0,4));
Run Code Online (Sandbox Code Playgroud)

我跑了一个测试.还有很多其他只有随机命令行参数.

meteor --dev
Run Code Online (Sandbox Code Playgroud)

控制台中的输出只是这个.

cmd args: [
    "--keepalive"
]
Run Code Online (Sandbox Code Playgroud)

将命令行参数导入Meteor应用程序的最佳方法是什么?

或者,这甚至是解决更高级问题的正确方法吗?如果没有,解决这个区分运行环境的问题的正确方法是什么?

jsb*_*ckr 8

如果Meteor不知道,Meteor不会将命令行参数转发给您的应用.你有多种可能性:

  1. 重写部分meteor.js以转发无法识别的args.这不应该太难,但它不是一个漂亮的解决方案.如果发生更新,您就遇到了麻烦.:d
  2. 您可以编写一个小配置文件,并根据其中的配置选项更改应用程序的行为.看看这个问题.
  3. 最简单的方法是使用环境变量.您可以像这样读取节点中的env变量.之后,您可以使用"express.js"方式启动应用程序:$ METEOR_ENV=production meteor

我希望我能帮到你!:)