前端开发那些事儿

webpack5新特性

2021-07-08  本文已影响0人  vivianXIa

1 持久化缓存

缓存在webpack5中默认开启,缓存默认是在内存里,但可以对cache进行设置
cache: {

type: 'filesystem', //'memory' | 'filesystem' cacheDirectory: path.resolve(__dirname, 'node_modules/.cache/webpack'),

},

2 资源模块

资源模块是一种模块类型,它允许使用资源文件(字体,图标等)而无需配置额外 loader

3 URIs (会用的比较少)

Webpack 5 支持在请求中处理协议
支持data 支持 Base64 或原始编码,MimeType可以在module.rule中被映射到加载器和模块类型

4 moduleIds & chunkIds的优化

可选值 含义 示例
natural: 按使用顺序的数字ID 1
named: 方便调试的高可读性id src_two_js.js
deterministic: 根据模块名称生成简短的hash值 915
size: 根据模块大小生成的数字id 0

5 移除Node.js的polyfill

webpack4带了许多Node.js核心模块的polyfill,一旦模块中使用了任何核心模块(如crypto),这些模块就会被自动启用
webpack5不再自动引入这些polyfill
如果要引入加上


reslove:{

fallback:{

"crypto":require.resolve("crypto-browerify")

//...包括stream buffer

}

}

6 更强大的tree-shaking

tree-shaking就在打包的时候剔除没有用到的代码

webpack.config.js:配置:optimization:true 会给没使用的文件进行标记:
unused harmony export nums ,在prodction模式中会被删除


webpack4:在编写支持 tree-shaking 的代码时,导入方式非常重要。你应该避免将整个库导入到单个 JavaScript 对象中。当你这样做时,你是在告诉 Webpack 你需要整个库, Webpack 就不会摇它。

// 全部导入 (不支持 tree-shaking)
import _ from 'lodash';
// 具名导入(支持 tree-shaking)
import { debounce } from 'lodash';

modudleId


sideEffects:false

函数副作用指当调用函数时,除了返回函数值之外,还产生了附加的影响,例如修改全局变量
严格的函数式语言要求函数必须无副作用

sideEffects:false值,就认为所有的js文件都没有副作用,就可以在内部css的loader中设置sideEffects:true(表示有副作用)


image.png
//package.json: css有副作用不删除
 "sideEffects": ["*.css"],

上一篇 下一篇

猜你喜欢

热点阅读