webpack 学习笔记

捕获君
• 阅读 1690

Chapter 1

  • webpack 默认配置⽂文件:webpack.config.js
  • 可以通过 webpack --config 指定配置⽂文件

webpack 学习笔记

  • 通过 npm script 运⾏行行 webpack,package.json里的script下配置。

webpack 学习笔记


Chapter 2

  • entry:打包的入口文件
  • output:如何将编译后的文件输出到磁盘
  • webpack 学习笔记
  • Loaders: 支持其它文件类型并且把它们转化成有效的模块,并且可以添加到依赖图中
  • webpack 学习笔记

      • babel-loader 解析ES6
    • style-loader,css-loader,less-loader 解析css
    • file-loader 解析图片或字体
    • url-loader 解析图片,可带limit参数转换成base64
  • Plugins: 用于 bundle ⽂文件的优化,资源管理理和环境变量量注⼊入,作⽤用于整个构建过程.
  • webpack 学习笔记
  • Mode: 构建环境是:production、development 还是 none
  • webpack 学习笔记
  • 文件监听:webpack --watch.build编译好的文件会自动更新。

webpack 学习笔记

  • 热更新:webpack-dev-server(WDS)

webpack 学习笔记

  • 热更新:第一次打开(1-2-A-B),更改文件热更新(1-2-3-4)

webpack 学习笔记

  • 文件指纹:

    • hash 字体和图片
    • Chunkhash:js(和 webpack 打包的 chunk 有关,不不同的 entry 会⽣生成不不同的 chunkhash 值)
    • contenthash:css
  • 代码压缩:

    • js:内置unglify-webpack-plugin
    • css:optimize-css-assets-webpack-plugin和cssnano.由于是单独生成css,需要删除style-loader(这个是用来生成css插入header标签的)
    • html:html-webpack-plugin

Chapter 3

  • 自动清理构建目录:使用clean-webpack-plugin
  • 自动补齐CSS3前缀:PostCSS 插件 autoprefixer
  • CSS3的px和rem转换:使用 px2rem-loader,自动计算根元素font-size:lib-flexible
  • html,js资源内联:

    • 例如 ${require('raw-loader!babel-loader!../node_modules/lib-flexible')}
  • css资源内联:
  • webpack 学习笔记
  • 多页面打包:
  • webpack 学习笔记
  • source map:构建完成时,是否可以通过map调试源码,而非打包后的代码。配置devtool:'source-map'
  • 分离公共资源:

    • 基础库分离:使用html-webpack- externals-plugin用cdn方式替换
    • 公共脚本分离:使用SplitChunksPlugin(webpack 4内置,替代CommonsChunkPlugin),也可以分离基础库cdn
  • tree shaking:ES6语法(import ...)静态分析,没有被用到的代码,不打包。
  • scope hoisting:使用ES6语法,减少webpack打包产生的闭包。
  • JS懒加载:使用插件 npm install @babel/plugin-syntax-dynamic-import --save-dev
  • ESLint:发现代码错误,保证团队风格
  • webpack 学习笔记
  • webpack打包库和组件:

    • 支持 AMD/CJS/ESM 模块引⼊
    • webpack 学习笔记
    • library: 指定库的全局变量量
    • libraryTarget: 支持库引入的⽅式
    • webpack 学习笔记
    • webpack 学习笔记
    • npm publish 打包上传。
  • ssr服务端渲染:服务端生成html模板,css,data数据,直接返回客户端。减少请求次数,提升seo.
  • 优化日志:stats:errors-only + friendly-errors-webpack-plugin插件
  • 错误日期的捕获和中断:

    • echo $? 查看错误码
    • webpack4 和 3 写法不一样
    • webpack 学习笔记
    • *

Chapter 4

  • 构建配置抽离成 npm 包

    • webpack 学习笔记
    • 通过 webpack-merge 组合配置
  • 冒烟测试:测试打包后是否构建报错,测试是否有html,css,js文件输出。
  • 单元测试:mocha + chai(断言库)
  • 测试覆盖率:istanbul
  • 持续集成ci:Travis
  • git commit 规范:规范git commit提交信息,自动生成change-log.
  • webpack 学习笔记
  • webpack 学习笔记
  • 版本号规范:

    • X.Y.Z
    • alpha,beta,rc

Chapter 5

  • package.json 中使用 stats
  • 速度分析: speed-measure-webpack-plugin
  • 体积分析: webpack-bundle-analyzer
  • 使用高版本:node和webpack
  • 多进程多线程:webpack4原生:thread-loader
  • 并行压缩: terser-webpack-plugin 开启 parallel 参数
  • 分包:分离基础库:html-webpack-externals- plugin
  • 进一步分包:预编译资源模块: 使用 DLLPlugin 进行分包,DllReferencePlugin 对 manifest.json 引用
  • 使用缓存构建:

    • babel-loader 开启缓存
    • terser-webpack-plugin 开启缓存
    • 使用 cache-loader 或者 hard-source-webpack-plugin
  • 缩小构建目标:比如 babel-loader 不解析 node_modules
  • 减少文件搜索范围

webpack 学习笔记

  • 图片压缩:imagemin
  • tree shaking:去除没有用到的js和css
  • 动态polyfill: 识别 User Agent,下发不同的 Polyfill
  • webpack 学习笔记
点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
storybook配置之基本配置和webpack配置
默认配置Storybook有一个默认的适合(suits)大型项目开发的webpack配置,假如你使用reactapp,他类似于创建一个reactapp的配置,并经过调整(tweaked),使其与vuecli的webpack配置非常相似开始学习Storybook配置学习内容(TableofContents)BabelES2016
Easter79 Easter79
3年前
vue 中安装使用sass 报错遇到的问题整理
不出错的情况下,正常安装:1.安装包:npminstallnodesasssavedevnpminstallsassloadersavedev(sassloader依赖于nodesass)2.在build文件夹下的webpack.base.conf.js的rules里面添加配置
Easter79 Easter79
3年前
vue iview element
首先安装babelpolyfillnpminstallbabelpolyfillsavedev入口文件引用,在main.js中引用import'babelpolyfill'配置文件webpack.base.conf.js修改entry:{app:'./src/main.j
Wesley13 Wesley13
3年前
java日志框架系列(3):logback框架配置详解
1.Logback配置1.配置步骤及默认配置logback即可以通过编程式配置,也可以通过xml的形式配置。logback配置步骤:1\.尝试在classpath下查找文件logbacktest.xml;2\.如果文件不存在,则查找文件logback.xml;3\.如果两
Easter79 Easter79
3年前
Vue+Webpack配置css
  使用VueWebpack搭建工程时,在webpack.config.js中的module的rules里针对各种文件配置加载工具。在针对css文件配置时遇到一个问题:打包构建时报错——Modulebuildfailed:Unknownword。  配置内容如下:{  test:/\.css$/,  use:
Stella981 Stella981
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Easter79 Easter79
3年前
TypeScript 文件引入 Html (ts import html webpack)
我们的目标是把html引入ts文件,webpack打包时就能把html打进js文件,减少文件加载啦1安装textloadernpminstalltextloadersavedev2webpack配置里新增textloader为文本加载器module:{rules:
可莉 可莉
3年前
18个常用 webpack插件,总会有适合你的!
!(https://oscimg.oschina.net/oscnet/71317da0c57a8e8cf5011c00e302a914609.jpg)来源| https://github.com/Michaellzg/myarticle/blob/master/webpack/Plugin何为插
Stella981 Stella981
3年前
IE9样式错乱,IE11无法正常加载v
1.第一步:安装babelployfill(已安装请跳过此步骤)yarnaddbabelployfill2.修改webpack打包配置文件:webpack.bash.conf.js//引入babelployfillvarbabelPloy
Wesley13 Wesley13
3年前
KO
KOKO是一个基于Webpack开发的快速开始Web开发的脚手架工具,具有以下特性:可以当做一个Webpack配置种子来使用,无需二次配置、开箱即用自动支持多页应用(可选)Vue单文件组件的开发方式资源分块加载,内联和异步加载方式管理,低成本实现首屏优化支
Easter79 Easter79
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模