因为我们不希望在项目代码中包含敏感数据,包括package.json文件,所以在我看来,使用环境变量将是一个合乎逻辑的选择。
示例包. json:
"dependencies": {
"accounting": "~0.4.0",
"async": "~1.4.2",
"my-private-module":"git+https://${BB_USER}:${BB_PASS}@bitbucket.org/foo/bar.git"
这可能吗?
问题是 * 不是 * 如果这是 * 明智 * 或 * 不好 *,只是如果它是可能的。
9条答案
按热度按时间qnakjoqk1#
如果您使用
.env
文件,让我们使用grep
或eval
从.env文件中获取一个值环境变量。按照@Paul的建议更新了
start2
:wixjitnu2#
我有相似但不同的需求。对我来说,我想在脚本中使用环境变量。
我没有直接在package.json中使用环境变量,而是:
在www.example.com网站上some-script.sh:
tvmytwxo3#
下面是我如何设法围绕
package.json
实现相同目的的方法:它使用一个脚本从package.json
的自定义部分读取URL模块,在其中插入环境变量,并将它们与npm install --no-save
一起安装(--no-save
可以省略,具体取决于用例)。另外:它尝试从
.env.json
中读取env变量,可以忽略该变量,这对开发非常有用。1.创建将从
package.json
的自定义部分读取的脚本env-dependencies.js
1.向您的
package.json
添加一个"postinstall": "node env-dependencies.js"
,这样它将在每个npm install
上运行1.使用你想要的URL将你的私人git repos添加到
package.json
(注意:它们的根目录都必须有package.json
!):(the semver说明符
#semver:^2.0.0
可以省略,但引用git标记,这非常有用,因为它使git服务器成为一个成熟的包管理器)npm install
ncecgwcz4#
不,这是不可能的。您应该使用
git+ssh
访问存储库,并在~/.ssh
中存储私钥。然后,您的行看起来如下所示:
里面没有任何敏感信息。
unguejic5#
不,这是不可能的,因为npm不把任何字符串值当作任何类型的模板。
最好只将
git+ssh
(如果您的提供商支持它)与ssh代理一起使用。ifsvaxew6#
您可以使用环境值注入package.json,如下所示:
任何以npm_config_开头的环境变量都将被解释为配置参数。例如,将npm_config_foo=bar放入环境中将把foo配置参数设置为bar。任何未指定值的环境配置都将被指定为true值。配置值不区分大小写,因此NPM_CONFIG_FOO=bar的作用相同。
https://docs.npmjs.com/misc/config#environment-variables
67up9zun7#
我也有同样的需求,我的解决方案基于@Long Nguyen的response,这样,我只能依赖于. env文件中定义的内容。
.环境
package.json
inb24sb28#
对于复杂的环境变量,可以使用https://stedolan.github.io/jq/访问JSON文件(您的情况下是env文件)JSON文件可能类似于
因此,脚本可以类似于以下内容来访问yes值
6ljaweal9#
您可以安装包https://www.npmjs.com/package/env-cmd和所有您的envs从
.env
文件将是可见的,即:./.环境:
Package.json:
或者你问题中的另一个例子