在 Parceljs 中暴露环境?

Posted

技术标签:

【中文标题】在 Parceljs 中暴露环境?【英文标题】:Expose Environment in Parceljs? 【发布时间】:2018-06-09 03:27:42 【问题描述】:

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

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

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

//production:
API_URL="/"

目前 Parcel 支持 module.hot 开关,我可以滥用它,因为热模块重新加载仅在开发中启用,但如果有更好的方法来实现这一点会很好。

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

【问题讨论】:

【参考方案1】:

对于仍在寻求答案的人:

您可以使用 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(无需进一步导入)来使用它。

【讨论】:

完美运行,几乎太容易了。就我而言,我在构建我的代码的npm 脚本上设置了环境变量,例如:"build": "NODE_ENV=production parcel build 抱歉,我不太明白。 .env.development.env.production 应该在哪里? parceljs.org/env.html 它说 .env 文件应该与 package.json 文件在同一个目录下。 ;) 它们是否包含在捆绑包中?如何在 JS 控制台中访问/设置它们?

以上是关于在 Parceljs 中暴露环境?的主要内容,如果未能解决你的问题,请参考以下文章

如何在生产环境中使用 Express 和 Parceljs 中间件

闭包以及暴露接口---学习笔记

K8s暴露内部服务的多种方式

QJSEngine - 暴露类和抛出错误

触目惊心,超过 8000+ 漏洞 Redis 暴露在云端!

QJSEngine-暴露类和抛出错误