在 yarn package.json 中使用环境变量
Use enviroment variables in yarn package.json
我想从托管在 bitbucket 上的私有包中提取。由于 SSH 不是我的部署设置的选项,我想使用应用程序密码访问存储库。
所以我在包 JSON 中的条目如下所示:
"dependencies": {
"@companyName/repository": "git+https://${$BITBUCKET_USER}:${BITBUCKET_APP_PASSWORD}@bitbucket.org/company name/repository.git",
将用户名和密码硬编码到存储库 URL 工作正常,但是当我执行 yarn install
如上所述时,环境变量不会被其值替换。
有没有办法像这样使用环境变量?
您可以编写一个 preinstall
挂钩,用环境中的值更新 package.json
。幸运的是,生命周期挂钩的顺序按照使用 yarn
.
的规定工作
{
"name": "njs",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"preinstall": "node preinstall.js"
},
"dependencies": {
"@companyName/repository": "git+https://${$BITBUCKET_USER}:${BITBUCKET_APP_PASSWORD}@bitbucket.org/companyName/repository.git"
},
"author": "",
"license": "ISC"
}
preinstall.js 示例:
const package = require('./package.json');
const fs = require('fs');
const {BITBUCKET_USER = 'test', BITBUCKET_APP_PASSWORD='test'} = process.env;
package.dependencies["@companyName/repository"] = package.dependencies["@companyName/repository"]
.replace("${$BITBUCKET_USER}", BITBUCKET_USER)
.replace("${BITBUCKET_APP_PASSWORD}", BITBUCKET_APP_PASSWORD);
fs.writeFileSync('package.json', JSON.stringify(package, null, 4));
奖金:
如何选择替换 preinstall.js
中的环境变量由您自行判断。是的,你完全可以使用 ES6 模板标签。
我想从托管在 bitbucket 上的私有包中提取。由于 SSH 不是我的部署设置的选项,我想使用应用程序密码访问存储库。
所以我在包 JSON 中的条目如下所示:
"dependencies": {
"@companyName/repository": "git+https://${$BITBUCKET_USER}:${BITBUCKET_APP_PASSWORD}@bitbucket.org/company name/repository.git",
将用户名和密码硬编码到存储库 URL 工作正常,但是当我执行 yarn install
如上所述时,环境变量不会被其值替换。
有没有办法像这样使用环境变量?
您可以编写一个 preinstall
挂钩,用环境中的值更新 package.json
。幸运的是,生命周期挂钩的顺序按照使用 yarn
.
{
"name": "njs",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"preinstall": "node preinstall.js"
},
"dependencies": {
"@companyName/repository": "git+https://${$BITBUCKET_USER}:${BITBUCKET_APP_PASSWORD}@bitbucket.org/companyName/repository.git"
},
"author": "",
"license": "ISC"
}
preinstall.js 示例:
const package = require('./package.json');
const fs = require('fs');
const {BITBUCKET_USER = 'test', BITBUCKET_APP_PASSWORD='test'} = process.env;
package.dependencies["@companyName/repository"] = package.dependencies["@companyName/repository"]
.replace("${$BITBUCKET_USER}", BITBUCKET_USER)
.replace("${BITBUCKET_APP_PASSWORD}", BITBUCKET_APP_PASSWORD);
fs.writeFileSync('package.json', JSON.stringify(package, null, 4));
奖金:
如何选择替换 preinstall.js
中的环境变量由您自行判断。是的,你完全可以使用 ES6 模板标签。