我有什么
我有多个项目使用Percy for Cypress,我在.env
文件中设置了PERCY_TOKEN
env变量。每个项目的令牌是不同的。在CI中,我为每个项目设置了不同的环境变量,但在本地我必须在.env
文件中这样做。因此,每当我在项目之间进行更改时,我都必须编辑.env
文件。
我想在.env
文件中这样设置它们:
PROJECT_A_PERCY_TOKEN=tokenhash1
PROJECT_B_PERCY_TOKEN=tokenhash2
因此,稍后我可以将这些变量重命名为PERCY_TOKEN
,从而消除了不断更改.env
文件的需要。
What I tried
我试图在package.json
文件的scripts
属性内做到这一点。不幸的是,echo $PROJECT_A_PERCY_TOKEN
没有打印。我知道我可以创建一个shell/python/js脚本来解析.env
文件,然后将值传递回去或直接调用npm run
,但我想在没有外部脚本的情况下这样做。
在我看来,我无法访问package.json
内部的环境变量。是否有一种方法来重命名变量只使用npm脚本?
br
如果你想配置的包有能力通过JavaScript文件进行配置,你可以在它的开头添加重命名:
process.env.PERCY_TOKEN = process.env.CYPRESS_PERCY_SALESFORCE_TOKEN;
虽然这不是我正在寻找的解决方案,但它是这个特定用例的变通方法。Percy支持JavaScript配置文件,所以我迁移了我的YAML配置文件,然后我记录了process.env
和.env
文件的变量,所以我只需要复制正确的一个。这可能适用于其他支持JavaScript配置文件的包(或者其他可以放置自定义代码的钩子/预加载器),但如果它们不支持,那么问题仍然没有答案。