關於vue的npm run dev和npm run build

来源:http://www.cnblogs.com/moneyss/archive/2017/06/30/7098401.html
-Advertisement-
Play Games

指令分析 package.json裡面 "dev": "node build/dev-server.js", "build": "node build/build.js", 意思:運行”npm run dev”的時候執行的是build/dev-server.js文件, 運行”npm run buil ...


├─build
│   ├─build.js
│   ├─check-versions.js
│   ├─dev-client.js
│   ├─dev-server.js
│   ├─utils.js
│   ├─vue-loader.conf.js
│   ├─webpack.base.conf.js
│   ├─webpack.dev.conf.js
│   ├─webpack.prod.conf.js
│   └─webpack.test.conf.js
├─config
│   ├─dev.env.js
│   ├─index.js
│   ├─prod.env.js
│   └─test.env.js
├─...
└─package.json
以上是關於bulid與run的所有文件

指令分析

package.json裡面

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

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

 

意思:運行”npm run dev”的時候執行的是build/dev-server.js文件,

運行”npm run build”的時候執行的是build/build.js文件。

build文件夾分析

build/dev-server.js

npm run dev 執行的文件build/dev-server.js文件,執行了:

檢查node和npm的版本
引入相關插件和配置
創建express伺服器和webpack編譯器
配置開發中間件(webpack-dev-middleware)和熱重載中間件(webpack-hot-middleware)
掛載代理服務和中間件
配置靜態資源
啟動伺服器監聽特定埠(8080)
自動打開瀏覽器並打開特定網址(localhost:8080)

說明: express伺服器提供靜態文件服務,不過它還使用了http-proxy-middleware,一個http請求代理的中間件。前端開發過程中需要使用到後臺的API的話,可以通過配置proxyTable來將相應的後臺請求代理到專用的API伺服器。

build/webpack.base.conf.js

dev-server依賴的webpack配置是webpack.dev.conf.js文件,

測試環境下使用的是webpack.prod.conf.js

webpack.dev.conf.js中又引用了webpack.base.conf.js

webpack.base.conf.js主要完成了下麵這些事情:

  1. 配置webpack編譯入口
  2. 配置webpack輸出路徑和命名規則
  3. 配置模塊resolve規則
  4. 配置不同類型模塊的處理規則

這個配置裡面只配置了.js、.vue、圖片、字體等幾類文件的處理規則,如果需要處理其他文件可以在module.rules裡面配置。

build/webpack.dev.conf.js

在webpack.base.conf的基礎上增加完善了開發環境下麵的配置,主要包括下麵幾件事情:

將hot-reload相關的代碼添加到entry chunks
合併基礎的webpack配置
使用styleLoaders
配置Source Maps
配置webpack插件

build/check-versions.js和build/dev-client.js

最後是build文件夾下麵兩個比較簡單的文件,

dev-client.js似乎沒有使用到,代碼也比較簡單,這裡不多講。

check-version.js完成對node和npm的版本檢測

build/utils.js和build/vue-loader.conf.js

webpack配置文件中使用到了utils.js和vue-loader.conf.js這兩個文件,utils主要完成下麵3件事:

配置靜態資源路徑
生成cssLoaders用於載入.vue文件中的樣式
生成styleLoaders用於載入不在.vue文件中的單獨存在的樣式文件


vue-loader.conf則只配置了css載入器以及編譯css之後自動添加首碼。

build/build.js

構建環境下的配置,

build.js主要完成下麵幾件事:

loading動畫
刪除創建目標文件夾
webpack編譯
輸出信息

build/webpack.prod.conf.js

構建的時候用到的webpack配置來自webpack.prod.conf.js,該配置同樣是在webpack.base.conf基礎上的進一步完善。主要完成下麵幾件事情:

合併基礎的webpack配置
使用styleLoaders
配置webpack的輸出
配置webpack插件
gzip模式下的webpack插件配置
webpack-bundle分析
說明: webpack插件裡面多了醜化壓縮代碼以及抽離css文件等插件。

config文件夾分析

config/index.js

config文件夾下最主要的文件就是index.js了,

在這裡面描述了開發和構建兩種環境下的配置,前面的build文件夾下也有不少文件引用了index.js裡面的配置。

config/dev.env.js、config/prod.env.js和config/test.env.js

這三個文件就簡單設置了環境變數而已,沒什麼特別的。

這是webpack的基本入門,webpack還有很多插件,還需要去探索

後面寫這幾個文件的源碼解釋。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 項目Gradle Errer:Network is unreachable: connect 同時還有as的 報錯 Internal HTTP server disabled: Cannot start internal HTTP server. Git integration, JavaScrip ...
  • 1-給項目添加git git init 2-查詢當前狀態,(紅色顯示的為在工作區,綠色為暫緩區) git status 3-提交到暫緩區 git add . 4-提交到本地倉庫('xxxx'裡面為註釋) git commit -m 'xxxx' 5-查看關聯的遠程代碼倉庫(如沒有 則為空) git ...
  • 為了代碼重用,我們首先封裝一個類。這個類是HttpUtil HttpUtil.java 接著老規矩,寫一個實體類,裡面包含get/set方法,為了方便這裡命名為App.java App.java 最後寫MainActivity.java 同時為了代碼的優化,和為了UI線程操作不出毛病,可以這樣寫。 ...
  • 最近被同行的一個朋友問到一個問題“UIScrollerview上添加子控制項,給子控制項約束好佈局之後,還需要給scrollerview重新設置contentsize嗎?”於是想到了我自己曾經著手的一個項目,有一個界面就用到了scrollerView,裡面添加了子控制項,我記得當時scrollerView ...
  • 1.引言 & 160;& 160;& 160;& 160;本篇將介紹音頻播放頁面的設計情況,也希望能將自己的心得與大家分享。 2.設計情況 2.1 總體設計 & 160;& 160;& 160;& 160;XAML頁面如下: 在這裡我將這個頁面分成三行,第二行的高度為40,第三行的高度為Auto,其 ...
  • 相信會碰到很多類似的需求,一個列表控制項,然後控制項上方的一個頭部需要自定義,這樣就不好有時候也不能加在列表控制項的頭部了,那必須得嵌套一層scrollview了,沒毛病,那麼一般的列表控制項都是有上拉下拉的操作,而且一般也是在 github 上找尋一個收藏量高的 來做為一個全局通用的上下拉控制項,這裡問題就 ...
  • [What's New in iOS 8.x](https://developer.apple.com/library/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS8.html#//apple_ref/doc/uid/TP40014205-S ...
  • 問到tableView有哪些優化的方法,想必很多人會說到,圖片儘量不要圓角處理,特別註意的是,不是說這裡的圖片不能圓角顯示,只是說不能使用setCornerRadiusi對imageview的layer進行圓角處理,網上的解釋是,通過設置layer的屬性,實現圓角,在iOS9以前這種設置可能會觸發離 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...