成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

webpack4如何遷移-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)webpack4如何遷移的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來(lái)看看吧。

在彝良等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),網(wǎng)絡(luò)營(yíng)銷推廣,成都外貿(mào)網(wǎng)站建設(shè),彝良網(wǎng)站建設(shè)費(fèi)用合理。

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還可以通過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/dynamic、webassembly/experimental等等,有機(jī)會(huì)再去探索。

感謝各位的閱讀!關(guān)于“webpack4如何遷移”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

網(wǎng)頁(yè)題目:webpack4如何遷移-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://jinyejixie.com/article32/dhossc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、建站公司定制網(wǎng)站、企業(yè)網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
青浦区| 义乌市| 云浮市| 女性| 渝北区| 佳木斯市| 北京市| 定西市| 嘉峪关市| 固安县| 通渭县| 平武县| 宜君县| 永安市| 鄂温| 开江县| 巴里| 砀山县| 库尔勒市| 洛川县| 高邮市| 丘北县| 新余市| 泸州市| 精河县| 威宁| 含山县| 南安市| 上杭县| 建瓯市| 万载县| 竹溪县| 莱西市| 梅河口市| 康平县| 安图县| 九龙城区| 寻甸| 潮州市| 竹山县| 黔西|