webpack4.0关闭开发环境的代码压缩UglifyJsPlugin

本文介绍了在webpack4.1.1中遇到的开发环境代码压缩问题,指出开发阶段压缩代码会消耗大量性能并浪费开发时间。为了解决这个问题,作者提出通过设置环境变量在开发环境中禁用UglifyJsPlugin插件,以提高开发效率。在package.json中设置环境变量可以避免不必要的代码压缩,同时确保热更新功能正常工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  最近项目使用的是webpack4.1.1,在使用之前是没有细看更新后版本的文档的,在使用过程中才发现还是有很大的变化。其中一个就是关于UglifyJsPlugin的配置问题。
  开发环境是不需要去压缩代码,主要是因为太耗性能了,每修改一个地方就要花几秒去等待页面渲染,说实话这非常浪费开发时间,解决办法就是配置不同的环境变量去在开发环境的时候不要这个UglifyJsPlugin插件,为此,webpack4又增加了新的Mode,且默认值是production,而且更新后的webpack默认是有UglifyJsPlugin这个配置的,也就是说在不设置任何环境变量的情况下,始终会有压缩代码的行为出现,导致编译极其耗时,那我的解决办法就是在package.json文件启动时设置环境变量:

  "scripts": {
    "dev": "rm -rf ./dist && webpack-dev-server --inline --progress --mode development --config webpack.config.js",
    "build": "rm -rf ./dist && webpack"
  },

  同样的也可以在打包的时候也设置环境变量,这样就不会在开发环境频繁的去压缩代码,节省了很多没必要的等待时间,而且频繁压缩也会导致热更新HotModuleReplacementPlugin根本毫无作用。下面是webpack的配置:

const HtmlWebpackPlugin = require('html-webpack-plugin')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
const webpack = require('webpack')
const path = require('path')

const config = {
  // mode: 'development',
  entry: {
    vendor: [
      'jquery',
      'echarts/lib/echarts',
      'echarts/lib/chart/pie',
      'echarts/lib/chart/bar',
      'echarts/lib/chart/line',      
      'echarts/lib/component/tooltip',
      'echarts/lib/component/title'
    ],
    beauty: path.resolve(__dirname, 'src/js/beauty.js'),
    shadow: path.resolve(__dirname, 'src/js/shadow.js')
  },
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: '[name].js',
  },
  module: {
    rules: [
      {
        test: /\.html$/,
        loader: 'html-loader',
      },
      {
        test: /\.js$/,
        exclude: /(node_modules)/,
        loader: 'babel-loader',
      },
      {
        test: /\.less$/,
        use: [{
          loader: 'style-loader',
        }, {
          loader: 'css-loader',
        }, {
          loader: 'less-loader',
        }],
      },
      {
        test: /\.json$/,
        loader: 'file-loader',
      },
      {
        test: /\.(jpe?g|png|gif|svg)$/i,
        use: [
          'url-loader?limit=10000',
          'img-loader',
        ],
      },
      {
        test: /\.(webm|mp4)$/,
        loader: 'file-loader',
      },
    ],
  },
  plugins: [
    new webpack.ProvidePlugin({
      $: 'jquery',
      jQuery: 'jquery',
      _: 'lodash'
    }),
    new webpack.HotModuleReplacementPlugin(),
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: path.resolve(__dirname, 'src/beauty.html'),
      chunks: ['vendor', 'beauty'],
    }),
    new HtmlWebpackPlugin({
      filename: 'shadow.html',
      template: path.resolve(__dirname, 'src/shadow.html'),
      chunks: ['vendor', 'shadow'],
    })
  ],
  performance: {
    hints: false
  },
  devtool: '#eval-source-map'
}

module.exports = config

  虽然只是小小的改动,但是提高了开发的效率,也是有点小强迫症,看着每次编译都要等个3秒真的是太难受了,不过webpack4.0肯定还是有很多的变化和更新等着去我们去探(踩)索(坑),不过踩的越多会的也就越多~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值