webpack打包第三方类库的正确姿势
webpack 的使用越来越广泛,但其中不乏很多鲜为人知的细节设置,甚至很多人会认为这是 webpack 的 bug。这次,我们就来聊一聊 webpack.optimize.CommonsChunkPlugin。
这个 plugin 我相信几乎90%的用 webpack 的都用了这个,但我同样相信几乎 90% 的用了这个 plugin 的人都没有正确的使用。
entry: {index: './app/main.jsx',vendor: ['react', 'react-dom', 'react-router', 'classnames']},output: {path: path.resolve(__dirname, './dist'),filename: "[name].[chunkHash:8].js",publicPath: '',chunkFilename: "[name].[chunkHash:8].js",},plugins: [new webpack.optimize.CommonsChunkPlugin({names: ['vendor'],}),]
上面这个配置应该大家都不陌生吧?打包第三方 vendor。
其实这样写是有问题的。有什么问题呢?我们根据这个配置来操作一下。
首先,运行起来,我们会得到 vendor.js 的添加 hash 值过后的输出;
然后,修改index入口里面的任意文件,再次编译,得到 vendor.js 的添加 hash 值过后的输出;
最后,比较 vendor.js 两次编译的hash的值,你会惊讶的发现,为什么hash值改变了?我并没有修改vendor啊。
hash值改变了,那我们打包这个vendor也就没有意义了。
置于为什么会造成这个问题,我就不班门弄斧了,想要知道的人自己去研究一下webpack的底层。
在这里,我只是抛出一个解决方案:
entry: {index: './app/main.jsx',vendor: ['react', 'react-dom', 'react-router', 'classnames']},output: {path: path.resolve(__dirname, './dist'),filename: "[name].[chunkHash:8].js",publicPath: '',chunkFilename: "[name].[chunkHash:8].js",},plugins: [new webpack.optimize.CommonsChunkPlugin({names: ['vendor', 'manifest'],}),]
没错,就是上面这个配置,只是简单的加了 'manifest' 。
再次做我们前面的测试,你会发现多了一个manifest.js,但是vendor的hash值不再变化了。
点到为止,江湖再见。
转载于:https://www.cnblogs.com/myqianlan/p/5626505.html
webpack打包第三方类库的正确姿势相关推荐
- webpack配置:打包第三方类库、第三方类库抽离、watch自动打包、集中拷贝静态资源...
一.打包第三方类库 下面说2种方法: 第一种: 1.引入jQuery,首先安装: npm install --save-dev jquery 2.安装好后,在index.js中引入,用jquery语法 ...
- webpack 打包第三方库_Webpack 打包第三方代码库
共四篇文章都是在总结 Webpack.其中,[译]为什么要 Webpack 写了使用 Webpack 的动机和它的显著特征.其余三篇,主要是围绕怎么解决 Webpack 构建出来的文件太大展开,分别是 ...
- webpack 打包第三方库_webpack打包分离第三方库和业务代码
使用webpack打包工程,通常会需要分离第三方类库和应用本身的代码,因为第三方类库更新频率不高,这样浏览器可以直接从缓存读,不需要项目每次上线再获取一次. 以react为例,正常情况下,最初是这么配 ...
- html5 打包ios.上架,iOS帮客户打包App上架的正确姿势
适用情况: 帮客户开发的App,要以客户名义(客户开发者账号)上架,但是客户又不提供账号密码,然后也不能在iTunes Connect邀请你作为开发者. 整体的流程,大概如下: 双方定义好App ID ...
- Android开发之Android studio自动签名打包release 版本的正确姿势(完整版) | 文末尾附有Google官方签名教程
1.从以下方面讲解打包正式版本分为: 自动打包(也就是每次项目跑起来就是release正式版本)apk 手动打包:就是每次需要重新签名后选择release正式版本再跑起来生成apk 先说手动版本特别简 ...
- 使用webpack开发ES6程序的正确姿势
1.cnpm install babel-loader babel-core babel-preset-es2015 -D 2.cnpm install babel-plugin-transform- ...
- bundle 安装_超级小白使用pip安装第三方库的正确姿势
为了感谢大家对"Python客栈"的关注与支持,即日起,我们每天会在留言中随机抽取三位粉丝发放6.6元小红包.快来参与吧!1 1.pip是什么 pip是python的包管理工具,p ...
- webpack打包缓存_webpack独立打包与缓存处理
关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 先前写了一篇webpack入门的文章<webpack入门必知必会>,简单介绍了webpa ...
- 开发函数计算的正确姿势——支持 ES6 语法和 webpack 压缩
为什么80%的码农都做不了架构师?>>> 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算 ...
最新文章
- 如何在Python中对字符串进行子字符串化
- 生信人写程序2. Editplus添加Perl, Shell, R模板和语法高亮
- oracle新建用户名和密码,Oracle安装后忘记用户名或密码+创建新登陆用户
- [原]LVM管理问题解决
- epoll示例(水平触发)
- Python 爬取可用代理 IP
- 【干货】运维,你是青铜还是王者?
- gis影像格式img转为ecw_微图影像地图导出拼接大图的参数说明
- php pg connect,pg_connect
- ASP.NET页面揭秘之页面生命周期
- 就业模拟试题(.NET部分)
- map 值为指针_Go sync.Map 并发效率为什么那么高?
- 使用javamail 发送邮件
- BZOJ2595: [Wc2008]游览计划(斯坦纳树,状压DP)
- 小程序不同页面之间通讯的解决方案 1
- CentOS7镜像下载地址
- 数据结构导论 笔记整理
- html中input type什么意思,HTML中type是什么意思
- c语言 code table,单片机C语言unsigned char code table是什么意思?
- 2018年福建省计算机二级acess试题,2018年计算机二级Access试题及答案(一)
热门文章
- 记事本写python怎么运行-Python开发简单记事本
- python编写一个软件-python写一个随机点名软件的实例
- python软件下载免费还是收费-为什么python最强大的IDE是收费的PyCharm?
- python3.6.3安装-CentOS7.2安装Python3.6.3
- 想学python从哪里入手-想要学习python,如何入手学习?
- 北京python培训班价格-Python培训班多少钱?
- python如何编程-终于发现怎么自学python编程
- python朋友圈为什么这么火-利用Python让你的微信朋友圈与众不同,更加高大上
- python画图代码星星-Python 星星 金字塔 学习笔记
- python3安装-Centos 安装 Python3