webpack3.0アップグレード4.0


文書ディレクトリ

  • 1.Webpack 3.11アップグレード4.26
  • 2. インストール/アップグレード依存
  • 3. 問題
  • 4. まとめ
  • 1.webpack 3.11アップグレード4.26


    パッケージ効率を向上させるため、webpack 3.11ベースでアップグレードしました、webpack 4.0リリース以来、ゼロ構成のwebpackはプロジェクト自体に提供される「パッケージ」と「圧縮」機能を最適化しており、vue-cliのデフォルト構成ではなく4.0をプロジェクトで使用し始めると、問題が少なくなる可能性があります.

    2.インストール/アップグレード依存


    これらの依存はbuildの過程で依存が新しい置換やエラーを発見し、徐々に置換されているものがあります.複数のピットに遭遇したい場合は、まずwebpack、webpack-cliを対応するバージョンdevDependenciesにアップグレードすることができます.
    "extract-text-webpack-plugin": "^4.0.0-beta.0"
    "html-webpack-plugin": "^4.0.0-beta.14"
    "mini-css-extract-plugin": "^0.9.0"  (  optimize-css-assets-webpack    )
    "preload-webpack-plugin": "^3.0.0-beta.4"
    "script-ext-html-webpack-plugin": "^2.1.3"
    "vue-loader": "^15.3.0"
    "webpack": "^4.26.1"
    "webpack-cli": "^3.1.2"
    "webpack-dev-server": "^3.2.1"
    "script-ext-html-webpack-plugin": "^2.1.3"
    

    3.問題

  • webpackをアップグレードした後、buildエラー:ERROR in./src/App.vue Module Error(from./node_modules/vue-loader/lib/index.js解決:vue-loaderを15.3.0にアップグレードし、webpack.base.conf.js追加
    const {VueLoaderPlugin} = require('vue-loader')
    module.exports   
     plugins:[new VueLoaderPlugin()]
    
  • プロファイルの変更prod.conf.js:
  • webpack.optimize.CommonsChunkPlugin has been removed, please use config.optimization.splitChunks instead.
      :
    webpack.prod.conf.js webpackConfig  :
    optimization: {
        noEmitOnErrors: true,
        concatenateModules: true,
        splitChunks: {
          chunks: 'all',
          name: 'common',
        },
        runtimeChunk: {
          name: 'runtime'
        }
      }
    webpack.prod.conf.js webpackConfig  :  
    optimization:{
        namedModules: true
      },
    
  • Plugin could not be registered at ‘html-webpack-plugin-before-html-processing’. Hook was not found.
      :
    npm i preload-webpack-plugin@next -D
    
  • Tapable.plugin is deprecated. Usenew API on .hooks instead問題:extract-text-webpack-plugin互換問題、機能:extract css into its own file解決:extract-text-webpack-pluginアンインストールmini-css-extract-plugin
       new MiniCssExtractPlugin({
          filename: utils.assetsPath('css/[name].[contenthash].css'),
          allChunks: false,
        }),
    
  • インストール
  • buildエラー:ERROR in TypeError:Cannot read property'hash'of undefined解決:
             
         //    
         const SpeedMeasurePlugin = require("speed-measure-webpack-plugin");
         const smp = new SpeedMeasurePlugin();
    
  • WARNING in configuration The ‘mode’ option has not been set, webpack will fallback to ‘production’ for this value. Set ‘mode’ option to ‘development’ or ‘production’ to enable defaults for each environment. You can also set it to ‘none’ to disable any default behavior. Learn more: https://webpack.js.org/concepts/mode/解決:webpackConfig追加mode:'production'
  • Tapable.plugin is deprecated. Use new API on .hooks instead解決:
    npm i --save-dev extract-text-webpack-plugin@next
    
         [email protected]
    
  • Error: webpack.optimize.CommonsChunkPlugin has been removed, please use config.o ptimization...解決:
  • webpackを削除します.optimize.CommonsChunkPlugin関連構成
  • webpackConfigでpluginsとの同級追加
  • 	optimization: {
    	  splitChunks: {
    	         cacheGroups: {
    	             commons: {
    	                 name: "commons",
    	                 chunks: "initial",
    	                 minChunks: 2
    	             }
    	         }
    	     }
    	 },
    
  • Unhandled rejection Error:“dependency”is not a valid chunk sort mode
    new HtmlWebpackPlugin({
          filename: config.build.index,
          template: 'index.html',
          inject: true,
          minify: {
            removeComments: true,
            collapseWhitespace: true,
            removeAttributeQuotes: true
          },
          // necessary to consistently work with multiple chunks via CommonsChunkPlugin
          chunksSortMode: 'dependency'
        }),
    
    解決:chunksSortModeをautoまたは注釈
  • に変更
    これで、npm run buildは正常にnpm run devを調整し、直接実行に成功しました.

    4.まとめ


    Cacheを開いた場合、パッケージ時間は22 s前後だったが、buildは最速8 s前後でアップグレードされた.
  • webpack古いバージョンをアンインストールし、新しいバージョンのwebpackをインストールし、webpack-cli
  • loader、pluginエラーに遭遇し、loader、pluginをアップグレードし、4.0でサポートされていないものもあり、新しい
  • に変更する必要があります.
  • ExtractTextPluginをアンインストールし、対応する構成を削除し、mini-css-extract-plugin
  • に変更する.
  • 構成環境mode
  • その他wenpack 3.0最適化構成互換処理