Closed7
create-vue と vite どちらでスキャフォルドすべきか考える
普段 Vue アプリケーションを新規で作る際に yarn create vite <project name> --template vue-ts
を使ってたけど、一応 create-vue
を使っても同じような構成が作れるみたいなので、どういう違いがあってどう使い分けるべきかを考えてく。
スキャフォルドコマンド
今回は npm + Vue 3 + TypeScript + Vite
を要件と、それ以外のエコシステムの導入は不要として両ツールのスキャフォルドを試す
vite
選択肢も特になく完了
$ npm create vite vite-sample -- --template vue-ts
Scaffolding project in /Users/shingo.sasaki/vite-sample...
Done. Now run:
cd vite-sample
npm install
npm run dev
create-vue
いくつかの選択肢が提示されるが、TS 以外は無効化する
$ npm init vue@3
Need to install the following packages:
create-vue@3
Ok to proceed? (y) y
Vue.js - The Progressive JavaScript Framework
✔ Project name: … create-vue-sample
✔ Add TypeScript? … No / Yes
✔ Add JSX Support? … No / Yes
✔ Add Vue Router for Single Page Application development? … No / Yes
✔ Add Pinia for state management? … No / Yes
✔ Add Vitest for Unit Testing? … No / Yes
✔ Add Cypress for both Unit and End-to-End testing? … No / Yes
✔ Add ESLint for code quality? … No / Yes
Scaffolding project in /Users/shingo.sasaki/create-vue-sample...
Done. Now run:
cd create-vue-sample
npm install
npm run dev
デフォルトの開発環境
vite
$ npm install
$ npm run dev
シンプルなカウンターデモが用意されているだけ
create-vue
$ npm install
$ npm run dev
各種エコシステムやドキュメントへのリンクが表示されているだけ
サンプルコード
どちらも <script setup lang="ts">
で記述されているが、Reactivity Transform は設定されていない。
vite
src/components/HelloWorld.vue
<script setup lang="ts">
import { ref } from 'vue'
defineProps<{ msg: string }>()
const count = ref(0)
</script>
create-vue
src/components/HelloWorld.vue
<script setup lang="ts">
defineProps<{
msg: string
}>()
</script>
package.json
vite
のほうはかなりシンプル。
create-vue
のほうは
-
@types/node
が入ってて Node 向けコード(テストとか) への配慮もある -
npm-run-all
が入ってて、型チェックとビルドを並列実行できるようになってたりする - 各パッケージがより新しいバージョンが入ってる
といった手厚さがある。
vite
package.json
{
"name": "vite-sample",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vue-tsc --noEmit && vite build",
"preview": "vite preview"
},
"dependencies": {
"vue": "^3.2.37"
},
"devDependencies": {
"@vitejs/plugin-vue": "^3.1.0",
"typescript": "^4.6.4",
"vite": "^3.1.0",
"vue-tsc": "^0.40.4"
}
}
create-vue
package.json
{
"name": "create-vue-sample",
"version": "0.0.0",
"scripts": {
"dev": "vite",
"build": "run-p type-check build-only",
"preview": "vite preview --port 4173",
"build-only": "vite build",
"type-check": "vue-tsc --noEmit"
},
"dependencies": {
"vue": "^3.2.38"
},
"devDependencies": {
"@types/node": "^16.11.56",
"@vitejs/plugin-vue": "^3.0.3",
"@vue/tsconfig": "^0.1.3",
"npm-run-all": "^4.1.5",
"typescript": "~4.7.4",
"vite": "^3.0.9",
"vue-tsc": "^0.40.7"
}
}
全体的に vite
は必要最低限、 create-vue
はオプション含めめちゃくちゃ手厚いという印象。
サクッと何かを試すときは前者でいいけど、ガッツリ Vue アプリケーションを作り込むときは後者から始めるのが良いかも?
create-vue
の詳細を調べる前に先行して調べたかったテーマだったけど解決したのでOK
このスクラップは2022/09/23にクローズされました