setup Vue, Tailwind and MynaUI with Vite
This commit is contained in:
		
							parent
							
								
									02096d66a4
								
							
						
					
					
						commit
						baa1705105
					
				
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -4,3 +4,7 @@
 | 
				
			|||||||
.beaker/data/*
 | 
					.beaker/data/*
 | 
				
			||||||
!.beaker/data/.noremove
 | 
					!.beaker/data/.noremove
 | 
				
			||||||
nohup.out
 | 
					nohup.out
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ignore node build
 | 
				
			||||||
 | 
					node_modules
 | 
				
			||||||
 | 
					static/vue
 | 
				
			||||||
@ -5,9 +5,13 @@ page = {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static = [
 | 
					static = [
 | 
				
			||||||
 | 
					    # {
 | 
				
			||||||
 | 
					    #     "route" :"/css/<filepath:re:.*\.(css|sass|css.map)>",
 | 
				
			||||||
 | 
					    #     "root"  :"./static/css"
 | 
				
			||||||
 | 
					    # },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "route" :"/css/<filepath:re:.*\.(css|sass|css.map)>",
 | 
					        "route" :"/assets/<filepath:re:.*\.(js|css|json|svg|woff2?)>",
 | 
				
			||||||
        "root"  :"./static/css"
 | 
					        "root"  :"./static/vue/assets"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
template.add(static, "templates")
 | 
					template.add(static, "templates")
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										27
									
								
								handler.py
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								handler.py
									
									
									
									
									
								
							@ -5,7 +5,7 @@
 | 
				
			|||||||
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 | 
					# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 | 
				
			||||||
# You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
 | 
					# You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from    bottle                  import Bottle, route
 | 
					from    bottle                  import Bottle, static_file
 | 
				
			||||||
from    config                  import directory
 | 
					from    config                  import directory
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import  templates.plain.main	as template_public
 | 
					import  templates.plain.main	as template_public
 | 
				
			||||||
@ -13,11 +13,20 @@ import  modules.public.home     as public_home
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
app = Bottle()
 | 
					app = Bottle()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@app.route('/')
 | 
					# @app.route('/')
 | 
				
			||||||
def index():
 | 
					# def index():
 | 
				
			||||||
    params = {
 | 
					#     params = {
 | 
				
			||||||
        "mako":{
 | 
					#         "mako":{
 | 
				
			||||||
            "website" : template_public.main(directory.page["public"], "home")
 | 
					#             "website" : template_public.main(directory.page["public"], "home")
 | 
				
			||||||
        }
 | 
					#         }
 | 
				
			||||||
    }
 | 
					#     }
 | 
				
			||||||
    return public_home.main().html(params)
 | 
					#     return public_home.main().html(params)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@app.route('/assets/<filepath:path>')
 | 
				
			||||||
 | 
					def serve_static(filepath):
 | 
				
			||||||
 | 
					    return static_file(filepath, root='./static/vue/assets')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@app.route('/<:re:.*>')
 | 
				
			||||||
 | 
					def serve_vue():
 | 
				
			||||||
 | 
					    return static_file('index.html', root='./static/vue')
 | 
				
			||||||
							
								
								
									
										12
									
								
								index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								index.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html lang="en">
 | 
				
			||||||
 | 
					  <head>
 | 
				
			||||||
 | 
					    <meta charset="UTF-8" />
 | 
				
			||||||
 | 
					    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 | 
				
			||||||
 | 
					    <title>Vue + Tailwind + Mynaui</title>
 | 
				
			||||||
 | 
					  </head>
 | 
				
			||||||
 | 
					  <body>
 | 
				
			||||||
 | 
					    <div id="app"></div>
 | 
				
			||||||
 | 
					    <script type="module" src="/src/main.js"></script>
 | 
				
			||||||
 | 
					  </body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
							
								
								
									
										10
									
								
								jsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								jsconfig.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "compilerOptions": {
 | 
				
			||||||
 | 
					    "baseUrl": ".",
 | 
				
			||||||
 | 
					    "paths": {
 | 
				
			||||||
 | 
					      "@mynaIcon/*": ["./node_modules/@mynaui/icons/*"],
 | 
				
			||||||
 | 
					      "@/*": ["./src/*"]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "exclude": ["node_modules", "static/vue"]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										25
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "costa-vite-myna",
 | 
				
			||||||
 | 
					  "version": "1.0.0",
 | 
				
			||||||
 | 
					  "description": "",
 | 
				
			||||||
 | 
					  "main": "index.js",
 | 
				
			||||||
 | 
					  "type": "module",
 | 
				
			||||||
 | 
					  "scripts": {
 | 
				
			||||||
 | 
					    "build": "vite build",
 | 
				
			||||||
 | 
					    "dev": "vite dev"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "keywords": [],
 | 
				
			||||||
 | 
					  "author": "Amro Alfien",
 | 
				
			||||||
 | 
					  "license": "GPL-3.0-only",
 | 
				
			||||||
 | 
					  "dependencies": {
 | 
				
			||||||
 | 
					    "@mynaui/icons": "^0.3.2",
 | 
				
			||||||
 | 
					    "@vitejs/plugin-vue": "^5.2.0",
 | 
				
			||||||
 | 
					    "autoprefixer": "^10.4.20",
 | 
				
			||||||
 | 
					    "postcss": "^8.4.49",
 | 
				
			||||||
 | 
					    "tailwindcss": "^3.4.15",
 | 
				
			||||||
 | 
					    "vite": "^5.4.11",
 | 
				
			||||||
 | 
					    "vue": "^3.5.13",
 | 
				
			||||||
 | 
					    "vue-router": "^4.4.5",
 | 
				
			||||||
 | 
					    "vite-svg-loader": "^5.1.0"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1711
									
								
								pnpm-lock.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1711
									
								
								pnpm-lock.yaml
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										6
									
								
								postcss.config.cjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								postcss.config.cjs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					module.exports = {
 | 
				
			||||||
 | 
					  plugins: {
 | 
				
			||||||
 | 
					    tailwindcss: {},
 | 
				
			||||||
 | 
					    autoprefixer: {},
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										21
									
								
								src/App.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/App.vue
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					<script setup>
 | 
				
			||||||
 | 
					import { RouterLink } from "vue-router";
 | 
				
			||||||
 | 
					import MynaAcademicHat from "@mynaIcon/icons/academic-hat.svg";
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					  <div class="p-4 text-center">
 | 
				
			||||||
 | 
					    <h1 class="text-4xl font-bold text-blue-600">Hello Vue + Tailwind!</h1>
 | 
				
			||||||
 | 
					    <div class="flex gap-4 justify-center mt-4">
 | 
				
			||||||
 | 
					      <p>Myna UI icon example :</p>
 | 
				
			||||||
 | 
					      <MynaAcademicHat />
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div class="">
 | 
				
			||||||
 | 
					      <div class="flex gap-4 justify-center my-6 text-blue-800">
 | 
				
			||||||
 | 
					        <RouterLink class="hover:underline" to="/">Home</RouterLink>
 | 
				
			||||||
 | 
					        <RouterLink class="hover:underline" to="/about">About</RouterLink>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					      <router-view></router-view>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
							
								
								
									
										3
									
								
								src/index.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/index.css
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					@tailwind base;
 | 
				
			||||||
 | 
					@tailwind components;
 | 
				
			||||||
 | 
					@tailwind utilities;
 | 
				
			||||||
							
								
								
									
										9
									
								
								src/main.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/main.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					import { createApp } from "vue";
 | 
				
			||||||
 | 
					import App from "./App.vue";
 | 
				
			||||||
 | 
					import router from "./router";
 | 
				
			||||||
 | 
					import "./index.css";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const app = createApp(App);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					app.use(router);
 | 
				
			||||||
 | 
					app.mount("#app");
 | 
				
			||||||
							
								
								
									
										3
									
								
								src/pages/About.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/pages/About.vue
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					<template>
 | 
				
			||||||
 | 
					  <h1>About Page</h1>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
							
								
								
									
										3
									
								
								src/pages/Home.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/pages/Home.vue
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					<template>
 | 
				
			||||||
 | 
					  <h1>Home Page</h1>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
							
								
								
									
										15
									
								
								src/router.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/router.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					import { createRouter, createWebHistory } from "vue-router";
 | 
				
			||||||
 | 
					import Home from "./pages/Home.vue";
 | 
				
			||||||
 | 
					import About from "./pages/About.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const routes = [
 | 
				
			||||||
 | 
					  { path: "/", component: Home },
 | 
				
			||||||
 | 
					  { path: "/about", component: About },
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const router = createRouter({
 | 
				
			||||||
 | 
					  history: createWebHistory(),
 | 
				
			||||||
 | 
					  routes,
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default router;
 | 
				
			||||||
							
								
								
									
										8
									
								
								tailwind.config.cjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								tailwind.config.cjs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					/** @type {import('tailwindcss').Config} */
 | 
				
			||||||
 | 
					module.exports = {
 | 
				
			||||||
 | 
					  content: ["./index.html", "./src/**/*.{vue,js,ts,jsx,tsx}"],
 | 
				
			||||||
 | 
					  theme: {
 | 
				
			||||||
 | 
					    extend: {},
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  plugins: [],
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
							
								
								
									
										23
									
								
								vite.config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								vite.config.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					import { defineConfig } from "vite";
 | 
				
			||||||
 | 
					import vue from "@vitejs/plugin-vue";
 | 
				
			||||||
 | 
					import svgLoader from "vite-svg-loader";
 | 
				
			||||||
 | 
					import path from "path";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default defineConfig({
 | 
				
			||||||
 | 
					  plugins: [
 | 
				
			||||||
 | 
					    vue(),
 | 
				
			||||||
 | 
					    svgLoader({
 | 
				
			||||||
 | 
					      defaultImport: "component",
 | 
				
			||||||
 | 
					    }),
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  build: {
 | 
				
			||||||
 | 
					    outDir: "./static/vue",
 | 
				
			||||||
 | 
					    emptyOutDir: true,
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  resolve: {
 | 
				
			||||||
 | 
					    alias: {
 | 
				
			||||||
 | 
					      "@mynaIcon": path.resolve(__dirname, "./node_modules/@mynaui/icons/"),
 | 
				
			||||||
 | 
					      "@": path.resolve(__dirname, "./src/"),
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user