git-bash で node + vite + vue + bootstrap + sass の SPA を作成する
2024/04/27 12:00:00
前提 #
- 動作環境は git-bash とする
構築手順は以下を参考にする
https://blog.oya3.net/posts/2023/10/03/00_git/ - node21 + vite5 + vue3 + bootstrap5 + sass を使用する
- vue-router でルーティングできるところまでのサンプルを作成
vite プロジェクトを作成 #
$ npm create vite@latest
Need to install the following packages:
create-vite@5.2.3
Ok to proceed? (y) y
√ Project name: ... erma-vite
√ Select a framework: » Vue
√ Select a variant: » JavaScript
Scaffolding project in C:\home\developer\work\hp\erma-vite...
Done. Now run:
cd erma-vite
npm install
npm run dev
npm notice
npm notice New minor version of npm available! 10.5.0 -> 10.6.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v10.6.0
npm notice Run npm install -g npm@10.6.0 to update!
npm notice
# npm を更新メッセージが表示されるので実施
$ npm install -g npm@10.6.0
removed 17 packages, and changed 59 packages in 8s
# vite プロジェクトに移動
$ cd erma-vite/
$ npm i
added 27 packages, and audited 28 packages in 4s
4 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
# 起動確認
$ npm run dev
> erma-vite@0.0.0 dev
> vite
VITE v5.2.10 ready in 1511 ms
➜ Local: http://localhost:5173/
➜ Network: use --host to expose
➜ press h + enter to show help
# git に登録
$ git init
$ git add .
$ git commit -m "first commit"
popperjsをインストール(bootstrapもインストールされる) #
$ npm install --save bootstrap @popperjs/core
added 2 packages, and audited 30 packages in 4s
6 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
$ git commit -am "add popperjs(bootstrap)"
sass をインストール #
$ npm install --save-dev sass
added 16 packages, and audited 46 packages in 2s
9 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
# ファイル構成の設定:
$ mkdir src/scss
$ touch src/scss/styles.scss
bootstrap & sass 読み込み追加
$ emacs src/main.js
import { createApp } from 'vue'
// import './style.css'
import App from './App.vue'
// Import our custom CSS
import './scss/styles.scss'
// Import all of Bootstrap's JS
import * as bootstrap from 'bootstrap'
createApp(App).mount('#app')
$ emacs src/scss/styles.scss
// Import all of Bootstrap's CSS
@import "bootstrap/scss/bootstrap";
git 登録
$ git commit -am "add sass"
動作確認
※ここでは bootstrap 側のcssに変更しているので既存のvite-vueの初期画面とは違う画面が出てしまうが無視。
$ npm run dev
ファイル構成を確認(node_modules以外) #
# ※tree コマンドは、管理者権限でgit-bashを起動し $ pacman -S tree を実行
$ tree -I node_modules .
.
├── index.html
├── package.json
├── package-lock.json
├── public
│ └── vite.svg
├── README.md
├── src
│ ├── App.vue
│ ├── assets
│ │ └── vue.svg
│ ├── components
│ │ └── HelloWorld.vue
│ ├── main.js
│ ├── scss
│ │ └── styles.scss
│ └── style.css
└── vite.config.js
7 directories, 12 files
ルーティング機能を導入する #
Home, About ページを作成しルーティングする
# vue-router をインストール
$ npm install vue-router
$ git commit -am "add vue-router"
Home, About ページのルーティング設定を追加 #
/src/router.js 新規作成
$ emacs /src/router.js
import { createRouter, createWebHistory } from 'vue-router'
import home from './components/home.vue'
import about from './components/about.vue'
const routes = [
{ path: '/', name: 'home', component: home },
{ path: '/about', name: 'about', component: about },
]
const router = createRouter({
history: createWebHistory(),
routes,
})
export default router
システムにルーティング設定を反映 #
src/main.js 編集
$ emacs src/main.js
import { createApp } from 'vue'
// import './style.css'
import App from './App.vue'
import router from './router'
// Import our custom CSS
import './scss/styles.scss'
// Import all of Bootstrap's JS
import * as bootstrap from 'bootstrap'
// createApp(App).mount('#app')
const app = createApp(App)
app.use(router)
app.mount('#app')
トップページに Home, About ページのリンクを張る #
src/App.vue 編集
$ emacs src/App.vue
<script setup>
import home from './components/home.vue'
import about from './components/about.vue'
</script>
<template>
<div id="app">
<div id="nav">
<router-link to="/">home</router-link> |
<router-link to="/about">about</router-link>
</div>
<router-view />
</div>
</template>
<style scoped lang="scss">
</style>
Home ページ作成 #
src/components/Home.vue 編集
$ emacs src/Home.vue
<template>
<div class="container py-4 px-3 mx-auto">
<h1>Home</h1>
<button class="btn btn-primary">Home button</button>
</div>
</template>
About ページ作成 #
src/components/About.vue 編集
$ emacs src/About.vue
<template>
<div class="container py-4 px-3 mx-auto">
<h1>About</h1>
<button class="btn btn-primary">About button</button>
</div>
</template>
動作確認 #
$ npm run dev
その他 #
@ path指定できるようにする #
$ emacs vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path' // <-- ここ追加
// https://vitejs.dev/config/
export default defineConfig({
plugins: [vue()],
resolve: { // <-- ここ追加
alias: {
'@': path.resolve(__dirname, './src')
}
}})
参考URL #
- Bootstrap and Vite
https://getbootstrap.jp/docs/5.3/getting-started/vite/ - Viteでの使用(Bootstrap and Vite)v5.3.0
https://bootstrap-guide.com/getting-started/vite - ViteとBootstrapで最速で開発しよう
https://qiita.com/asameshiCode/items/a141f7f2a3337b7debde - Vue3でプロジェクト作成 SCSSを使う
https://qiita.com/Maro1027/items/03ab2ce2a32e18985e28 - Vue3 チュートリアル 5 VueRouterの導入
https://qiita.com/TakahiRoyte/items/231aa3ac3aacbe25ebeb - Viteを使ってVueを始めよう
https://asameshicode.com/lets-use-vite/ - How to Set up a Vue app with Vite, SASS, Vue Router, Bootstrap, and other goodies.
https://medium.com/@andrewmasonmedia/set-up-a-vue-app-with-vite-sass-vue-router-and-other-goodies-30647b82c271