You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅通过npm脚本在package.json中重命名.env变量?

解决方案

核心问题原因

你在npm脚本里无法访问.env变量,是因为npm默认不会自动加载.env文件中的环境变量,必须先将这些变量导入到当前脚本的shell环境中,才能读取和修改。

无需外部脚本的实现方式

方式1:原生Shell命令(分平台)

适用于不需要跨平台的场景,直接通过shell命令加载.env并重命名变量:

Unix-like系统(macOS/Linux)

在package.json的scripts中添加项目专属命令:

"scripts": {
  "cy:project-a": "source .env && export PERCY_TOKEN=$PROJECT_A_PERCY_TOKEN && cypress run",
  "cy:project-b": "source .env && export PERCY_TOKEN=$PROJECT_B_PERCY_TOKEN && cypress run"
}

执行时直接运行npm run cy:project-a或npm run cy:project-b即可自动切换对应的PERCY_TOKEN。

Windows CMD环境

修改脚本为Windows兼容的语法:

"scripts": {
  "cy:project-a": "for /f \"tokens=*\" %i in (.env) do set %i && set PERCY_TOKEN=%PROJECT_A_PERCY_TOKEN% && cypress run",
  "cy:project-b": "for /f \"tokens=*\" %i in (.env) do set %i && set PERCY_TOKEN=%PROJECT_B_PERCY_TOKEN% && cypress run"
}

方式2:跨平台通用方案(推荐)

使用dotenv-cli和cross-env实现跨平台兼容,无需区分系统:

  1. 安装依赖:
npm install --save-dev dotenv-cli cross-env
  1. 在package.json中配置脚本:
"scripts": {
  "cy:project-a": "dotenv -e .env -- cross-env PERCY_TOKEN=$PROJECT_A_PERCY_TOKEN cypress run",
  "cy:project-b": "dotenv -e .env -- cross-env PERCY_TOKEN=$PROJECT_B_PERCY_TOKEN cypress run"
}
  • dotenv-cli负责自动加载.env文件中的变量到环境中
  • cross-env确保跨平台环境变量设置语法一致
  • 执行时同样运行npm run cy:project-a或npm run cy:project-b即可切换项目

内容的提问来源于stack exchange,提问作者totymedli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:45:30