• yarn build
  • gh-pages 工具 链接
  • npm install gh-pages --save-dev ```jsx …
    “name”: “jianshu”, “version”: “0.1.0”,

“scripts”: { …

  • “predeploy”:”yarn run build”,
  • “deploy”: “gh-pages -d build”//新增一个分支名为gh-pages,然后把build文件夹内容放进去 … }

```

  • yarn run deploy
  • 这种方法有坑就是路由会在前面加上仓库名字,显然会让浏览器找不到原本资源所在的路径。

方法二

利用 git subtree

不需要安装 gh-pages
只需要修改 package.json 中 “homepage”: “./“,

  • yarn build
  • git commit -m “test gh-pages”
  • git push origin master(我是 git push github master

注意cra默认的 gitignore 忽略了build文件夹,要自行修改

这时候我们的远程仓库的 master 分支下有了 build 这个文件夹,里面就是打包编译之后的文件。
git subtree push —prefix=build origin gh-pages(我是git subtree push —prefix=build github gh-pages
上面这个命令的意思是将master分支下某个文件(如:build)复制一份到 gh-pages 这个新分支下。 这时候通过 setting 与方法一截图操作一样就可以了,最终效果都是一样的,不过你的代码每次迭代之后,都需要手动在部署一下,才能达到线上线下一致

回到GitHub仓库,设置里有个 pages,点击即可,但是发现还有路由问题。:
发送请求都设置为相对路径
<**BrowserRouter** basename**=**{**process.env.**PUBLIC_URL}>

参考

https://zhuanlan.zhihu.com/p/88481760

https://zhuanlan.zhihu.com/p/83258482