我可以在不弹出的情况下在create-react-app中更改公用文件夹的名称吗?

时间:2018-09-21 22:47:57

标签: javascript reactjs npm create-react-app

我有一个我已经建立的create-react-app项目(如果有关系,可以在后台将节点和表达式连接到mysql db),并且工作正常。我的项目经理告诉我,我需要将“ public”目录的名称更改为“ static”(此目录保存/将保存我的静态文件,例如index.html和我需要提供的任何媒体)为了正确部署它,但是我唯一能找到的解决方案是弹出,因此我可以更改'PUBLIC_URL'的值。当前,当我运行“ npm run start”时出现错误,它记录:“找不到所需文件。名称:index.html”,并且仍在公共目录(我已经将其更改为“静态”)中进行搜索。我的代码中没有地方引用公用文件夹。

从我的理解(如果我错了,请纠正我),PUBLIC_URL变量由create-react-app设置为公用文件夹的路径。我想将其更改为静态文件夹,但是我发现的唯一解决方案似乎涉及到弹出然后手动更改变量。有没有一种方法可以在不弹出的情况下设置该变量,或者进行其他更改该目录的解决方法,如果没有,那么最简单的方法是使其正常工作(我宁愿不弹出,但如果不弹出,则可以这样做)。唯一的方法)...我真的只需要使用目录来更改名称,并且发现自己对自己认为相当简单的更改感到沮丧。

谢谢!

编辑:这是我的package.json:

{
  "name": "client",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "react": "^16.5.2",
    "react-dom": "^16.5.2",
    "react-scripts": "1.1.5"
  },
  "scripts": {
    "start": "PORT=8080 && react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  }
}

3 个答案:

答案 0 :(得分:1)

在package.json中,将您的 build 行替换为:

"build": "react-scripts build && rm -rf static && mv build static"

答案 1 :(得分:1)

PUBLIC_URL是您可以设置的变量。

您可以在控制台中进行设置

export PUBLIC_URL="/static"

创建React应用会从process.env.PUBLIC_URL提取

您可以在pull request thread中了解有关此功能的更多信息

答案 2 :(得分:0)

我真的很惊讶它实际上是多么简单。

  1. 使用您选择的包管理器安装 react-app-rewired

  2. 在项目的根目录下创建一个 config-overrides.js 文件

  3. 将以下代码粘贴到 config-overrides.js

const path = require('path');
module.exports = {
    paths: function (paths, env) {
        // Changing public to static
        paths.appPublic = path.resolve(__dirname, 'static');
        paths.appHtml = path.resolve(__dirname, 'static/index.html');
        return paths;
    }
}
  1. 在项目的根目录下创建一个 .env 文件并写入 PUBLIC_URL='./static'

希望这能帮助任何试图做同样事情的人。