vue2遷移到vite[保姆級教程]
- 使用vue CLI創建項目
- 進行vite遷移詳細步驟
- 1. 安裝 Vite 和 Vue 2 支持插件
- 2. 創建 vite.config.js
- 3. 修改 package.json 腳本
- 4. 創建 index.html
- 5. 確保 main.js 正確引入
- 6. 處理靜態資源
- 7. 構建優化(可選)
- 8. 啟動項目
- 常見問題解決
- 拓展:徹底告別 Webpack
將
Vue 2
項目遷移到Vite
是一個非常明智的選擇,因為 Vite 提供了更快的啟動速度和熱更新。不過,由于 Vite 原生支持的是 Vue 3,因此需要一些額外配置來支持 Vue 2。
本文將使用一個干凈的vue2 CLI創建項目進行演示,你也可按照以下步驟進行操作:
使用vue CLI創建項目
使用 Vue CLI
創建 Vue 2 + JS 項目:vue create 項目名稱
,以下截圖為創建項目時的具體選項:
項目創建完成后,接下來對這個項目進行vite遷移
進行vite遷移詳細步驟
1. 安裝 Vite 和 Vue 2 支持插件
npm install --save-dev vite vite-plugin-vue2
如果你使用了 JSX,再加:
npm install --save-dev @vitejs/plugin-vue2-jsx
2. 創建 vite.config.js
在項目根目錄創建 vite.config.js:
// vite.config.js
import { defineConfig } from 'vite'
// import vue2 from 'vite-plugin-vue2' // 錯誤寫法:因為它沒有 module.exports = function() {} 這種默認導出
import { createVuePlugin } from 'vite-plugin-vue2' // 正確寫法
import { resolve } from 'path'export default defineConfig({plugins: [createVuePlugin() // 啟用 Vue 2 支持],// 別名配置(和 Vue CLI 一致)resolve: {alias: {'@': resolve(__dirname, 'src'),'@components': resolve(__dirname, 'src/components'),'@views': resolve(__dirname, 'src/views')// 可根據需要添加更多}},// 開發服務器配置server: {host: '0.0.0.0', // 允許局域網訪問port: 3000, // 默認端口open: true, // 啟動時自動打開瀏覽器proxy: {// 如果有 API 接口需要代理,例如:// '/api': {// target: 'http://localhost:8080',// changeOrigin: true,// rewrite: (path) => path.replace(/^\/api/, '')// }}},// 構建輸出目錄(與 Vue CLI 一致)build: {outDir: 'dist',assetsDir: 'static' // 資源文件夾},// SCSS 全局變量注入(可選,非常實用)css: {preprocessorOptions: {scss: {// 引入全局變量和 mixin// additionalData: `// @import "@/styles/variables.scss";// @import "@/styles/mixins.scss";// `}}}
})
3. 修改 package.json 腳本
替換原來的 vue-cli-service 命令:
"scripts": {"serve": "vue-cli-service serve","build:serve": "vue-cli-service build","vite": "vite","build": "vite build","preview": "vite preview","lint": "vue-cli-service lint"
}
拓展:可以使用
npm run serve
,項目遷移完成后可自行選擇是否卸載webpack,卸載可以減少項目體積,
卸載命令:npm uninstall @vue/cli-service
,執行后,你就無法再使用 webpack 啟動項目了。
具體可閱讀下文:徹底告別 Webpack
4. 創建 index.html
Vite 需要一個入口index.html
文件放在 public/
或項目根目錄
(推薦)。
<!-- 項目根目錄 -->
<!-- index.html -->
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Vue 2 + Vite</title>
</head>
<body>
<div id="app"></div>
<!-- 關鍵:使用 type="module" 引入 main.js -->
<script type="module" src="/src/main.js"></script>
</body>
</html>
? 注意:
<script type="module" src="/src/main.js"></script>
是關鍵,Vite 通過它啟動應用。- 不需要手動引入 Vue 或其他庫,由打包系統處理。
5. 確保 main.js 正確引入
你的 src/main.js 應該類似這樣:(通常無需改)
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'// 如果你使用了 Element UI、Vue Router 等,也需要在這里引入Vue.config.productionTip = falsenew Vue({router,store,render: h => h(App)
}).$mount('#app')
6. 處理靜態資源
- 將
public
下的靜態資源保留。 src/assets
中的資源可以通過@/assets/xxx
引用。
7. 構建優化(可選)
如果你使用了 Vuex
、Vue Router
,無需更改,它們在 Vue 2
中仍然可用。
8. 啟動項目
npm run vite
瀏覽器自動打開,頁面正常顯示 ?
你現在可以愉快地享受 Vite 帶來的 飛快啟動 和 極速熱更新 了!?
如果后續遇到路由、靜態資源、環境變量等問題,也歡迎提問!
常見問題解決
Vue 2 不支持 <script setup>
:除非你使用unplugin-vue2-script-setup
插件。
兼容性問題:某些依賴可能不兼容 ESM
,可在 vite.config.js
中配置 optimizeDeps
或 resolve.alias
。
環境變量:Vite
使用 import.meta.env
,而不是 process.env
。你可以通過 .env
文件定義。
推薦 .env
示例:
創建 .env.development文件:
# .env.development
VITE_APP_API_URL=http://localhost:3000/api
創建 .env.production文件:
# .env.production
VITE_APP_API_URL=https://api.example.com
? 提示:Vite 只會暴露 VITE_ 開頭的變量。
在代碼中使用:
console.log(import.meta.env.VITE_APP_API_URL)
拓展:徹底告別 Webpack
當你執行:
npm uninstall @vue/cli-service
之后,你就 無法再使用 webpack 啟動項目了。
🔍 詳細解釋
1. @vue/cli-service
是什么?
它是 Vue CLI 的核心運行時,提供了以下命令:
npm run serve
→ 啟動 Webpack 開發服務器npm run build
→ 使用 Webpack 打包項目npm run lint
這些功能都由@vue/cli-service
內部集成的 Webpack、Babel、ESLint 等工具提供支持。
2. 卸載后會發生什么?
操作 | 結果 |
---|---|
npm uninstall @vue/cli-service | 刪除了 Webpack 構建系統 |
執行 npm run serve | 報錯:vue-cli-service: command not found |
Webpack 功能 | 完全消失 |
3.卸載它有什么好處?
好處 | 說明 |
---|---|
🔽 減少 node_modules 體積 | @vue/cli-service 及其依賴很大(~100MB+) |
🔐 減少依賴沖突風險 | 少一個大型構建系統,項目更干凈 |
🧹 明確技術棧 | 表明你已正式切換到 Vite,避免團隊混淆 |
? 提升安裝速度 | npm install 更快 |
🧹 清理殘留配置(可選)
為了“斷干凈”,你可以刪除或保留以下文件:
文件 | 是否可以刪除 | 說明 |
---|---|---|
babel.config.js | ? 可刪 | Vite 也支持 Babel,但通常不需要單獨配置 |
vue.config.js | ? 可刪 | Vue CLI 的配置,Vite 不讀取它 |
public/index.html | ? 不要刪 | 如果你還用它作為靜態資源目錄 |
.browserslistrc | ? 可留 | 影響 Babel 和 PostCSS,Vite 也會用到 |
💡 建議保留 .browserslistrc,因為它影響 CSS 兼容性處理。
🔄 如果你想臨時切回 Webpack
萬一哪天你想再用 Webpack,可以重新安裝:
npm install --save-dev @vue/cli-service
然后就能繼續使用:
npm run serve # Webpack 啟動
npm run build # Webpack 打包
但注意:兩個構建系統共存可能帶來混淆,建議 專注使用 Vite。
最后:如果你遇到具體錯誤,歡迎貼出,我可以幫你針對性解決!