本节内容派生于以下链接指向的内容 ,并遵守 CC BY 4.0 许可证的规定。
以下内容如果没有特殊声明,可以认为都是基于原内容的修改和删减后的结果。
EnvironmentPlugin
简化了使用 DefinePlugin
设置 process.env
变量的过程。
string[] | Record<string, string>
EnvironmentPlugin
接受一个包含键的数组或者一个键到其默认值的对象映射。
这等同于以下 DefinePlugin
的使用方式:
如果没有指定环境变量,将会抛出“EnvironmentPlugin
- ${key}
environment variable is undefined”错误。
作为替代,EnvironmentPlugin
支持一个映射键到其默认值的对象。如果在 process.env
中某个键未定义,则采用该键的默认值。
从 process.env
来的变量总是字符串。
与 DefinePlugin
不同,EnvironmentPlugin
会对默认值使用 JSON.stringify
。
null
和 undefined
的默认值有不同的表现。如果变量在打包时必须提供,则使用 undefined
;如果它们是可选的,则使用 null
。
如果在打包过程中找不到环境变量,并且没有提供默认值,Rspack 将抛出错误而不是警告。
让我们来看看在 test 文件 entry.js
上运行前述 EnvironmentPlugin
配置的结果:
当在终端执行 NODE_ENV=production
Rspack 构建时,entry.js
变成了这样:
运行 DEBUG=false
Rspack 产生:
下面的 EnvironmentPlugin
配置提供了对应于仓库最后一次 Git 提交的 process.env.GIT_VERSION
(例如 "v5.4.0-2-g25139f57f")和 process.env.GIT_AUTHOR_DATE
(例如 "2020-11-04T12:25:16+01:00"):
第三方 DotenvPlugin
(dotenv-webpack
)允许你暴露一部分 dotenv 变量: