feat: vite-ssg (#24)
This commit is contained in:
		
							parent
							
								
									d090ba51b4
								
							
						
					
					
						commit
						9978e5e5a1
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -3,3 +3,4 @@ node_modules | ||||
| dist | ||||
| *.local | ||||
| .presite | ||||
| dist-ssr | ||||
|  | ||||
| @ -34,7 +34,7 @@ | ||||
| 
 | ||||
| - 🔥 Use the [new `<script setup>` style](https://github.com/vuejs/rfcs/pull/227) | ||||
| 
 | ||||
| - 🖨 Server-side generation (SSG) via [presite](https://github.com/egoist/presite) | ||||
| - 🖨 Server-side generation (SSG) via [vite-ssg](https://github.com/antfu/vite-ssg) | ||||
| 
 | ||||
| - 🦾 TypeScript, of course | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										19
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								package.json
									
									
									
									
									
								
							| @ -2,11 +2,11 @@ | ||||
|   "private": true, | ||||
|   "scripts": { | ||||
|     "dev": "vite --port 3333 --open", | ||||
|     "build": "cross-env NODE_ENV=production vite build" | ||||
|     "build": "cross-env NODE_ENV=production vite-ssg build" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "@iconify/iconify": "^2.0.0-rc.2", | ||||
|     "@vueuse/core": "^4.0.0-rc.8", | ||||
|     "@iconify/iconify": "^2.0.0-rc.4", | ||||
|     "@vueuse/core": "^4.0.0", | ||||
|     "nprogress": "^0.2.0", | ||||
|     "vue": "^3.0.4", | ||||
|     "vue-i18n": "9.0.0-beta.8", | ||||
| @ -14,22 +14,20 @@ | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@antfu/eslint-config-vue": "^0.4.3", | ||||
|     "@iconify/json": "^1.1.272", | ||||
|     "@iconify/json": "^1.1.275", | ||||
|     "@purge-icons/generated": "^0.4.1", | ||||
|     "@tailwindcss/typography": "^0.3.1", | ||||
|     "@types/nprogress": "^0.2.0", | ||||
|     "@typescript-eslint/eslint-plugin": "^4.9.1", | ||||
|     "@typescript-eslint/eslint-plugin": "^4.10.0", | ||||
|     "@vue/compiler-sfc": "^3.0.4", | ||||
|     "@vue/server-renderer": "^3.0.4", | ||||
|     "@vuedx/typescript-plugin-vue": "^0.2.3", | ||||
|     "autoprefixer": "^10.1.0", | ||||
|     "chromium": "^3.0.2", | ||||
|     "cross-env": "^7.0.3", | ||||
|     "eslint": "^7.15.0", | ||||
|     "esno": "^0.3.0", | ||||
|     "eslint": "^7.16.0", | ||||
|     "markdown-it-shiki": "^0.0.2", | ||||
|     "pnpm": "^5.13.6", | ||||
|     "pnpm": "^5.13.7", | ||||
|     "postcss-nested": "^5.0.3", | ||||
|     "presite": "^2.0.2", | ||||
|     "tailwindcss": "^2.0.2", | ||||
|     "typescript": "^4.1.3", | ||||
|     "vite": "^1.0.0-rc.13", | ||||
| @ -38,6 +36,7 @@ | ||||
|     "vite-plugin-purge-icons": "^0.4.5", | ||||
|     "vite-plugin-pwa": "^0.1.7", | ||||
|     "vite-plugin-voie": "^0.4.1", | ||||
|     "vite-ssg": "^0.0.5", | ||||
|     "voie-pages": "^0.4.0" | ||||
|   }, | ||||
|   "pnpm": { | ||||
|  | ||||
							
								
								
									
										1470
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1470
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -1,8 +0,0 @@ | ||||
| /* eslint-disable @typescript-eslint/no-var-requires */ | ||||
| console.log('Starting SSG...') | ||||
| 
 | ||||
| const { execSync } = require('child_process') | ||||
| const chromium = require('chromium') | ||||
| 
 | ||||
| execSync(`npx cross-env CHROME_PATH="${chromium.path}" presite dist`, { stdio: 'inherit' }) | ||||
| console.log('SSG Finished...') | ||||
| @ -18,6 +18,6 @@ export const isDark = computed({ | ||||
| 
 | ||||
| watch( | ||||
|   isDark, | ||||
|   v => document.documentElement.classList.toggle('dark', v), | ||||
|   v => typeof document !== 'undefined' && document.documentElement.classList.toggle('dark', v), | ||||
|   { immediate: true }, | ||||
| ) | ||||
|  | ||||
							
								
								
									
										23
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								src/main.ts
									
									
									
									
									
								
							| @ -1,12 +1,21 @@ | ||||
| import './main.postcss' | ||||
| import { createApp } from 'vue' | ||||
| // import routes generated by Voie
 | ||||
| import routes from 'voie-pages' | ||||
| // progress bar
 | ||||
| import NProgress from 'nprogress' | ||||
| import { ViteSSG } from 'vite-ssg' | ||||
| import installPlugins from './plugins' | ||||
| 
 | ||||
| import App from './App.vue' | ||||
| 
 | ||||
| const app = createApp(App) | ||||
| export const createApp = ViteSSG( | ||||
|   App, | ||||
|   { routes }, | ||||
|   ({ app, router, isClient }) => { | ||||
|     installPlugins(app) | ||||
| 
 | ||||
| installPlugins(app) | ||||
| 
 | ||||
| // true for hydrate
 | ||||
| app.mount('#app', true) | ||||
|     if (isClient) { | ||||
|       router.beforeEach(() => { NProgress.start() }) | ||||
|       router.afterEach(() => { NProgress.done() }) | ||||
|     } | ||||
|   } | ||||
| ) | ||||
|  | ||||
| @ -1,9 +1,7 @@ | ||||
| import { App } from 'vue' | ||||
| import installRouter from './router' | ||||
| import installI18n from './i18n' | ||||
| import './icons' | ||||
| 
 | ||||
| export default (app: App) => { | ||||
|   installRouter(app) | ||||
|   installI18n(app) | ||||
| } | ||||
|  | ||||
| @ -1,18 +0,0 @@ | ||||
| import { App } from 'vue' | ||||
| import { createRouter, createWebHistory } from 'vue-router' | ||||
| // import routes generated by Voie
 | ||||
| import routes from 'voie-pages' | ||||
| // progress bar
 | ||||
| import NProgress from 'nprogress' | ||||
| 
 | ||||
| export default (app: App) => { | ||||
|   const router = createRouter({ | ||||
|     history: createWebHistory(), | ||||
|     routes, | ||||
|   }) | ||||
| 
 | ||||
|   router.beforeEach(() => { NProgress.start() }) | ||||
|   router.afterEach(() => { NProgress.done() }) | ||||
| 
 | ||||
|   app.use(router) | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anthony Fu
						Anthony Fu