Create-React-App .env 文件的目录位置(非根目录)

3
使用create-react-app (CRA)创建新的Web应用程序后,需要包含一些环境文件来配置各种端点。注意到CRA已经准备好了很酷的dotenv包。但是,有一个问题 - 我希望dotenv从我的./environments目录中读取这些文件,而不是根目录。是否有任何方法可以在与根目录分离的目录中加载.env.env.local.env.test等文件?
我注意到可以在我的Express后端server.js中通过简单地导入来实现这一点:
require('dotenv').config({ path: `./environments/` })

我能在React中使用客户端代码做同样的事情吗?如果可以,应该将这个import放在哪里?这似乎对我不起作用。


你可以在这里查看 - Prateek Thapa
1个回答

8
如果您使用CRA创建了项目,并希望配置dotenv以更改其加载env文件的路径,则必须执行npm eject
或者,您可以使用env-cmd来实现相同的效果: 安装:
npm i env-cmd

package.json中添加脚本,例如:

Add scripts

"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    
    "dev": "env-cmd -f envs/.env.dev react-scripts build",
     "qa": "env-cmd -f envs/.env.qa react-scripts build",
    "demo": "env-cmd -f envs/.env.demo react-scripts build"
  },

envs/目录下创建.env.dev.env.qa.env.demo文件后,现在可以运行:
$ npm run dev // it will use envs/.env.dev file
$ npm run qa // it will use envs/.env.qa file
$ npm run demo // it will use envs/.env.demo file

1
正确,参见:https://github.com/facebook/create-react-app/blob/fddce8a9e21bf68f37054586deb0c8636a45f50b/packages/react-scripts/config/paths.js#L86对于相对于软件包根目录的硬编码.env路径。从事情的样子来看,这不会改变 https://github.com/facebook/create-react-app/issues/1697这很遗憾,因为react-scripts基本上是零配置,可以按复合顺序加载.envs - kmjb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接