本文共 1003 字,大约阅读时间需要 3 分钟。
在使用create-react-app
时,打包生产环境npm run build
,浏览器打开后仍然是可以看到源码的。
在这里以新建一个默认项目为例:
App.js
项目根目录新建.env
文件,内容如下:
GENERATE_SOURCEMAP=false
package.json:
"scripts": { "start": "dotenv -e .env.frm react-app-rewired start", "start:pro": "dotenv -e .env.frm -e .env.pro react-app-rewired start", "build": "dotenv -e .env.frm -e .env react-app-rewired build", "build:pro": "dotenv -e .env.pro -e .env.frm react-app-rewired build", "test": "react-app-rewired test --env=jsdom", "eject": "react-scripts eject" },
(build中引入.env文件,多个env文件用 -e 隔开),需要下载dotenv-cli
yarn add dotenv-cli
然后重新打包,浏览器打开后就看不到源码啦。
为了探究原理,执行eject
后,可以看到webpack配置中有这么一段
// Source maps are resource heavy and can cause out of memory issue for large source files.const shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== 'false';
这里的process.env.GENERATE_SOURCEMAP
控制着是否捎带源码。所以我们可以配置环境变量GENERATE_SOURCEMAP=false
即可。
当执行build
时,将按顺序优先寻找.env.production.local
, .env.production
, .env.local
, .env
文件来配置环境变量,所以就有了上面的操作。
结果如下:
=
转载地址:http://cead.baihongyu.com/