關於vue的npm run dev和npm run build


 
├─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件事:

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


vue-loader.conf則只配置了css加載器以及編譯css之后自動添加前綴。

build/build.js

構建環境下的配置,

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

  1. loading動畫
  2. 刪除創建目標文件夾
  3. webpack編譯
  4. 輸出信息

build/webpack.prod.conf.js

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

  1. 合並基礎的webpack配置
  2. 使用styleLoaders
  3. 配置webpack的輸出
  4. 配置webpack插件
  5. gzip模式下的webpack插件配置
  6. 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還有很多插件,還需要去探索

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM