webpack05----webpack5
原创
©著作权归作者所有:来自51CTO博客作者蓝色海岛的原创作品,请联系作者获取转载授权,否则将追究法律责任
# webpack5
此版本重点关注以下内容:
- 通过持久缓存提高性能
- 使用更好的算法和默认值来改善长期缓存
- 通过更好的树摇和代码生成来改善捆绑包大小
- 清除处于怪异状态的内部结构,同时在v4中实现功能而不引入任何重大更改
- 通过引入重大更改来为将来的功能做准备,以使我们能够尽可能长时间地使用v5
## 下载
- npm i webpack@next webpack-cli -D
## 自动删除 Node.js Polyfills
早期,webpack的目标是允许在浏览器中运行大多数node.js模块,但是模块格局发生了变化,许多模块为了用于前端而编写的。webpack <= 4 附带了许多node.js核心模块的polyfill,一旦模块使用任何核心模块(crypto模块),这些模块就会自动应用。
尽管这使node.js编写的模块变得容易,但它会将这些巨大的polyfill添加到包中,在许多情况下,这些polyfill是不必要的。
webpack5会自动停止填充这些核心模块,并专注于与前端兼容的模块。
迁移:
- 尽可能尝试使用与前端兼容的模块
- 可以为node.js核心模块手动添加一个polyfill,错误信息将提示如何实现该目标。
## Chunk 和模块 ID
添加了用于长期缓存的新算法。在生产模式下默认启用这些功能
`chunkIds: "deterministic", moduleIds: "deterministic"`
## Chunk ID
你可以不使用 `import(/* webpackChunkName: 'name' */ "module")` 在开发环境下为chunk命名,生产环境还是有必要的
webpack内部有命名规则,不再是以 id(0,1,2) 命名了
## Tree Shaking
1、webpack现在能够处理对嵌套模块的tree shaking
``` js
// inner.js
export const a = 1
export const b = 2
// module.js
import * as inner from './inner'
export {inner}
// user.js
import * as module from './module'
console.log(module.inner.a)
```
在生产环境中,inner模块暴露的 `b` 会被删除
2、webpack现在能够处理多个模块之前的关系
```js
import { something } from './something'
function usingSomething(){
return something
}
export function test(){
return usingSomething()
}
```
当设置了 `"sideEffects": false` 时,一旦发现 `test` 方法没有使用,不但删除 `test` 还会删除 `"./something"`
3、webpack现在能处理对Commonjs的tree shaking
## Output
webpack4只能输出ES5代码
webpack5开始新增一个属性 output.ecmaVersion,可以生成 ES5 和 ES6/ES2015 代码
如 `output.ecmaVersion: 2015`
## SplitChunk
```js
// webpack4
minSize: 30000
```
```js
// webpack5
minSize: {
javascript: 30000,
style: 50000
}
```
## Caching
```js
// 配置缓存
cache: {
// 磁盘存储
type: "filesystem",
buildDependencies: {
config: [__filename] // 当配置修改时,缓存失效
}
}
```
缓存将存储到 `node_modules/.cache/webpack`
## 监视输出文件
之前webpack总是在第一次构建时输出全部文件,但是监视重新构建时只会更新修改的文件,
此次更新在第一次构建时会找到输出文件看是否有变化,从而决定要不要输出全部文件。
## 默认值
- `entry: './src/index.js'`
- `output.path: path.resolve(__dirname, 'dist')`
- `output.filename: '[name].js'`
## 更多内容
https://github.com/webpack/changelog-v5
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Webpack5 快速入门
1. webpack 介绍2. webpack 基本使用3. webpack 5大核心概念4. web
webpack javascript 前端 css 打包工具 -
webpack5的loader变化html
-
webpack5入门教程
Webpack入门 Webpack是什么 Webpack 是一个现代 JavaScript 应用程序的静态模块打包
javascript sass css Webpack 绝对路径 -
webpack5初试配置常用变更
简介:webpack5从0
css ide html -
springboot中validate限制只能是数字
《Spring Boot 2.X 实战》系列文章将分为如下几个模块,本小节将实战如何构建 RESTful API,并自定义返回数据和HTTP 返回码和传入数据,下一小节将实战 Spring Boot 整合 Log4j2 与 Slf4j 实现日志打印和输出到文件:上一章中主要介绍了 Spring Boot 和如何在 IDEA 中创建 Spring Boot 项目,本章将在上一章的基础上,介绍如何运行
springboot @value springboot2 war页面放在那 springboot接收json参数