如何在.npmrc文件中使用.env环境变量?
能否在.npmrc中直接使用.env文件里的变量?
不行,npm本身不会自动读取.env文件中的变量并注入到.npmrc的环境变量替换中。.npmrc里的${变量名}语法,只会读取当前shell环境中已存在的变量,而.env文件的变量默认不会自动加载到shell环境里。
不过可以通过以下几种方式实现你的需求,避免每次手动export变量:
方法1:用dotenv-cli加载.env后执行npm命令
dotenv-cli是专门用来加载.env文件到环境变量的工具,步骤如下:
- 全局安装dotenv-cli:
npm install -g dotenv-cli - 执行npm命令时通过dotenv-cli加载.env:
dotenv -e .env npm install - 也可以把命令封装到package.json的scripts里,简化操作:
之后直接运行{ "scripts": { "install:private": "dotenv -e .env npm install" } }npm run install:private即可自动加载.env变量并执行安装。
方法2:写shell脚本封装安装命令
手动写一个shell脚本,先加载.env再执行npm install:
- 创建
install.sh文件:#!/bin/bash # 开启自动导出变量 set -a # 加载.env文件内容到当前环境 source .env # 关闭自动导出 set +a # 执行npm安装 npm install - 给脚本添加执行权限:
chmod +x install.sh - 运行脚本完成安装:
./install.sh
方法3:让shell自动加载项目目录的.env(本地开发专用)
如果是本地开发环境,可以配置shell的启动文件,让进入项目目录时自动加载.env:
- 如果你用bash,编辑
~/.bashrc文件,添加以下内容:if [ -f .env ]; then set -a source .env set +a fi - 如果你用zsh,编辑
~/.zshrc文件,添加同样的内容。 - 保存后重启shell,或者执行
source ~/.bashrc(bash)/source ~/.zshrc(zsh)生效。之后进入项目目录直接运行npm install,shell会自动加载.env的变量。
注意事项
- 务必将.env文件加入
.gitignore,不要提交到版本控制,防止敏感信息泄露。 - 如果是CI/CD环境,建议直接在平台的环境变量配置中设置token,不需要依赖.env文件。
内容的提问来源于stack exchange,提问作者Jinwoo Nam
相关产品推荐
相关产品推荐

