zoukankan      html  css  js  c++  java
  • 基于vue-cli2得到的初始化项目升级webpack(简约版)

    在webpack的周边系列,loader、预设、插件都更新的很快,一不留神就是报错提示你的xx的模块有问题,大部分是webpack版本不对导致。vue-cli2脚手架基于webpack3,下面借助vue-cli2初始化得到的项目下改造成webpack4。记录如下:(可能大家会觉得说用vue-cli3不香么~,其实记录本文的主要目的是梳理下大体结构思路, 想循序递进迈进新台阶。≧◠◡◠≦✌)

    包管理更新

    初始化版本:                                 替换结构:
    
    "webpack": "^3.6.0",                       "webpack": "^4.26.0",
    
                                               "webpack-cli": "^3.3.0"(新增),
    
    "webpack-dev-server": "^2.9.1",            "webpack-dev-server": "^3.11.0",
    
    "uglifyjs-webpack-plugin": "^1.1.1",       "uglifyjs-webpack-plugin": "^1.2.5",
    
    "extract-text-webpack-plugin": "^3.0.0",   "mini-css-extract-plugin": "^0.9.0",
    
    "html-webpack-plugin": "^2.30.1",          "html-webpack-plugin": "^3.2.0",
    
    "eslint-loader": "^1.7.1",                 "eslint-loader": "^2.0.0",
    
    "vue-loader": "^13.3.0",                   "vue-loader": "^14.2.2",
    
    "babel-loader": "^7.1.1",                  "babel-loader": "^7.1.5",

    build文件夹下配置修改

    1) mode属性: 开发模式:mode: 'development'; 生产模式:mode: 'production'

    2) CommonsChunkPlugin的废除,由splitChunks替代

    CommonsChunkPlugin相关代码注释, 配置默认splitChunks如下

    module.exports = {
      optimization: {
        splitChunks: {
          chunks: 'async', 
          minSize: 30000,
          maxSize: 0,
          minChunks: 1,
          maxAsyncRequests: 5,
          maxInitialRequests: 3,
          automaticNameDelimiter: '~',
          name: true,
          cacheGroups: {
            vendors: {
              test: /[\/]node_modules[\/]/,
              priority: -10
            },
            default: {
              minChunks: 2,
              priority: -20,
              reuseExistingChunk: true
            }
          }
        }
      }
    };

    3) extract-text-webpack-plugin调整为mini-css-extract-plugin

    utils.js:
    
    if (options.extract) {
      return ExtractTextPlugin.extract({
        use: loaders,
        fallback: 'vue-style-loader'
      })
    }
    
    替换为:
    if (options.extract) {
      return [MiniCssExtractPlugin.loader].concat(loaders)
    }
    
    webpack.prod.conf.js:
    
    new ExtractTextPlugin({
       filename: utils.assetsPath('css/[name].[contenthash].css'),
       allChunks: false
    })
    
    
    替换为:
    new MiniCssExtractPlugin({
       filename: utils.assetsPath('css/[name].[contenthash].css'),
       allChunks: false
    })

    4)最后如遇到此报错:BaseClient.js?e917:12 Uncaught TypeError: Cannot assign to read only property 'exports' of object '#

    去除resolve('node_modules/webpack-dev-server/client')即可正常,原因不详,暂时无深入研究。

    demo案例https://github.com/yang1212/webpack-about/tree/master/vue-cli2-webpack4-jiandan

  • 相关阅读:
    UDS 诊断协议 $36
    UDS 诊断协议 $34
    RH850 CS+工程 定义常量变量到指定ROM地址
    关于ARM 架构汇编指令
    RH850 FDL的使用
    robotframework Selenium2+RFS自动化测试
    虫师 博客园 http://www.cnblogs.com/fnng/
    Excel数据比对-批量数据比对
    web自动化测试 Selenium2 Java自动化测试实战9_3
    loadrunner11 +Win7 + 支持ie9,录制成功
  • 原文地址:https://www.cnblogs.com/Tiboo/p/14260155.html
Copyright © 2011-2022 走看看