[Vite] Vite創建Vue專案
TL;DR
Vite簡介,以及使用Vite快速創建一個乾淨的Vue專案
參考資料
相關連結
- Vite | Official
- create-vue | Github
- vue router Different History modes | Official
Vite簡介
Vite與Webpack相同,都會將資料彙整之後再編譯出來。
差別在於Vite只會將有修改的地方編譯,再透過import的方式匯入。而Webpack則是會完整重新編譯。所以Vite的速度會較快。
Vite創建Vue專案
npm指令
官方文件有提供npm指令,可以依照不同的nodejs版本以及需要的模板需求,去創建專案。
如果nodejs的版本較新,可以使用以下指令創建Vue:
npm create vite@latest
如果nodejs的版本較舊,官方也提供以下指令:
# npm 7+, extra double-dash is needed:
npm create vite@latest my-vue-app -- --template vue
可能會跳出提示,希望安裝相依套件
Need to install the following packages:
create-vite@5.0.0
Ok to proceed? (y) y
專案名稱
預設專案名稱為vite-project,可以依照自己需求命名
? Project name: › vite-project
選擇框架
接著選擇框架,這邊我們選擇Vue。
? Select a framework: › - Use arrow-keys. Return to submit.
Vanilla
❯ Vue
React
Preact
Lit
Svelte
Solid
Qwik
Others
選擇TS或JS或自訂
在選擇完框架為Vue後,會詢問是否要使用Typescript,這邊先選擇JS就好
後續會使用create-vue(也是官方所推薦的方式)套用其他的plugin
? Select a variant: › - Use arrow-keys. Return to submit.
TypeScript
❯ JavaScript
Customize with create-vue ↗
Nuxt ↗
執行畫面
Scaffolding project in /Users/....../vite-project...
Done. Now run:
cd vite-project
npm install
npm run dev
根據提示,我們需要進到資料夾中,透過npm安裝相關的套件。
並且使用npm run dev
開啟開發模式的執行畫面。
執行npm run dev
Create Vue
前面介紹了使用Vite創建Vue專案,但是在創建過程中並沒有選項讓我們可以選擇使用vue router等等其他相依工具。
所以我們需要使用create vue
方式來選擇我們所需要的套件。
從官方文件中提到,我們可以使用以下指令來使用Create vue:
npm create vue@latest
Vite
或是這邊我們直接使用vite後續搭配create vue選項的方式來創建
npm create vite@latest
同樣的,選擇專案名稱:
? Project name: › vite-project
選擇框架:
? Select a framework: › - Use arrow-keys. Return to submit.
Vanilla
❯ Vue
React
Preact
Lit
Svelte
Solid
Qwik
Others
首次安裝可能會跳出提醒,要我們安裝相依的套件:
Need to install the following packages:
create-vue@3.9.0
Ok to proceed? (y) y
選擇使用create-vue創建專案
? Select a variant: › - Use arrow-keys. Return to submit.
TypeScript
JavaScript
❯ Customize with create-vue ↗
Nuxt ↗
Create Vue
Vue.js - The Progressive JavaScript Framework
? Add TypeScript? › No / Yes
選擇不使用TypeScript
? Add JSX Support? › No / Yes
不需要使用JSX
? Add Vue Router for Single Page Application development? › No / Yes
選擇Yes,有需要使用到Vue Router
? Add Pinia for state management? › No / Yes
選擇Yes,會用到Pinia狀態管理工具
? Add Vitest for Unit Testing? › No / Yes
選擇No,沒有需要撰寫元件測試
? Add an End-to-End Testing Solution? › - Use arrow-keys. Return to submit.
❯ No
Cypress
Nightwatch
Playwright
No,不需要安裝測試套件。
? Add ESLint for code quality? › No / Yes
Yes,需要安裝ESLint確保程式碼品質。
? Add Prettier for code formatting? › No / Yes
Yes,讓我們可以透過Prettier調整程式碼排版。
caffolding project in /Users/.../vite-project...
Done. Now run:
cd vite-project2
npm install
npm run format
npm run dev
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore",
"format": "prettier --write src/"
},
修改router mode
使用create-vue預設的router history mode不會加上井字號(#),這種模式是需要做額外設定的。
所以我們這邊需要打開router/index.js
修改設定如下:
import { createRouter, createWebHashHistory } from 'vue-router'
// 原本設定為:
// import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'
const router = createRouter({
history: createWebHashHistory(import.meta.env.BASE_URL),
// 原本設定為:
// history: createWebHistory(import.meta.env.BASE_URL),
routes: [
{
path: '/',
name: 'home',
component: HomeView
},
{
path: '/about',
name: 'about',
// route level code-splitting
// this generates a separate chunk (About.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import('../views/AboutView.vue')
}
]
})
export default router