javascript - 在 Parceljs 中暴露环境?

标签 javascript webpack parceljs

我试图在使用 Parcel.js 构建时公开一个变量,类似于 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(无需进一步导入)来使用它。

关于javascript - 在 Parceljs 中暴露环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48009893/

相关文章:

laravel - Nwidart Laravel 模块使用 webpack 和 mix 管理资源。

javascript - 使用 Parcel 和 Express 正确设置 React SSR

javascript - Electron.js/包裹错误: fs.存在Sync不是函数

typescript - 无法在 Typescript 中导入 svg.js

javascript - underscore.js 的 throttle 实现中的 'remaining > wait' 条件语句何时为真?

javascript - PHP 简单 HTML DOM 和下拉元素选择选项

webpack - 如何在CRA项目中用parcel替换webpack?

javascript - Node JS : Passing Response Object to Bull Queue for Server Side Events

javascript - 谷歌地图 : Clickable Custom Marker

webpack - 如何在 Svelte 编译器中使用 Rollup 或 Webpack 预处理组件 CSS 和全局样式?