博客
关于我
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/

你可能感兴趣的文章
Mysql学习总结(37)——Mysql Limit 分页查询优化
查看>>
Mysql学习总结(38)——21条MySql性能优化经验
查看>>
Mysql学习总结(45)——Mysql视图和事务
查看>>
Mysql学习总结(58)——深入理解Mysql的四种隔离级别
查看>>
Mysql学习总结(59)——数据库分库分表策略总结
查看>>
Mysql学习总结(60)——并发量大、数据量大的互联网业务数据库设计规范总结
查看>>
Mysql学习总结(79)——MySQL常用函数总结
查看>>
Mysql学习总结(80)——统计数据库的总记录数和库中各个表的数据量
查看>>
Mysql学习总结(82)——MySQL逻辑删除与数据库唯一性约束如何解决?
查看>>
Mysql学习总结(83)——常用的几种分布式锁:ZK分布式锁、Redis分布式锁、数据库分布式锁、基于JDK的分布式锁方案对比总结
查看>>
MySQL定义和变量赋值
查看>>
mysql实战01|基础架构:一条SQL查询语句是如何执行的?
查看>>
Mysql实战之数据备份
查看>>
mysql实现成绩排名
查看>>
Mysql客户端中文乱码问题解决
查看>>
mysql导入数据库出现:Incorrect string value: '\xE7\x82\xB9\xE9\x92\x9F' for column 'chinese' at row 1...
查看>>
mysql导入(ibd文件)
查看>>
Mysql工作笔记006---Mysql服务器磁盘爆满了_java.sql.SQLException: Error writing file ‘tmp/MYfXO41p‘
查看>>
MySQL底层概述—5.InnoDB参数优化
查看>>
MySQL底层概述—6.索引原理
查看>>