全面解析:npm 命令、package.json 結構與 Vite 詳解

全面解析:npm 命令、package.json 結構與 Vite 詳解

一、npm run devnpm run build 命令解析

1. npm run dev
  • 作用:啟動開發服務器,用于本地開發
  • 原理
    • 啟動 Vite 開發服務器
    • 提供實時熱更新(HMR)功能
    • 不生成最終打包文件,直接在內存中編譯
  • 特點
    • 極速啟動(毫秒級)
    • 按需編譯(只編譯當前訪問的模塊)
    • 完整源碼映射(方便調試)
2. npm run build
  • 作用:構建生產環境優化的應用包
  • 原理
    • 調用 Vite 的 Rollup 構建引擎
    • 執行 TypeScript 編譯、Vue 單文件組件編譯
    • 應用 Tree Shaking(移除未使用代碼)
  • 輸出
    • 生成 dist/ 目錄
    • 壓縮所有資源文件(JS、CSS、圖片)
    • 添加內容哈希到文件名(緩存優化)

二、package.json 文件深度解析

標準 Vue + Vite 項目的 package.json 示例:
{"name": "vue-project","version": "1.0.0","private": true,"scripts": {"dev": "vite","build": "vite build","preview": "vite preview","lint": "eslint . --ext .vue,.js,.ts --fix"},"dependencies": {"vue": "^3.3.0","pinia": "^2.1.0","axios": "^1.4.0"},"devDependencies": {"@vitejs/plugin-vue": "^4.0.0","@vue/eslint-config-typescript": "^11.0.0","eslint": "^8.22.0","typescript": "^5.0.0","vite": "^4.0.0","vite-plugin-eslint": "^1.8.1"},"browserslist": ["> 1%","last 2 versions","not dead"]
}
各部分詳細說明:
字段作用示例值重要說明
name項目名稱"vue-project"必須小寫,不含空格
version項目版本"1.0.0"遵循語義化版本規范
private防止誤發布true重要安全設置
scripts自定義命令見下表項目操作入口
dependencies生產依賴vue, pinia會被打包進最終代碼
devDependencies開發依賴vite, typescript只在開發時使用
browserslist瀏覽器兼容">1%"控制編譯輸出目標
scripts 詳解:
命令作用等效命令
npm run dev啟動開發服務器vite
npm run build構建生產包vite build
npm run preview本地預覽生產包vite preview
npm run lint代碼規范檢查eslint . --fix

三、Vite 深度解析

1. Vite 是什么?

Vite(法語意為"快速")是由 Vue.js 作者尤雨溪開發的下一代前端構建工具,核心特點:

  • 基于原生 ES 模塊:利用瀏覽器原生支持 ES 模塊的特性
  • 極速冷啟動:啟動時間與項目大小無關
  • 按需編譯:只編譯當前屏幕需要的模塊
  • 高效熱更新:HMR 速度極快,不受項目規模影響
2. Vite 核心架構:
瀏覽器
Vite 開發服務器
原生 ES 模塊導入
按需編譯
熱模塊替換 HMR
生產構建
Rollup 打包
Tree Shaking
代碼分割
資源優化
3. Vite 核心功能對比:
功能ViteWebpack優勢
啟動時間<1s10-60s+快 10-100 倍
HMR 更新<50ms500ms-5s即時反饋
構建方式按需編譯全量打包高效開發
配置復雜度簡單復雜零配置起步
構建工具RollupWebpack輸出更精簡
4. Vite 核心插件系統:
  • @vitejs/plugin-vue:Vue 單文件組件支持
  • @vitejs/plugin-vue-jsx:Vue JSX 支持
  • vite-plugin-eslint:集成 ESLint
  • vite-plugin-svg-icons:SVG 圖標處理
  • vite-plugin-mock:API 模擬數據

四、完整開發工作流

1. 開發階段工作流:
開發者 Vite 服務器 瀏覽器 npm run dev 發送 HTML 骨架 請求 /src/main.ts 返回原生 ES 模塊 請求 Vue 組件 實時編譯并返回 修改組件代碼 HMR 熱更新(<50ms) 開發者 Vite 服務器 瀏覽器
2. 構建階段工作流:
npm run build
讀取 vite.config.ts
啟動 Rollup 構建
編譯 TypeScript
處理 Vue SFC
優化 CSS
處理靜態資源
代碼分割
Tree Shaking
生成 dist 目錄
優化后的生產包

五、Vite 高級特性

1. 依賴預構建:
// vite.config.ts
export default defineConfig({optimizeDeps: {include: ['vue', 'pinia', 'lodash-es'],exclude: ['vue-demi']}
})
2. 環境變量處理:
# .env.development
VITE_API_BASE=/api# .env.production
VITE_API_BASE=https://api.example.com
// 代碼中使用
const apiBase = import.meta.env.VITE_API_BASE
3. 多目標構建:
// vite.config.ts
export default defineConfig({build: {lib: {entry: 'src/main.ts',name: 'MyLib',fileName: 'my-lib'},rollupOptions: {// 導出為庫時配置external: ['vue'],output: {globals: {vue: 'Vue'}}}}
})

六、最佳實踐建議

  1. 項目結構優化

    src/
    ├── assets/        # 靜態資源
    ├── components/    # 通用組件
    ├── composables/   # 組合式函數
    ├── layouts/       # 布局組件
    ├── router/        # 路由配置
    ├── stores/        # 狀態管理
    ├── views/         # 頁面組件
    ├── utils/         # 工具函數
    ├── App.vue        # 根組件
    └── main.ts        # 入口文件
    
  2. 性能優化技巧

    • 使用動態導入實現路由懶加載
    const UserProfile = () => import('./views/UserProfile.vue')
    
    • 啟用 Gzip/Brotli 壓縮
    npm install vite-plugin-compression -D
    
  3. 調試技巧

    • 使用 vite-plugin-inspect 查看中間狀態
    • 添加 --debug 參數獲取詳細日志
    npm run dev -- --debug
    

七、與傳統工具對比總結

特性ViteWebpackParcel
啟動速度?? 極快🐢 慢🚀 快
HMR 性能?? 極快🐢 慢🚀 快
配置復雜度😊 簡單😫 復雜😊 零配置
插件生態🌱 成長中🌳 成熟🌿 中等
框架支持Vue/React/Svelte 優先通用通用
生產構建Rollup(優化好)Webpack(功能強)自定義

Vite 代表了前端構建工具的新方向,特別適合現代框架如 Vue、React 的開發,通過利用瀏覽器原生 ESM 能力,徹底解決了傳統工具在大型項目中啟動慢、HMR 延遲高的痛點。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/83122.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83122.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/83122.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Oracle】TCL語言

個人主頁&#xff1a;Guiat 歸屬專欄&#xff1a;Oracle 文章目錄 1. TCL概述1.1 什么是TCL&#xff1f;1.2 TCL的核心功能 2. 事務基礎概念2.1 事務的ACID特性2.2 事務的生命周期 3. COMMIT語句詳解3.1 COMMIT基礎語法3.2 自動提交與手動提交3.3 提交性能優化 4. ROLLBACK語句…

OpenCV CUDA模塊直方圖計算------用于在 GPU 上執行對比度受限的自適應直方圖均衡類cv::cuda::CLAHE

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 cv::cuda::CLAHE 是 OpenCV 的 CUDA 模塊中提供的一個類&#xff0c;用于在 GPU 上執行對比度受限的自適應直方圖均衡&#xff08;Contrast Limi…

OpenGAN:基于開放數據生成的開放集識別

簡介 簡介&#xff1a;這次學習的OpenGAN主要學習一個思路&#xff0c;跳出傳統GAN對于判斷真假的識別到判斷是已知種類還是未知種類。重點內容不在于代碼而是思路&#xff0c;會簡要給出一個設計的代碼。 論文題目&#xff1a;OpenGAN: Open-Set Recognition via Open Data …

隨機游動算法解決kSAT問題

input&#xff1a;n個變量的k-CNF公式 ouput&#xff1a;該公式的一組滿足賦值或宣布沒有滿足賦值 算法步驟&#xff1a; 隨機均勻地初始化賦值 a ∈ { 0 , 1 } n a\in\{0,1\}^n a∈{0,1}n.重復t次&#xff08;后面會估計這個t&#xff09;&#xff1a; a. 如果在當前賦值下…

企業上線ESOP電子作業指導書系統實現車間無紙化的投入收益數據綜合分析

企業上線ESOP電子作業指導書系統實現車間無紙化的投入收益數據綜合分析 一、成本節約&#xff1a;無紙化直接降低運營成本 紙張與耗材費用銳減 o 杭州科創致遠案例&#xff1a;某汽配企業引入無紙化系統后&#xff0c;年節省紙張耗材費用超50萬元。通過電子化替代傳統紙質文檔…

高并發抽獎系統優化方案

引子 最近接觸了一個抽獎的項目&#xff0c;由于用戶量比較大&#xff0c;而且第三方提供的認證接口并發量有限&#xff0c;為了保證服務的高可用性&#xff0c;所以對高并限制發有一定的要求。經過一系列研究和討論&#xff0c;做出了以下一些優化方案。 需求分析 根據用戶量…

STM32八股【10】-----stm32啟動流程

啟動流程 1.上電復位 2.系統初始化 3.跳轉到 main 函數 啟動入口&#xff1a; cpu被清空&#xff0c;程序從0x00000000開始運行0x00000000存放的是reset_handler的入口地址0x00000000的實際位置會變&#xff0c;根據不同的啟動模式決定啟動模式分為&#xff1a; flash啟動&a…

LLMTIME: 不用微調!如何用大模型玩轉時間序列預測?

今天是端午節&#xff0c;端午安康&#xff01;值此傳統佳節之際&#xff0c;我想和大家分享一篇關于基于大語言模型的時序預測算法——LLMTIME。隨著人工智能技術的飛速發展&#xff0c;利用大型預訓練語言模型&#xff08;LLM&#xff09;進行時間序列預測成為一個新興且極具…

在VirtualBox中打造高效開發環境:CentOS虛擬機安裝與優化指南

&#x1f525;「炎碼工坊」技術彈藥已裝填&#xff01; 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 一、為何選擇VirtualBox CentOS組合&#xff1f; 對于程序員而言&#xff0c;構建隔離的開發測試環境是剛需。VirtualBox憑借其跨平臺支持&#xff08;W…

LeeCode 98. 驗證二叉搜索樹

給你一個二叉樹的根節點 root &#xff0c;判斷其是否是一個有效的二叉搜索樹。 有效 二叉搜索樹定義如下&#xff1a; 節點的左子樹只包含 小于 當前節點的數。節點的右子樹只包含 大于 當前節點的數。所有左子樹和右子樹自身必須也是二叉搜索樹。 提示&#xff1a; 樹中節…

Python簡易音樂播放器開發教程

&#x1f4da; 前言 編程基礎第一期《12-30》–音樂播放器是日常生活中常用的應用程序&#xff0c;使用Python和pygame庫可以輕松實現一個簡易的音樂播放器。本教程將詳細講解如何開發一個具有基本功能的音樂播放器&#xff0c;并解析其中涉及的Python編程知識點。 &#x1f6e…

ssh連接斷開,保持任務后臺執行——tmux

目錄 **核心用途****基礎使用方法**1. **安裝 tmux**2. **啟動新會話**3. **常用快捷鍵&#xff08;需先按 Ctrlb 前綴&#xff09;**4. **會話管理命令**5. **窗格操作進階** **典型工作流****注意事項****配置文件&#xff08;~/.tmux.conf&#xff09;** tmux&#xff08; …

3D Gaussian splatting 04: 代碼閱讀-提取相機位姿和稀疏點云

目錄 3D Gaussian splatting 01: 環境搭建3D Gaussian splatting 02: 快速評估3D Gaussian splatting 03: 用戶數據訓練和結果查看3D Gaussian splatting 04: 代碼閱讀-提取相機位姿和稀疏點云3D Gaussian splatting 05: 代碼閱讀-訓練整體流程3D Gaussian splatting 06: 代碼…

每日c/c++題 備戰藍橋杯(P1204 [USACO1.2] 擠牛奶 Milking Cows)

P1204 [USACO1.2] 擠牛奶 Milking Cows - 詳解與代碼實現 一、題目背景 三個農民每天清晨[……]&#xff08;簡要介紹題目背景&#xff0c;與官網描述類似&#xff09; 二、問題分析 輸入要求 &#xff1a;讀取 N 個農民的擠奶時間區間&#xff0c;計算兩個值&#xff1a;最…

保持本地 Git 項目副本與遠程倉庫完全同步

核心目標&#xff1a; 保持本地 Git 項目副本與 GitHub 遠程倉庫完全同步。 關鍵方法&#xff1a; 定期執行 git pull 命令。 操作步驟&#xff1a; 進入項目目錄&#xff1a; 在終端/命令行中&#xff0c;使用 cd 命令切換到你的項目文件夾。執行拉取命令&#xff1a; 運行…

Flutter 4.x 版本 webview_flutter 嵌套H5

踩坑早期版本 使用 WebView 代碼如下 import package:flutter/material.dart; import package:webview_flutter/webview_flutter.dart;class HomePage extends StatelessWidget {const HomePage({super.key});overrideWidget build(BuildContext context) {return Scaffold(ap…

rtpinsertsound:語音注入攻擊!全參數詳細教程!Kali Linux教程!

簡介 2006年8月至9月期間&#xff0c;我們創建了一個用于將音頻插入指定音頻&#xff08;即RTP&#xff09;流的工具。該工具名為rtpinsertsound。 該工具已在Linux Red Hat Fedora Core 4平臺&#xff08;奔騰IV&#xff0c;2.5 GHz&#xff09;上進行了測試&#xff0c;但預…

跑步前熱身動作

跑前熱身的核心目標是升高體溫、激活肌肉、預防損傷 &#xff0c;同時通過動態動作提升運動表現。熱身&#xff08;步驟關節→肌肉→心肺&#xff09;和針對性動作&#xff08;如抱膝抬腿&#xff09;能有效降低受傷風險&#xff0c;建議每次跑步前嚴格執行。 推薦跑前熱身動作…

GIT命令行的一些常規操作

放棄修改 git checkout . 修改commit信息 git commit --amend 撤銷上次本地commit 1、通過git log查看上次提交的哈希值 2、git reset --soft 哈希值 分支 1.創建本地分支 git branch 分支名 2.切換本地分支 git checkout mybranch&#xff1b; 3.創建一個新分支并…

RAGFlow從理論到實戰的檢索增強生成指南

目錄 前言 一、RAGFlow是什么&#xff1f;為何需要它&#xff1f; 二、RAGFlow技術架構拆解 三、實戰指南&#xff1a;從0到1搭建RAGFlow系統 步驟1&#xff1a;環境準備 步驟2&#xff1a;數據接入 步驟3&#xff1a;檢索與生成 四、優化技巧&#xff1a;讓RAGFlow更精…