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

webpack4的遷移的使用方法

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

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

1.x到2.x

這次升級(jí)跨度比較大,我們是從webpack1.x升級(jí)到4.x,因?yàn)?.x與2.x相差挺大,所以第一件事,就是先升到2.x,比較大的改動(dòng)就是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', // 對(duì)應(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會(huì)報(bào)錯(cuò)。loader還可以通過(guò)options進(jìn)行配置。

{
 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的模塊,所以在編譯時(shí)候沒有必要將它們先轉(zhuǎn)換CommonJS模塊再處理,babel-preset-es2015-webpack已經(jīng)支持不轉(zhuǎn)換模塊中的importexport,只需要設(shè)置.babelrc

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

另外就是插件的升級(jí),運(yùn)行時(shí)哪個(gè)插件報(bào)錯(cuò)就升級(jí)哪個(gè)插件,屢試不爽。

2.x到4.x

第一步:版本升級(jí)

  1. 不再支持node 4,可以直接升級(jí)到8.x版本
  2. webpack升級(jí)
npm install webpack@4 --save

npm install webpack-cli --save // 不要忘記這一點(diǎn),用來(lái)啟動(dòng)webpack的

插件升級(jí),同理,哪個(gè)報(bào)錯(cuò)就升級(jí)哪個(gè),除了html-webpack-plugin用下面的方法升級(jí),原因是作者還未來(lái)得及升級(jí)

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

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

第二步 運(yùn)行命令中添加 --mode development--mode production

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

第三步 移除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ī)則驗(yàn)證,如果符合就提取chunks
   name: "vendor"   // 要緩存的分割出來(lái)的chunk名稱
  },
  default: {
   chunks: 'all',
   name: 'commons',
   reuseExistingChunks: true
  }
 }
 }
}

因?yàn)槎鄠€(gè)頁(yè)面,所以結(jié)合了html-webpack-plugin

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

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

第四步:配置postcss autoprefixer

在根目錄下創(chuàng)建一個(gè)文件`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下面自動(dòng)為true

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

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

相關(guān)文章

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

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

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

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

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

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

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

    JAVASCRIPT車架號(hào)識(shí)別/驗(yàn)證函數(shù)代碼 汽車車架號(hào)驗(yàn)證程序

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論

宜都市| 五华县| 汤阴县| 新兴县| 综艺| 星子县| 抚远县| 威远县| 新干县| 望都县| 婺源县| 连江县| 浦江县| 林周县| 忻州市| 满城县| 通化县| 韶关市| 武冈市| 信宜市| 绥中县| 惠东县| 苏尼特右旗| 来宾市| 河间市| 久治县| 大余县| 蒲江县| 沙田区| 四会市| 寿阳县| 冕宁县| 临洮县| 鹤峰县| 康保县| 台南县| 永兴县| 敦煌市| 大方县| 三门峡市| 海口市|