webpack5 和 webpack4 的区别有哪些 ?

一、压缩代码

1.webpack4

webpack4 上需要下载安装 terser-webpack-plugin 插件,并且需要以下配置:

const TerserPlugin = require('terser-webpack-plugin')

module.exports = { 
// ...other config
optimization: {
  minimize: !isDev,
  minimizer: [
    new TerserPlugin({
      extractComments: false, 
      terserOptions: { 
        compress: { 
          pure_funcs: ['console.log'] 
        }
      }
    }) ]
 }

 2.webpack5

内部本身就自带 js 压缩功能,他内置了 terser-webpack-plugin 插件,我们不用再下载安装。而且在 mode=“production” 的时候会自动开启 js 压缩功能。

如果你要在开发环境使用,就用下面:

  // webpack.config.js中
  module.exports = {
     optimization: {
       usedExports: true, //只导出被使用的模块
       minimize : true // 启动压缩
     }
  }

二、webpack 缓存

1.webpack4 缓存配置

npm install hard-source-webpack-plugin -D

const HardSourceWebpackPlugin = require('hard-source-webpack-plugin') 

module.exports = { 
plugins: [
  // 其它 plugin... 
  new HardSourceWebpackPlugin(), 
] }

 2. webpack5 缓存配置

webpack5 内部内置了 cache 缓存机制。直接配置即可。

cache 会在开发模式下被设置成 type: memory 而且会在生产模式把cache 给禁用掉。

// webpack.config.js
module.exports= {
  // 使用持久化缓存
  cache: {
    type: 'filesystem',
    cacheDirectory: path.join(__dirname, 'node_modules/.cac/webpack')
  }
}

 type 的可选值为: memory 使用内容缓存,filesystem 使用文件缓存。

三、启动服务的差别 

1.webpack4 启动服务

通过 webpack-dev-server 启动服务

2.webpack5 启动服务

内置使用 webpack serve 启动,但是他的日志不是很好,所以一般都加都喜欢用 webpack-dev-server 优化。

四、devtool的差别 

sourceMap需要在 webpack.config.js里面直接配置 devtool 就可以实现了。而 devtool有很多个选项值,不同的选项值,不同的选项产生的 .map 文件不同,打包速度不同。

一般情况下,我们一般在开发环境配置用“cheap-eval-module-source-map”,在生产环境用‘none’。

devtool在webpack4和webpack5上也是有区别的

v4: devtool: 'cheap-eval-module-source-map'

v5: devtool: 'eval-cheap-module-source-map'

### 回答1: Webpack4和Webpack5的区别主要在以下几个方面: 1. 性能优化:Webpack5在构建速度和打包体积方面都有了很大的提升,尤其是在使用Tree Shaking和Code Splitting等功能时更加高效。 2. 模块联邦:Webpack5引入了模块联邦的概念,可以实现多个应用之间的模块共享,提高了代码复用性和开发效率。 3. 支持WebAssembly:Webpack5支持WebAssembly模块的导入和导出,可以更加高效地处理一些计算密集型的任务。 4. 默认值改变:Webpack5中一些默认值发生了改变,例如mode默认值从production改为了production,需要注意调整配置文件。 5. 其他改进:Webpack5还引入了一些新的特性和改进,例如支持ESLint的缓存,支持多种类型的资源模块等。 ### 回答2: Webpack是一个强大的模块打包工具,目前最新版本是Webpack5。和之前版本(Webpack4)相比,Webpack5带来了很多新的改进和特性。 其中最显著的区别是缩小了输出文件的大小和提高了构建速度。Webpack5引入了一个叫做Tree shaking的新特性,它可以去除未使用的代码,因此,输出的文件尺寸会变得更小。此外,Webpack5还引入了Module Federation,这一新特性可实现模块共享,从而使构建速度更快。 除此之外,Webpack5还带来了一些其他的改进。其中一项改进是Webpack5的缓存机制更加高效,因此重复构建时能够更快地完成。此外,Webpack5也增强了持久化缓存的能力,能够更好地存储数据。还有一项非常实用的改进是Webpack5支持0配置模式,使得开发者能够更快地开始工作。 总体而言,Webpack5与Webpack4相比,在性能和功能上都有了很大的提升。如果你正在考虑使用Webpack,我建议你选择Webpack5,因为它会让你的工作更加高效和愉快! ### 回答3: Webpack是一个广泛使用的JavaScript模块打包工具。Webpack可以将多个开发时编写的JavaScript模块汇总到一个或多个静态资源中。Webpack会创建一个整个应用程序的依赖图,使用该依赖图生成打包后的文件,并将应用程序的所有依赖项捆绑在一起。 Webpack在不断地更新迭代中,目前主要有4.x和5.x两个版本。下面就来比较一下Webpack4和Webpack5的区别。 1. 构建速度 Webpack5做了很多优化,构建速度提升了90%以上,比Webpack4快了很多。取代了Optimize CSS Assets Plugin 和 TerserWebpackPlugin两个插件均可减少构建时间。 2. Tree shaking Webpack5针对 Tree shaking优化有很多的改进,增加了 Module Graph 和深度优化,进一步的提高了 Tree shaking 的效率,把未用到的模块从最终打包的代码中删除,减小了打包后的文件大小。 3. 模块联邦 Webpack5新增了模块联邦(module federation)提供了一种新的代码共享机制,可以允许不同的应用程序之间共享代码。一个 Webpack5 主应用可以提供自己的模块,也可以使用其他应用程序的模块。可以让多个相互独立的应用沟通连通,灵活性更强。 4. 全局属性 Webpack4中不支持全局属性,使得在构建时,一些全局属性无法正常引用。Webpack5添加了对于全局属性的支持,可以让全局属性正常工作,而不会产生错误。 5. 缓存 针对于缓存方面,Webpack5在开发模式中开启持久化缓存,可以在增量构建时提供更快的编译速度,以避免重新运行整个Webpack构建流程。 综上所述,Webpack5对于性能、tree shaking、模块联邦,全局属性这些进行了大量的优化和改进,拥有更好的性能表现。而且Webpack5的一些新特性,如模块联邦,可以满足更多的需求,Webapck5相比Webpack4具有更好的发展前景和应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值