博客
关于我
create-react-app build 打包隐藏源码
阅读量:160 次
发布时间:2019-02-28

本文共 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/

你可能感兴趣的文章
Navicat 导入sql文件
查看>>
navicat 添加外键1215错误
查看>>
navicat 系列软件一点击菜单栏就闪退
查看>>
Navicat 设置时间默认值(当前最新时间)
查看>>
navicat 连接远程mysql
查看>>
navicat:2013-Lost connection to MySQL server at ‘reading initial communication packet解决方法
查看>>
Navicate for mysql 数据库设计-数据库分析
查看>>
Navicat下载和破解以及使用
查看>>
Navicat中怎样将SQLServer的表复制到MySql中
查看>>
navicat创建连接 2002-can‘t connect to server on localhost(10061)且mysql服务已启动问题
查看>>
Navicat可视化界面导入SQL文件生成数据库表
查看>>
Navicat向sqlserver中插入数据时提示:当 IDENTITY_INSERT 设置为 OFF 时,不能向表中的标识列插入显式值
查看>>
Navicat因导入的sql文件中时间数据类型有参数而报错的原因(例:datetime(3))
查看>>
Navicat如何连接MySQL
查看>>
navicat怎么导出和导入数据表
查看>>
Navicat通过存储过程批量插入mysql数据
查看>>
Navicat(数据库可视化操作软件)安装、配置、测试
查看>>
ndk特定版本下载
查看>>
NDK编译错误expected specifier-qualifier-list before...
查看>>
Neat Stuff to Do in List Controls Using Custom Draw
查看>>