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

时间:2012-05-06 13:36:54

标签: 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));

我参加了测试。还有很多其他只有随机命令行参数。

meteor --dev

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

cmd args: [
    "--keepalive"
]

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

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

2 个答案:

答案 0 :(得分:8)

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

  1. 重写meteor.js的部分内容以转发无法识别的参数。这不应该太难,但它不是一个漂亮的解决方案。如果发生更新,您就遇到了麻烦。 :d
  2. 您可以编写一个小配置文件,并根据其中的配置选项更改应用程序的行为。看看this question
  3. 最简单的方法是使用环境变量。您可以在this之类的节点中阅读env vars。之后,您可以使用“express.js”方式启动您的应用:$ METEOR_ENV=production meteor
  4. 我希望我能帮到你! :)

答案 1 :(得分:1)

它不起作用的原因是因为meteor命令启动一个代理(获取你给出的参数),然后用--keepalive启动流星应用程序。

如果您使用process.argv构建Meteor并运行它,

meteor build --directory /my/build/path将具有正确的值。

相关问题