1.使用alias简化路径

  1. alias: {
  2. 'vue$': 'vue/dist/vue.esm.js',
  3. '@': resolve('src')
  4. }

2.overlay界面弹出编译错误

  1. devServer: {
  2. overlay: {
  3. errors: true,
  4. warnings: true
  5. }
  6. }

3.import语句指定chunkName

webpack2用import来代替require.ensure,其无法直接指定chunkName,可以使用注释的方式指定

  1. import(/* webpackChunkName: "my-chunk-name" */ 'module');

4.Tree-shaking

只打包引用的方法,模块的为引用方法不被打包

什么是 tree shaking,即 webpack 在打包的过程中会将没用的代码进行清除(dead code)。一般 dead code 具有一下的特征:

1. 代码不会被执行,不可到达
2. 代码执行的结果不会被用到
3. 代码只会影响死变量(只写不读)

Tree shaking 生效必要条件

1. 模块引入要基于 ES6 模块机制,不能使用 commonjs 规范,因为 es6 模块的依赖关系是确定的,和运行时的状态无关,可以进行可靠的静态分析,然后清除没用的代码。而 commonjs 的依赖关系是要到运行时候才能确定下来的。

2. 开启 UglifyJsPlugin 这个插件对代码进行压缩

5.Scope Hoisting

webpack以前使用独立的函数包装一个个模块文件,webpack3可以将所有模块连接到一个闭包里面,放入一个函数,执行速度更快,体积也会更小

scope hoisting,顾名思义就是将模块的作用域提升,在 webpack 中不能将所有所有的模块直接放在同一个作用域下,有以下几个原因:

1. 按需加载的模块
2. 使用 commonjs 规范的模块
3. 被多 entry 共享的模块

想要webpack3开启Scope Hoisting,必须在 plugins 中添加 ModuleConcatenationPlugin

6.不用使用DllPlugin插件

7.内联少量的css,减少请求

  1. plugins: [
  2. new StyleExtHtmlWebpackPlugin({
  3. minify: true
  4. })
  5. ]

8.preload插件优化请求时间

  1. plugins: [
  2. new PreloadWebpackPlugin({
  3. rel: 'preload',
  4. as: 'script',
  5. include: 'all'
  6. })
  7. ]

9.UglifyJsPlugin配置优化

  1. new UglifyJsPlugin({
  2. // 最紧凑的输出
  3. beautify: false,
  4. // 删除所有的注释
  5. comments: false,
  6. compress: {
  7. // 在UglifyJs删除没有用到的代码时不输出警告
  8. warnings: false,
  9. // 删除所有的 `console` 语句
  10. // 还可以兼容ie浏览器
  11. drop_console: true,
  12. // 内嵌定义了但是只用到一次的变量
  13. collapse_vars: true,
  14. // 提取出出现多次但是没有定义成变量去引用的静态值
  15. reduce_vars: true,
  16. }
  17. })

10.引用某个文件夹中的所有文件(webpack1有效,webpack2以上版本未知)

如果你希望达到如下的效果:

  1. require('./behaviors/*') /* Doesn't work! */

你需要使用require.context:

  1. //出处 http://stackoverflow.com/a/30652110/873870
  2.  
  3. function requireAll (r) { r.keys().forEach(r) }
  4.  
  5. requireAll(require.context('./behaviors/', true, /\.js$/))s

各种require引用用法,参考此文

参考:https://juejin.im/post/59b9d2336fb9a00a636a3158
         http://web.jobbole.com/93676/

webpack配置优化的更多相关文章

  1. vue-cli3.x中的webpack配置,优化及多页面应用开发

    官方文档 vue-cli3以下版本中,关于webpack的一些配置都在config目录文件中,可是vue-cli3以上版本中,没有了config目录,那该怎么配置webpack呢? 3.x初始化项目后 ...

  2. webpack配置这一篇就够

    最近看了一篇好文,根据这个文章重新梳理了一遍webpack打包过程,以前的一些问题也都清楚了,在这里分享一下,同时自己也做了一些小的调整 原文链接:http://www.jianshu.com/p/4 ...

  3. vue-cli中webpack配置详解

    vue-cli是构建vue单页应用的脚手架,命令行输入vue init <template-name> <project-name>从而自动生成的项目模板,比较常用的模板有we ...

  4. vue-cli webpack配置 简单分析

    vue-cli webpack配置分析 入口 从package.json可以看到开发和生产环境的入口. "scripts": { "dev": "no ...

  5. 多页应用 Webpack4 配置优化与踩坑记录

    前言 最近新起了一个多页项目,之前都未使用 webpack4 ,于是准备上手实践一下.这篇文章主要就是一些配置介绍,对于正准备使用 webpack4 的同学,可以做一些参考. webpack4 相比之 ...

  6. webpack配置指南

    Webpack已经出来很久了,相关的文章也有很多,然而比较完整的例子却不是很多,让很多新手不知如何下脚,下脚了又遍地坑 说实话,官方文档是蛮乱的,而且有些还是错的错的..很多配置问题只有爬过坑才知道 ...

  7. Vue发布过程中遇到坑,以及webpack打包优化

    前言 这段时间,本人自己做了一个vue画面部署到自己的服务器上,发现运行速度慢的的惊人,虽然服务器很渣(本人没什么钱,只能租最差的服务器,主要是给自己学习用的),但是这样开发出来的网站简直不能用,所以 ...

  8. VUE 多页面打包webpack配置

      思路:多配置一个main的文件,用于webpack入口使用, 然后路由的导向也应该默认指向新组件,最后通过webpack构建出一个新的独立的html文件. 缺点:生成多个html会new出多个vu ...

  9. 通用、封装、简化 webpack 配置

    通用.封装.简化 webpack 配置 现在,基本上前端的项目打包都会用上 webpack,因为 webpack 提供了无与伦比强大的功能和生态.但在创建一个项目的时候,总是免不了要配置 webpac ...

随机推荐

  1. yii自定义行为组件(简介版)

    yii2 给框架底层预定义事件自定义处理程序. 1. common\config\main.php  修改配置文件添加   'as behaviors' => 'backend\behavior ...

  2. Python学习笔记:Matplotlib(数据可视化)

    Matplotlib是一个可以将数据绘制为图形表示的Python三方库,包括线性图(折线图,函数图).柱形图.饼图等基础而直观的图形,在平常的开发当中需要绘图时就非常有用了. 安装:pip insta ...

  3. Python元组,列表,字典,集合

    1.元组 元组是有序的,只有index和count两种方法,一看到元组,就提醒是不可更改的 names = ('wll', 'ly', 'jxx', 'syq') (1)index方法 print(n ...

  4. 线程、进程、协程和GIL(三)

    上一篇文章介绍了:创建线程的两种方式.Event对象判断线程是否启动.利用信号量控制线程并发. 博客链接:线程.进程.协程和GIL(二) 这一篇来说说线程间通信的那些事儿: 一个线程向另一个线程发送数 ...

  5. wps取消英文首字母大写功能

    wps中关于首字母大写的功能还是很有用处的,但是有时候对于我们来说却是一种累赘,怎么取消这个功能呢? 新建一个文档之后,点击wps文字,选择工具,选项按钮 然后点击编辑,取消勾选键入时自动进行首字母大 ...

  6. Smail 中的一些点

    smali中所有操作都需要经过寄存器, 本地寄存器以v开头, 参数寄存器以p开头, 非static方法中p0是this 没有-object后缀的操作指令表示操作的对象是基本类型 invoke-dire ...

  7. Spring---BeanFactory与ApplicationContext简介

    BeanFactory概念 Spring通过一个配置文件描述bean和bean之间的依赖关系,然后利用java语言的反射功能实例化bean,并建立bean之间的依赖关系.Spring的IOC容器在完成 ...

  8. Android stadio butternife工具

    http://www.androidchina.net/5068.html svn今天我对它有了更深的认识.我知道了有冲突了不能提交.但是可以update,updata之后就会有冲突的东西生成,如果你 ...

  9. hasOne

    public boolean hasOne(int n) { int lastdigit=0; while( n >0 ){ lastdigit=(n % 10); if(lastdigit== ...

  10. 《Cracking the Coding Interview》——第5章:位操作——题目5

    2014-03-19 06:22 题目:将整数A变成整数B,每次只能变一个二进制位,要变多少次呢. 解法:异或,然后求‘1’的个数. 代码: // 5.5 Determine the number o ...