From ee0b48af25373693f2a8f229334463e3a172fcf6 Mon Sep 17 00:00:00 2001 From: mitchell Date: Fri, 21 Jun 2024 00:46:24 -0400 Subject: [PATCH] Move contact buttons to a component and refactor dev tooling --- bun.lockb | Bin 101789 -> 102209 bytes components/ContactButtons.vue | 65 ++++++++++++++++++++++++++++++++++ contact.md | 53 ++------------------------- eslint.config.js | 14 ++++---- mjfs-us.md | 4 +-- package.json | 12 ++++--- 6 files changed, 85 insertions(+), 63 deletions(-) create mode 100644 components/ContactButtons.vue diff --git a/bun.lockb b/bun.lockb index 9da8c4d6d62efbaeed590976fa3e029688351e85..7cd14c21212c28ddef1353e80dc3d8b9408f7613 100755 GIT binary patch delta 13788 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 O;S*T!6R)(fM)tqNF>C_> diff --git a/components/ContactButtons.vue b/components/ContactButtons.vue new file mode 100644 index 0000000..1b92410 --- /dev/null +++ b/components/ContactButtons.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/contact.md b/contact.md index b6d88b2..14f03e7 100644 --- a/contact.md +++ b/contact.md @@ -8,56 +8,7 @@ hero: --- -
- - - -
-
- - - -
+ diff --git a/eslint.config.js b/eslint.config.js index ae3bc50..a903817 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,13 +1,15 @@ import globals from "globals"; -import pluginJs from "@eslint/js"; -import tseslint from "typescript-eslint"; -import pluginVue from "eslint-plugin-vue"; +import js from "@eslint/js"; +import ts from "typescript-eslint"; +import vue from "eslint-plugin-vue"; +import prettier from "eslint-config-prettier"; export default [ { files: ["**/*.{js,mjs,cjs,ts,vue}"] }, { ignores: [".vitepress/dist", ".vitepress/cache"] }, { languageOptions: { globals: globals.browser } }, - pluginJs.configs.recommended, - ...tseslint.configs.recommended, - ...pluginVue.configs["flat/essential"], + js.configs.recommended, + ...ts.configs.recommended, + ...vue.configs["flat/recommended"], + prettier, ]; diff --git a/mjfs-us.md b/mjfs-us.md index 2c1de9e..4f528f8 100644 --- a/mjfs-us.md +++ b/mjfs-us.md @@ -3,5 +3,5 @@ This website is simple but effective and powered by [VitePress](https://vitepress.dev/). A static site generator that uses Vite and Vue under the hood. -The content is composed with Markdown then staticly rendered and deployed to AWS S3/Cloudfront for -max performance and SEO optimization. +The content is composed with Markdown/Vue files then staticly rendered and deployed to AWS +S3/Cloudfront for max performance and SEO optimization. diff --git a/package.json b/package.json index 92ec6b4..2dc7e21 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "@vueuse/components": "^10.11.0", "@vueuse/core": "^10.11.0", "eslint": "9.x", + "eslint-config-prettier": "^9.1.0", "eslint-plugin-vue": "^9.26.0", "globals": "^15.6.0", "prettier": "^3.3.2", @@ -19,10 +20,13 @@ "typescript": "^5.0.0" }, "scripts": { - "dev": "bunx --bun vitepress dev", - "build": "bunx --bun vitepress build", - "preview": "bunx --bun vitepress preview", + "dev": "bun vitepress dev", + "build": "bun vitepress build", + "preview": "bun vitepress preview", + "typecheck": "bunx vue-tsc", "format": "prettier -w .", - "lint": "eslint ." + "lint": "eslint .", + "check": "bun run format && bun run lint && bun run typecheck", + "clean": "rm -rf ./.vitepress/cache/ ./.vitepress/dist/" } }