<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        webpack4的遷移的使用方法

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:14:06
        文檔

        webpack4的遷移的使用方法

        webpack4的遷移的使用方法:感覺是突然之間,webpack4的消息就滿天飛了,聽說打包速度提高了很多,還有最大的噱頭是實現(xiàn)了零配置,leader有一天就吩咐我說,有時間把我們的項目也升個級唄。好嘞。 1.x到2.x 這次升級跨度比較大,我們是從webpack1.x升級到4.x,因為1.x與2.x相差
        推薦度:
        導(dǎo)讀webpack4的遷移的使用方法:感覺是突然之間,webpack4的消息就滿天飛了,聽說打包速度提高了很多,還有最大的噱頭是實現(xiàn)了零配置,leader有一天就吩咐我說,有時間把我們的項目也升個級唄。好嘞。 1.x到2.x 這次升級跨度比較大,我們是從webpack1.x升級到4.x,因為1.x與2.x相差

        感覺是突然之間,webpack4的消息就滿天飛了,聽說打包速度提高了很多,還有最大的噱頭是實現(xiàn)了零配置,leader有一天就吩咐我說,有時間把我們的項目也升個級唄。好嘞。

        1.x到2.x

        這次升級跨度比較大,我們是從webpack1.x升級到4.x,因為1.x與2.x相差挺大,所以第一件事,就是先升到2.x,比較大的改動就是loader的配置方式

        // 1.x
        preLoaders: [
         {
         test: /\.vue$/,
         loader: 'eslint',
         exclude: /node_modules/
         }, {
         test: /\.js$/,
         loader: 'eslint',
         exclude: /node_modules/
         }
        ],
        loaders: [
         { test: /\.vue$/, loader: 'vue' },
         { test: /\.json$/, loader: 'json' },
         { test: /\.html$/, loader: 'html' },
        ...
        ]
        //2.x
        module: {
         rules: [
         {
         test: /.vue$/,
         use: 'eslint-loader',
         enforce: 'pre', // 對應(yīng)1.x的preLoaders
         exclude: /node_modules/
         }, {
         test: /.js$/,
         use: 'eslint-loader',
         enforce: 'pre',
         exclude: /node_modules/
         },
         { test: /\.vue$/, use: 'vue-loader' },
         { test: /\.json$/, use: 'json-loader' },
         { test: /\.html$/, use: 'html-loader' },
         ...
         ]
        },
        

        而且loader一定要寫完整,vue-loader如果只寫vue會報錯。loader還可以通過options進行配置。

        {
         loader: 'css-loader',
         options: {
         autoprefixer: false
         }
        }
        

        舊版的鏈?zhǔn)秸{(diào)用也用數(shù)組替代。

        1.x

        style!postcss!less

        2.x

         use: [
         "style-loader",
         "css-loader",
         "less-loader"
         ]

        webpack2.x默認(rèn)支持es6的模塊,所以在編譯時候沒有必要將它們先轉(zhuǎn)換CommonJS模塊再處理,babel-preset-es2015-webpack已經(jīng)支持不轉(zhuǎn)換模塊中的importexport,只需要設(shè)置.babelrc

        "presets": [
         ["es2015", { "modules": false }]
        ]

        另外就是插件的升級,運行時哪個插件報錯就升級哪個插件,屢試不爽。

        2.x到4.x

        第一步:版本升級

        1. 不再支持node 4,可以直接升級到8.x版本
        2. webpack升級
        npm install webpack@4 --save
        
        npm install webpack-cli --save // 不要忘記這一點,用來啟動webpack的
        

        插件升級,同理,哪個報錯就升級哪個,除了html-webpack-plugin用下面的方法升級,原因是作者還未來得及升級

        npm i webpack-contrib/html-webpack-plugin --save-dev

        extract-text-webpack-plugin只有最新的beta版本才支持,所以npm install extract-text-webpack-plugin@next --save-dev

        第二步 運行命令中添加 --mode development--mode production

        PS:雖然說webpack 4是零配置,入口默認(rèn)是src/index.js,出口是dist/,但由于項目是多頁面的,所以這一步并沒有省略,根據(jù)實際情況來。

        第三步 移除CommonsChunkPlugin

        //替代方案
        module: {
         rules: [
         ...
         ]
        },
        optimization: {
         splitChunks: {
         chunks: "all", // 必須三選一:'initial' | 'all' | 'async'
         minSize: 0, 
         minChunks: 1,
         maxAsyncRequests: 1,
         maxInitialRequests: 1,
         name: () => {},
         cacheGroups: {
         vendor: {
         chunks: 'all',
         test: /node_modules/, // 正則規(guī)則驗證,如果符合就提取chunks
         name: "vendor" // 要緩存的分割出來的chunk名稱
         },
         default: {
         chunks: 'all',
         name: 'commons',
         reuseExistingChunks: true
         }
         }
         }
        }
        
        

        因為多個頁面,所以結(jié)合了html-webpack-plugin

        new HtmlWebpackPlugin({
         template: 'index.html',
         chunks: ['vendor', 'commons', 'index']
         })
        

        剛開始一直出錯,是因為我沒有復(fù)寫default,也沒有default:false,所以其實默認(rèn)配置有將所有的模塊的公共部分分離到某個文件中,但我在HtmlWebpackPlugin中的chunks中又沒有添加,所以要么覆寫原來的默認(rèn)配置,要么就關(guān)閉默認(rèn)配置。

        第四步:配置postcss autoprefixer

        在根目錄下創(chuàng)建一個文件`postcss.config.js`

        module.exports = {
         plugins: [
         require('postcss-inline-svg')({
         removeFill: false
         }),
         require('postcss-pxtorem')({
         replace: process.env.NODE_ENV === 'production',
         rootValue: 750 / 16,
         minPixelValue: 1.1,
         propWhiteList: [],
         unitPrecision: 5
         }),
         require('autoprefixer')({browsers: ['iOS>7', 'Android>4']})
         ]
        };
        
        ...
         {
         test: /\.(css|less)$/,
         use: ExtractTextPlugin.extract({
         fallback: 'style-loader',
         use:[{
         loader: 'css-loader',
         options: {
         autoprefixer: false
         }
         },
         {
         loader: 'postcss-loader',
         options: {
         sourceMap: true
         }
         },
         {
         loader: 'less-loader',
         options: {
         relativeUrls: true
         }
         }]
         })
         },
        ...
        
        

        第五步:不需要UglifyJsPlugin插件

        只需要設(shè)置optimization.minimize: true就行,production mode下面自動為true

        以上只是在原有項目的基礎(chǔ)上對webpack 4的升級,還有一些特性并沒有用到,所以沒有提及,比如sideEffectsjavascript/auto javascript/esm javascript/dynamicwebassembly/experimental等等,有機會再去探索。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        webpack4的遷移的使用方法

        webpack4的遷移的使用方法:感覺是突然之間,webpack4的消息就滿天飛了,聽說打包速度提高了很多,還有最大的噱頭是實現(xiàn)了零配置,leader有一天就吩咐我說,有時間把我們的項目也升個級唄。好嘞。 1.x到2.x 這次升級跨度比較大,我們是從webpack1.x升級到4.x,因為1.x與2.x相差
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 全黄A免费一级毛片| 狠狠色香婷婷久久亚洲精品| 人人爽人人爽人人片A免费| 日本无卡码免费一区二区三区| 亚洲一卡2卡3卡4卡国产网站 | 亚洲中文字幕乱码一区| 亚洲人成免费电影| 精品亚洲成A人无码成A在线观看 | 日韩一区二区三区免费体验| 亚洲日本va一区二区三区| 成人毛片免费播放| 日韩亚洲人成网站| 亚洲人成人网站在线观看| 国产免费伦精品一区二区三区 | 和日本免费不卡在线v| 亚洲成_人网站图片| 日韩一区二区三区免费体验| 午夜亚洲国产理论片二级港台二级| 国产成人高清精品免费软件| 特级毛片免费播放| 亚洲午夜国产精品无码老牛影视 | 羞羞视频网站免费入口| 亚洲欧洲自拍拍偷精品 美利坚| 国产一二三四区乱码免费| 亚洲国产一区二区三区青草影视| 91久久精品国产免费一区| 亚洲一区欧洲一区| 亚洲精品无码99在线观看| 国产一区二区免费视频| 亚洲av永久无码精品天堂久久| 国产精品色午夜视频免费看| 国产高清对白在线观看免费91| 亚洲福利在线视频| 女人18特级一级毛片免费视频| 四虎精品免费永久免费视频| 亚洲一区二区三区首页| 四虎影视www四虎免费| 天黑黑影院在线观看视频高清免费 | 亚洲情A成黄在线观看动漫软件| 国产成人免费一区二区三区| 久久精品免费观看|