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打包第三方类库的正确姿势相关推荐

  1. webpack配置:打包第三方类库、第三方类库抽离、watch自动打包、集中拷贝静态资源...

    一.打包第三方类库 下面说2种方法: 第一种: 1.引入jQuery,首先安装: npm install --save-dev jquery 2.安装好后,在index.js中引入,用jquery语法 ...

  2. webpack 打包第三方库_Webpack 打包第三方代码库

    共四篇文章都是在总结 Webpack.其中,[译]为什么要 Webpack 写了使用 Webpack 的动机和它的显著特征.其余三篇,主要是围绕怎么解决 Webpack 构建出来的文件太大展开,分别是 ...

  3. webpack 打包第三方库_webpack打包分离第三方库和业务代码

    使用webpack打包工程,通常会需要分离第三方类库和应用本身的代码,因为第三方类库更新频率不高,这样浏览器可以直接从缓存读,不需要项目每次上线再获取一次. 以react为例,正常情况下,最初是这么配 ...

  4. html5 打包ios.上架,iOS帮客户打包App上架的正确姿势

    适用情况: 帮客户开发的App,要以客户名义(客户开发者账号)上架,但是客户又不提供账号密码,然后也不能在iTunes Connect邀请你作为开发者. 整体的流程,大概如下: 双方定义好App ID ...

  5. Android开发之Android studio自动签名打包release 版本的正确姿势(完整版) | 文末尾附有Google官方签名教程

    1.从以下方面讲解打包正式版本分为: 自动打包(也就是每次项目跑起来就是release正式版本)apk 手动打包:就是每次需要重新签名后选择release正式版本再跑起来生成apk 先说手动版本特别简 ...

  6. 使用webpack开发ES6程序的正确姿势

    1.cnpm install babel-loader babel-core babel-preset-es2015 -D 2.cnpm install babel-plugin-transform- ...

  7. bundle 安装_超级小白使用pip安装第三方库的正确姿势

    为了感谢大家对"Python客栈"的关注与支持,即日起,我们每天会在留言中随机抽取三位粉丝发放6.6元小红包.快来参与吧!1 1.pip是什么 pip是python的包管理工具,p ...

  8. webpack打包缓存_webpack独立打包与缓存处理

    关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 先前写了一篇webpack入门的文章<webpack入门必知必会>,简单介绍了webpa ...

  9. 开发函数计算的正确姿势——支持 ES6 语法和 webpack 压缩

    为什么80%的码农都做不了架构师?>>>    首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算 ...

最新文章

  1. 如何在Python中对字符串进行子字符串化
  2. 生信人写程序2. Editplus添加Perl, Shell, R模板和语法高亮
  3. oracle新建用户名和密码,Oracle安装后忘记用户名或密码+创建新登陆用户
  4. [原]LVM管理问题解决
  5. epoll示例(水平触发)
  6. Python 爬取可用代理 IP
  7. 【干货】运维,你是青铜还是王者?
  8. gis影像格式img转为ecw_微图影像地图导出拼接大图的参数说明
  9. php pg connect,pg_connect
  10. ASP.NET页面揭秘之页面生命周期
  11. 就业模拟试题(.NET部分)
  12. map 值为指针_Go sync.Map 并发效率为什么那么高?
  13. 使用javamail 发送邮件
  14. BZOJ2595: [Wc2008]游览计划(斯坦纳树,状压DP)
  15. 小程序不同页面之间通讯的解决方案 1
  16. CentOS7镜像下载地址
  17. 数据结构导论 笔记整理
  18. html中input type什么意思,HTML中type是什么意思
  19. c语言 code table,单片机C语言unsigned char code table是什么意思?
  20. 2018年福建省计算机二级acess试题,2018年计算机二级Access试题及答案(一)

热门文章

  1. 记事本写python怎么运行-Python开发简单记事本
  2. python编写一个软件-python写一个随机点名软件的实例
  3. python软件下载免费还是收费-为什么python最强大的IDE是收费的PyCharm?
  4. python3.6.3安装-CentOS7.2安装Python3.6.3
  5. 想学python从哪里入手-想要学习python,如何入手学习?
  6. 北京python培训班价格-Python培训班多少钱?
  7. python如何编程-终于发现怎么自学python编程
  8. python朋友圈为什么这么火-利用Python让你的微信朋友圈与众不同,更加高大上
  9. python画图代码星星-Python 星星 金字塔 学习笔记
  10. python3安装-Centos 安装 Python3