如何在 ember-cli 中设置标志,而不是环境?

Posted

技术标签:

【中文标题】如何在 ember-cli 中设置标志,而不是环境?【英文标题】:How to set flags in ember-cli, other than environment? 【发布时间】:2014-08-27 12:24:54 【问题描述】:

这是目前可能的:

ember build --environment=production

...而我想做这样的事情:

ember build --environment=production --baseurl=foo

config/environment.js 只传入environment 的值。

是否也可以获取命令行传入的其他选项的值?

【问题讨论】:

【参考方案1】:

您可以从终端或作为构建脚本的一部分以老式方式 (export WHATEVER=wee) 设置环境变量,然后通过带有 process.env.WHATEVER 的节点在您的 Brocfile.js 中引用它们。在那之后,就是让花椰菜做任何你需要用它们做的事情。例如,您可以预处理文件并替换字符串。

...只是一个建议。不确定这是否是您要找的。​​p>

【讨论】:

@Ben Lesh 感谢您的回答。这确实是我解决问题的方式(甚至在提出问题之前)。 +1 并检查给你! ...我只是想知道 ember-cli 是否允许附加参数/参数。 是否可以运行类似 ember server --environment=test 您也可以使用 process.env.VARNAME 直接在 environment.js 中访问任何环境变量【参考方案2】:

看来这是不允许的:

查看node_modules/ember-cli/lib/commands/build.js,我们看到:

availableOptions: [
   name: 'environment', type: String, default: 'development' ,
   name: 'output-path', type: path, default: 'dist/' 
],

...在node_modules/ember-cli/lib/models/command.js

this.availableOptions.forEach(function(option) 
  knownOpts[option.name] = option.type;
);

...这意味着对于ember 的每个子命令,定义的任何选项都将被丢弃。

【讨论】:

【参考方案3】:

你可以做foo=bar ember build(但是做ember build foo=bar不起作用)

该参数可通过process.env.foo 获得。

【讨论】:

【参考方案4】:

延伸@ben 的回答。

原始命令行参数在ember-cli-build.js 和其他文件中可用

process.argv.[]

这样的命令

ember build staging

您可以通过以下方式访问:

process.argv.includes('staging')

查看节点的文档以了解可用的内容。

https://nodejs.org/docs/latest/api/process.html

【讨论】:

以上是关于如何在 ember-cli 中设置标志,而不是环境?的主要内容,如果未能解决你的问题,请参考以下文章

ember-cli 元配置/环境文件

如何在 ngCookies 中设置 httpOnly 标志?

如何在 Spring Boot 中设置同站点 cookie 标志?

如何使用 jQuery 在 css 中设置重要标志? [复制]

如何在 Emscripten 中设置 gcc 标志

在 Java regex.Pattern 中设置两个标志