在 Parceljs 中暴露环境?

Expose Environment in Parceljs?

我试图在使用 Parcel.js, similar to the Webpack DefinePlugin 构建时公开一个变量,但我还没有找到如何去做。

在开发中,我希望我的 API 主机与生产主机不同,因此:

//development:
API_URL="http://localhost:8900/"

//production:
API_URL="/"

目前 Parcel 支持 module.hot 开关,我可能会滥用它,因为热模块重新加载只在开发中启用,但最好有更好的方法。

我也可以检查 window.location.hostname 是否为 localhost,但这是一种解决方法。

对于仍在寻求答案的任何人:

您可以使用 Parcel.js 的 .env 文件支持(通过 dotenv 包),added in 1.5.0 (2018-01-23)

无需额外配置。只需让您的 .env 文件由适当的 NODE_ENV(生产、开发等)分隔,您就可以通过 process.env.VARIABLE_NAME 访问变量。在你的情况下,你可以这样做:

.env.development

API_URL=http://localhost:8900/

.env.production

API_URL=/

然后根据需要在您的代码中调用 process.env.API_URL(无需进一步导入)来使用它。