1. 程式人生 > >如何快速把 Vue 專案升級到 webpack3

如何快速把 Vue 專案升級到 webpack3

       由於 webpack3升級後,新增了 Scope Hositing(作用域提升) 功能,據說是對 js的效能提升很大。因此,我們做了一個測試對比,就是 webpack3和 webpack1/2 的效能對比,如下:

測試目標

       以下資料是2天隨機時段3部手機各2組資料,每組資料都是30次取平均值,為了測試js的解析能力,排除了網路請求的影響

  • 平臺:M5 Note Build/MRA58K

  • 系統:android 6.0

時間 before after
2017-08-10 13:00 920 511
2017-08-11 11:10 915 543

平均提升:42.55%

  • 平臺:MI 3C Build/KTU84P

  • 系統:Android 4.4.4

時間 before after
2017-08-13 15:00 648 365
2017-08-14 17:10 648 377

平均提升:42.74%

  • 平臺:SM901 Build/MXB48T

  • 系統:Android 6.0.1

時間 before after
2017-08-13 18:00 593 393
2017-08-14 15:50 575 392

平均提升:32.75%

       以上資料,提升比例雖然有所差距,但是,最後的結果,都表明......你應該毫不猶豫的升級你的 webpack了。

       問題來了,如何能快速且平滑的升級你的 webpack呢?這是我們今天的重點,前面都是鋪墊,哈哈

升級webpack3

       今天只以 vue專案來舉例, vue-cli升級 w3簡直不要太快哦,而且也有專案上線成功了,並且線上測試與本地測試結果基本一致。如果使用的是 react專案,用的又是腳手架的話,那麼恭喜你,跟 vue-cli一樣快,可參考 vue-cli的升級方式,如果你自己寫的 w2的話加一個配置(可以體驗跟 vue-cli一樣的升級體驗哦),然後升級相應擴充套件:

  1. new webpack.optimize.ModuleConcatenationPlugin()

       如果是自己寫的 w1的話,對不起,你只能去哭著對比 w3和 w1的語法相容修改配置檔案了,網上有詳細的語法對比,這裡就不詳述了

步驟

  • 下載最新的的 vue-cli,初始化一個新專案 tow3

  • 把你的 src 目錄下的業務程式碼拷貝到新建的 tow3 專案中 src 路徑替換了

  • 把 config/index.js 更細成你自己專案的,這裡需要注意的是, webpack3此檔案的配置和 webpack12都不太一樣,所以仔細比對,只修改一樣的配置項

  • 在 build/webpack.prod.conf.js 配置裡檔案裡的加上如下配置,這是 webpack3升級的最核心功能(加在這個檔案時因為我生產環境不需要),如果本身打包策略做了優化,那麼就需要對造 webpack3的最新語法進行修改遷移了

  1.    plugins: [

  2.        new webpack.optimize.ModuleConcatenationPlugin()

  3.    ]

  • npm run dev & npm run build 缺什麼包就裝什麼包,如圖 

       然後,就是辣麼簡單,ok了

       壯士,請留步。。。其實還有

       每個人安裝過程中都可能遇到不同的錯,甚至是不顯示錯誤資訊,讓人蛋疼又心碎,辣麼如何進行科學的報錯呢?其實很簡單,如下

錯誤除錯

       在 build/webpack.dev.conf.js 裡有自帶錯誤除錯的外掛

   new webpack.HotModuleReplacementPlugin(),  

   new FriendlyErrorsPlugin(

       但它並不能滿足我們,我升級過程中就發現,很多bug只出現了個 error,不出現錯誤資訊,這讓我如何除錯啊,臣妾完全做不到啊

       我們只需要修改一行配置:

   new webpack.HotModuleReplacementPlugin(),

   new FriendlyErrorsPlugin({

     onErrors: function (severity, errors) {

       console.log(errors);

     }

   })

       常見錯誤也就是 npm包版本不匹配,升級最新的包就行,推薦工具 npm-check,批量檢查更新,簡直不要太好用

       不過凡事都有例外,錯誤也一樣,升級過程中遇到了如下錯誤: 

 

       FQ搜了半天,發現是 "vue":"^2.3.4" 版本對應的 vue-loader版本不對,最好是 >vue-[email protected]^7.0.0&&<vue-[email protected]^12.0.0

       所以,剩下很大一部分錯誤就是框架和編譯器的版本對應問題的鍋了,多FQ,多google,讓一切難題變得不難。

       哈哈,有了這些就算再狡猾的妖精,也逃不過老孫的金箍棒了。

       好了,請開始你的表演吧。

最後

       贈送一份 package.json的配置,此配置乃最終相容版,eslint好煩,我把它註釋了,目前已上線,執行良好

{

 "name": "w3",

 "version": "1.0.0",

 "description": "w3",

 "author": "yuanxiaolong",

 "private": true,

 "scripts": {

   "dev": "node build/dev-server.js",

   "start": "node build/dev-server.js",

   "build": "node build/build.js",

   "lint": "eslint --ext .js,.vue src"

 },

 "dependencies": {

   "vue": "^2.0.0",

   "vue-resource": "0.8.0",

   "vue-router": "^2.0.0",

   "vuex": "^2.0.0"

 },

 "devDependencies": {

   "autoprefixer": "^7.1.2",

   "babel-core": "^6.25.0",

   "babel-loader": "^7.1.1",

   "babel-plugin-component": "^0.10.0",

   "babel-plugin-transform-class-constructor-call": "^6.24.1",

   "babel-plugin-transform-object-assign": "^6.22.0",

   "babel-plugin-transform-runtime": "^6.23.0",

   "babel-preset-es2015": "^6.24.1",

   "babel-preset-stage-2": "^6.24.1",

   "babel-register": "^6.24.1",

   "chalk": "^2.1.0",

   "connect-history-api-fallback": "^1.3.0",

   "copy-webpack-plugin": "^4.0.1",

   "css-loader": "^0.28.0",

   "cssnano": "^3.10.0",

   "eventsource-polyfill": "^0.9.6",

   "express": "^4.14.1",

   "extract-text-webpack-plugin": "^3.0.0",

   "file-loader": "^0.11.1",

   "friendly-errors-webpack-plugin": "^1.1.3",

   "html-webpack-inline-source-plugin": "0.0.9",

   "html-webpack-plugin": "^2.30.1",

   "http-proxy-middleware": "^0.17.3",

   "less": "^2.7.2",

   "less-loader": "^4.0.5",

   "opn": "^5.1.0",

   "optimize-css-assets-webpack-plugin": "^2.0.0",

   "ora": "^1.3.0",

   "path": "^0.12.7",

   "rimraf": "^2.6.1",

   "semver": "^5.3.0",

   "shelljs": "^0.7.8",

   "uglifyjs-webpack-plugin": "^1.0.0-beta.2",

   "url-loader": "^0.5.8",

   "vue-loader": "^12.2.2",

   "vue-style-loader": "^3.0.1",

   "vue-template-compiler": "^2.4.2",

   "webpack": "^3.5.3",

   "webpack-bundle-analyzer": "^2.2.1",

   "webpack-dev-middleware": "^1.12.0",

   "webpack-hot-middleware": "^2.18.2",

   "webpack-merge": "^4.1.0"

 },

 "engines": {

   "node": ">= 4.0.0",

   "npm": ">= 3.0.0"

 },

 "browserslist": [

   "last 11 iOS versions"

 ]

}

如果你喜歡我們的文章,關注我們的公眾號和我們互動吧。

我們是轉轉FE團隊,歡迎大家關注公眾號 大轉轉FE 。更多的瞭解我們

相關推薦

如何快速 Vue 專案升級webpack3

       由於 webpack3升級後,新增了 Scope Hositing(作用域提升) 功能,據說是對 js的效能提升很大。因此,我們做了一個測試對比,就是 webpack3和 webpack1/2 的效能對比,如下: 測試目標        以下資料是2天隨機時段

快速搭建vue專案從零開始

最近公司一直在使用vue來做專案,今天就把一些使用vue的方法分享一下,希望能對大家有所幫助。同時,有說的不對的地方,歡迎大家能夠指出。 一、使用vue-cli腳手架從零開始搭建 首先要確定自己電腦上已經安裝了nodejs,可以使用node -v檢查一下,如果沒有安裝請訪問nodejs官網,

Vue筆記——搭建腳手架並快速建立Vue專案

現在的Vue腳手架已經升級到3.x版本,即vue-cli3。 腳手架升級之後,安裝的命令發生了變化,所以這篇文章會跟大家演示新舊版本的腳手架安裝過程。 下面的安裝過程均是在window平臺下安裝。 一、準備工作 1. 安裝node.js和npm Vue的腳手

vue cli 3.0 快速搭建vue專案

0.安裝之 npm install -g @vue/cli 檢測是否安裝成功 vue -V(大寫大寫的V) 報了倒黴的“vue不是內部外部命令,也不是可執行的程式” 這說明vue.cmd不在window系統的環境變數裡面 終端視窗 where vue.cmd找到這

HBuildervue專案打包app後請求不到資料問題

最近用VUE寫了一個webapp專案(遊計劃--https:www.uplanok.com),用HBulider打包成app用手機開啟後,資料居然請求不到,引入的阿里的iconfont字型圖示也載入不進來。互動是用axios寫的,使用了跨域代理。 放到伺服器上開啟的正常頁面

vue-cli 構建vue專案升級webpack4

原因 從前車馬慢,打包一打一上午。 在上一個專案中,打包速度的問題是個大問題,幾經優化,也沒有讓我滿意,但專案已經在線上執行,不敢輕舉妄動。現在比較輕鬆又在為新的專案做準備,webpack4 搞一發。 vue-cli 搭建專案 還是使用 vue 的自

一步步教你怎麼vue專案部署到Node伺服器上

我之前的那個demo 手把手教你用Vue2+webpack+node開發一個H5 app是部署到openshift上的,本來想以在openshift上部署為例的,但是突然發現openshift 2版本的好像不再支援註冊了,升級到3版本的好像要money了,

使用 vue-cli 3 快速建立 Vue 專案專案配置 Vue.config.js

1.使用 npm install -g @vue/cli # or yarn global add @vue/cli 檢視版本(是否安裝成功):vue -V(大寫的V) 11576163-5ebc6d418467d0c4.png 2.命令變化 Comm

vue-cli快速搭建vue專案

1.安裝node(使用6+) 2.安裝cnpm:安裝包時,記得以管理員許可權開啟cmd 3.安裝vue-cli :npm install -g vue-cli 4.建立專案:vue init webpack XX  (請確保安裝了webpack) 5.開發模

通過Vue CLI 快速建立Vue專案並部署到tomcat

前言 最近一直在寫前端,用的是JSP,但是很多人都說JSP已經過時了。既然做了幾個月的前端,那就把前端學的好一點,學點新技術,跟上潮流。感覺Vue挺火的,所以這幾天學了一下Vue,開始看的官方文件,然後直接用GitHub上比較火的專案進行學習,本地跑起來,看看

vue-cli快速生成vue專案

一、全域性安裝webpack npm install webpack -g 二、安裝node 三、全域性安裝vue-cli npm install vue-cli -g 四、生成專案  vue init webpack project_name 五、安裝依賴模組

vue-cli快速搭建vue專案並上傳github

首先我們先用vue-cli快速搭建vue專案。 假設你的電腦上已經安裝好了nodejs(如何安裝nodejs此處跳過,網上很多教程),那麼接下來就安裝vue-cli。 1、全域性安裝vue-cli,程

圖片公式轉化為文字內容。vue專案中引入MathJax.js

這是個圖片的公式,有img標籤引入。 我們想要轉成下面的效果:   在vue專案中引入MathJax.js 首先在index.html頁面  <script type="text/javascript" src="https://cdn.ma

vue 專案快速輸出微信、支付寶、百度小程式

上週,[email protected] 正式釋出,優化了資料更新效能的同時,支援了百度智慧小程式,著實激動了一把,這“可能”是目前社群裡第一個同時支援三端小程式的 vue 小程式框架。下面我們就來試試他的效果。 跟著文件走 官方文件的第一部分就是快速入門,順藤摸瓜,構建一個 megalo 專案

vue專案引入vux-ui框架詳解(快速入門)

一、新建自帶vux框架的vue專案(免配置) 1、安裝vue環境 (已安裝,跳過這一步) 2、新建基於vux的vue專案; vue init airyland/vux2 projectName //(新建專案配置已省略) cd projectName

vue腳手架的專案放在centos伺服器上執行

1.首先把vue專案用npm run build打包,預設打包後的檔案是dist,對應下圖的public 目錄: 2.建立app.js,服務端程式碼,反正這個套路來就是了 const Koa = require('koa'); const body = require('koa

《從零構建前後分離的web專案》實戰 -5分鐘快速構建炒雞規範的VUE專案骨架

初步搭建腳手架 Tips 任何不錯的開源專案都有 project-cli 腳手架、我們用它生成往往能快速配製出最佳的、理想的腳手架 我通常使用 cli 生成專案骨架再在之基礎上進行個人修改。 什麼是 CLI 命令列介面(英語:command-line interfa

vue專案文字轉換為markdown文件

最近在一個專案中,需要有使用者使用手冊功能,在這裡用markdown,採用了vue-markdown外掛。 1.下載vue-markdown $ npm i vue-markdown 2.如何使用 // 在js頁面 import VueMarkdown from 'v

升級node版本後VUE專案啟動報錯

檢視node版本: node -v 原來的node版本是8.11.3 升級後的node版本是10.13.0 啟動VUE專案 npm run dev 報錯: fs.js:129 throw new ERR_INVALID_CALLBACK(); ^ Typ

如何快速建立一個VUE專案(介紹專案結構)

建立vue專案流程 1.安裝node.js 首先檢視一下你的node.js是否安裝成功,如果安裝成功第一步可以略過。 驗證是否安裝成功 node -v #檢視nodejs版本號 比如:v8.4.0 如果未安裝,windows 在官網下載安裝包,直接安裝即可