-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
webpack 打包优化 #5
Comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
webpack 打包优化
前题
用
React + Ant Design
做的一个业务平台,在做线上发布打包的时候,发现文件比预想的要大很多(在构建项目之前就已经通过React-router
配合webpack
的Code Splitting
对代码进行分割成多个Chunk
.).项目中所写的业务组件一共18个,项目文件夹总体大小才
376kb
,但是build
完过后的文件大小有3.76M
.这不是一个很理想的值.查找原因
模块的引用
目测文件的引入比较大的应该是
react-dom
和antd
,然而编译过后的文件并不知道具体情况.webpack 命令行分析
这段命令的意思是: 在输出中显示所有模块,包括被排除的模块;对模块列表以某种属性排序
密密麻麻一大堆,完全不知道到底引用了多少内容;
还好牛人比较多,工具拯救这密密麻麻的字符;
以 JSON 格式输出 webpack 的运行结果
从图中可以看出,大文件的组成主要分为
一步步分析
app
是组件模块必须有,跳过它;
core-js
文件所关联的是
babel-polyfill
,2个作用都是转码器,core-js
是babel-runtime
里面的文件,这个应该是需要工具编译不能提取出来,但是babel-polyfill
是可以提取出来的;css-loader
这里面相关的插件为什么也会出现在包文件里,这个有疑虑???难道是因为没有把
css
文件提取出来,需要相关loader
来转义?antd
这个库打包的时候并没有完全引入,在一开始配置的时候就已经按需加载了;
react && react-dom
这个2个文件完全可以走
CDN
,那么就修改webpack
配置把moment
这个和
antd
的日期控件千丝万缕,尝试了好几次始终没有剥离出来;(虽然文件也很大,但是还没弄明白为什么会绑定得很严重)结果
编译过后的文件总体小了一点点,虽然看起来不是那么理想,但是过程对
webpack
有了进一步的理解,也对项目组成有了更深刻的了解;参考
分析插件 webpack-chart
Code Splitting
webpack loaders
命令行接口(CLI)
BootCDN
ant.design docs
The text was updated successfully, but these errors were encountered: