本节内容派生于以下链接指向的内容 ,并遵守 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 变量: