在Parceljs中暴露环境?

Jon*_*hey 6 javascript webpack parceljs

我正在尝试使用Parcel.js构建一个变量,类似于Webpack DefinePlugin,但我还没有找到如何做到这一点.

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

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

//production:
API_URL="/"
Run Code Online (Sandbox Code Playgroud)

目前Parcel支持module.hot交换机,我可以滥用它,因为热模块重新加载仅在开发中启用,但是有一个更好的方法是很好的.

我也可以检查,如果window.location.hostnamelocalhost,但它是一个解决办法.

Tad*_*ius 16

对于仍在寻求答案的人:

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

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

.env.development

API_URL=http://localhost:8900/
Run Code Online (Sandbox Code Playgroud)

.env.production

API_URL=/
Run Code Online (Sandbox Code Playgroud)

然后根据需要通过调用process.env.API_URL(不需要进一步导入)来使用它.