最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

webpack4的遷移的使用方法

 更新時間:2018年05月25日 10:06:35   作者:__橘生淮南  
本篇文章主要介紹了webpack4的遷移的使用方法,主要介紹了如何從webpack1.x升級到4.x,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

感覺是突然之間,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默認支持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是零配置,入口默認是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,所以其實默認配置有將所有的模塊的公共部分分離到某個文件中,但我在HtmlWebpackPlugin中的chunks中又沒有添加,所以要么覆寫原來的默認配置,要么就關(guā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的升級,還有一些特性并沒有用到,所以沒有提及,比如sideEffects、javascript/auto javascript/esm javascript/dynamic、webassembly/experimental等等,有機會再去探索。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JS實現(xiàn)的簡單拖拽功能示例

    JS實現(xiàn)的簡單拖拽功能示例

    這篇文章主要介紹了JS實現(xiàn)的簡單拖拽功能,涉及javascript鼠標(biāo)事件響應(yīng)及頁面元素屬性動態(tài)操作相關(guān)技巧,需要的朋友可以參考下
    2017-03-03
  • JavaScrip簡單數(shù)據(jù)類型隱式轉(zhuǎn)換的實現(xiàn)

    JavaScrip簡單數(shù)據(jù)類型隱式轉(zhuǎn)換的實現(xiàn)

    本文主要介紹了JavaScrip簡單數(shù)據(jù)類型隱式轉(zhuǎn)換的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • JavaScript實現(xiàn)猜數(shù)字小功能

    JavaScript實現(xiàn)猜數(shù)字小功能

    本文主要介紹了JavaScript實現(xiàn)猜數(shù)字小功能,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • JAVASCRIPT車架號識別/驗證函數(shù)代碼 汽車車架號驗證程序

    JAVASCRIPT車架號識別/驗證函數(shù)代碼 汽車車架號驗證程序

    偶然中在CSDN里找到C#版的驗證程序,因此改編了一版JS版本,相信會對大家有用
    2012-01-01
  • 使用Visual?Studio?2022開發(fā)前端的詳細教程

    使用Visual?Studio?2022開發(fā)前端的詳細教程

    這篇文章主要介紹了使用Visual?Studio?2022開發(fā)前端,在瀏覽器中可以使用CDN源引用需要的客戶端庫,可如果在企業(yè)內(nèi)網(wǎng)使用,無法訪問CDN源時,需要將客戶端庫下載到本地使用,需要的朋友可以參考下
    2022-05-05
  • Three.js后期處理效果(發(fā)光描邊OutlinePass)

    Three.js后期處理效果(發(fā)光描邊OutlinePass)

    這篇文章主要給大家介紹了關(guān)于Three.js后期處理效果(發(fā)光描邊OutlinePass)的相關(guān)資料,Three js 開發(fā)的一些知識整理,方便后期遇到類似的問題,能夠及時查閱使用,需要的朋友可以參考下
    2024-01-01
  • Bootstrap每天必學(xué)之按鈕

    Bootstrap每天必學(xué)之按鈕

    Bootstrap每天必學(xué)之按鈕組工具欄,本文講解的就是大家最為常用的按鈕組工具欄,感興趣的小伙伴們可以參考一下
    2015-11-11
  • 微信小程序媒體組件詳解(視頻,音樂,圖片)

    微信小程序媒體組件詳解(視頻,音樂,圖片)

    這篇文章主要為大家詳細介紹了微信小程序媒體組件的相關(guān)資料,包括視頻,音樂,圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 微信小程序中獲取設(shè)備信息的方法

    微信小程序中獲取設(shè)備信息的方法

    這篇文章主要給大家介紹了關(guān)于微信小程序中獲取設(shè)備信息的相關(guān)資料,微信小程序是一種在微信平臺上運行的應(yīng)用程序,它具有輕量化、便捷性和高兼容性的特點,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • 詳解JavaScript如何實現(xiàn)并發(fā)控制的Promise隊列調(diào)度器

    詳解JavaScript如何實現(xiàn)并發(fā)控制的Promise隊列調(diào)度器

    Promise是JavaScript中一種處理異步操作的技術(shù),提供了一種更優(yōu)雅的方式來處理并發(fā)任務(wù)和串行化操作,本文主要介紹了實現(xiàn)并發(fā)控制的Promise隊列調(diào)度器的方法,需要的可以參考一下
    2023-07-07

最新評論

威海市| 巴彦县| 应用必备| 石楼县| 越西县| 宜宾市| 盐边县| 石景山区| 洛隆县| 隆昌县| 西安市| 大宁县| 秭归县| 宁明县| 舟曲县| 咸阳市| 虞城县| 沙坪坝区| 黎平县| 浦东新区| 聂拉木县| 南丰县| 宁化县| 宜良县| 汤阴县| 浦东新区| 卓尼县| 南皮县| 屏南县| 文水县| 兰溪市| 泽普县| 义马市| 徐汇区| 安福县| 彭州市| 富顺县| 龙陵县| 岢岚县| 那曲县| 阿勒泰市|