From 86d0fe7bfe564505251738bd72e86587898b1a0d Mon Sep 17 00:00:00 2001 From: YunYouJun Date: Wed, 13 Apr 2022 23:29:42 +0800 Subject: [PATCH] feat: can convert csv to json --- .gitignore | 3 + package.json | 7 +- pnpm-lock.yaml | 260 ++++++++++++++++++++++++--------------- public/data/recipe.csv | 3 + scripts/convert.ts | 36 ++++++ src/data/recipe.yml | 6 - src/styles/css-vars.scss | 0 src/styles/index.scss | 0 src/types/index.ts | 2 + 9 files changed, 207 insertions(+), 110 deletions(-) create mode 100644 public/data/recipe.csv create mode 100644 scripts/convert.ts delete mode 100644 src/data/recipe.yml create mode 100644 src/styles/css-vars.scss create mode 100644 src/styles/index.scss diff --git a/.gitignore b/.gitignore index 912c396..465919f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# auto generate +public/data/recipe.json + .DS_Store .vite-ssg-dist .vite-ssg-temp diff --git a/package.json b/package.json index 5566675..22ac4a7 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,8 @@ "private": true, "packageManager": "pnpm@6.32.3", "scripts": { - "build": "vite-ssg build", + "build": "npm run convert && vite-ssg build", + "convert": "esno scripts/convert.ts", "dev": "vite --port 3333 --open", "lint": "eslint .", "preview": "vite preview", @@ -29,15 +30,17 @@ "critters": "^0.0.16", "cross-env": "^7.0.3", "eslint": "^8.13.0", + "esno": "^0.14.1", "https-localhost": "^4.7.1", "markdown-it-link-attributes": "^4.0.0", "markdown-it-prism": "^2.2.3", "pnpm": "^6.32.6", + "sass": "^1.50.0", "typescript": "^4.6.3", "unocss": "^0.31.2", "unplugin-auto-import": "^0.7.1", "unplugin-vue-components": "^0.19.2", - "vite": "^2.9.1", + "vite": "^2.9.2", "vite-plugin-inspect": "^0.4.3", "vite-plugin-md": "^0.12.4", "vite-plugin-pages": "^0.22.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 380e045..bee047c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,6 +12,7 @@ specifiers: critters: ^0.0.16 cross-env: ^7.0.3 eslint: ^8.13.0 + esno: ^0.14.1 https-localhost: ^4.7.1 markdown-it-link-attributes: ^4.0.0 markdown-it-prism: ^2.2.3 @@ -19,11 +20,12 @@ specifiers: pinia: ^2.0.13 pnpm: ^6.32.6 prism-theme-vars: ^0.2.2 + sass: ^1.50.0 typescript: ^4.6.3 unocss: ^0.31.2 unplugin-auto-import: ^0.7.1 unplugin-vue-components: ^0.19.2 - vite: ^2.9.1 + vite: ^2.9.2 vite-plugin-inspect: ^0.4.3 vite-plugin-md: ^0.12.4 vite-plugin-pages: ^0.22.0 @@ -52,25 +54,27 @@ devDependencies: '@iconify-json/ri': 1.1.1 '@types/markdown-it-link-attributes': 3.0.1 '@types/nprogress': 0.2.0 - '@vitejs/plugin-vue': 2.3.1_vite@2.9.1+vue@3.2.32 + '@vitejs/plugin-vue': 2.3.1_vite@2.9.2+vue@3.2.32 critters: 0.0.16 cross-env: 7.0.3 eslint: 8.13.0 + esno: 0.14.1 https-localhost: 4.7.1 markdown-it-link-attributes: 4.0.0 markdown-it-prism: 2.2.3 pnpm: 6.32.6 + sass: 1.50.0 typescript: 4.6.3 - unocss: 0.31.2_vite@2.9.1 - unplugin-auto-import: 0.7.1_@vueuse+core@8.2.5+vite@2.9.1 - unplugin-vue-components: 0.19.2_vite@2.9.1+vue@3.2.32 - vite: 2.9.1 - vite-plugin-inspect: 0.4.3_vite@2.9.1 - vite-plugin-md: 0.12.4_vite@2.9.1 - vite-plugin-pages: 0.22.0_vite@2.9.1 - vite-plugin-pwa: 0.11.13_vite@2.9.1 - vite-plugin-vue-layouts: 0.6.0_632ba600628532367cf4681a9236eee5 - vite-ssg: 0.19.2_6752f1b72378616bf394242b91140628 + unocss: 0.31.2_vite@2.9.2 + unplugin-auto-import: 0.7.1_@vueuse+core@8.2.5+vite@2.9.2 + unplugin-vue-components: 0.19.2_vite@2.9.2+vue@3.2.32 + vite: 2.9.2_sass@1.50.0 + vite-plugin-inspect: 0.4.3_vite@2.9.2 + vite-plugin-md: 0.12.4_vite@2.9.2 + vite-plugin-pages: 0.22.0_vite@2.9.2 + vite-plugin-pwa: 0.11.13_vite@2.9.2 + vite-plugin-vue-layouts: 0.6.0_19e98d1a87783d01efb725acc506d368 + vite-ssg: 0.19.2_04592499939e923446fa8d60d79e6adf vite-ssg-sitemap: 0.2.2 vue-tsc: 0.34.6_typescript@4.6.3 @@ -1806,7 +1810,7 @@ packages: '@unocss/core': 0.31.2 dev: true - /@unocss/vite/0.31.2_vite@2.9.1: + /@unocss/vite/0.31.2_vite@2.9.2: resolution: {integrity: sha512-6aIGWNBYuhpokE3qWRCQqMjFwUoM91yLnInhpHQ4Q6W6Py8i8NZIUxnsp2qOmNHjrf5BwTnJlkFyisbQLCdvwg==} peerDependencies: vite: ^2.9.0 @@ -1818,17 +1822,17 @@ packages: '@unocss/scope': 0.31.2 '@unocss/transformer-directives': 0.31.2 magic-string: 0.26.1 - vite: 2.9.1 + vite: 2.9.2_sass@1.50.0 dev: true - /@vitejs/plugin-vue/2.3.1_vite@2.9.1+vue@3.2.32: + /@vitejs/plugin-vue/2.3.1_vite@2.9.2+vue@3.2.32: resolution: {integrity: sha512-YNzBt8+jt6bSwpt7LP890U1UcTOIZZxfpE5WOJ638PNxSEKOqAi0+FSKS0nVeukfdZ0Ai/H7AFd6k3hayfGZqQ==} engines: {node: '>=12.0.0'} peerDependencies: vite: ^2.5.10 vue: ^3.2.25 dependencies: - vite: 2.9.1 + vite: 2.9.2_sass@1.50.0 vue: 3.2.32 dev: true @@ -2909,8 +2913,8 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild-android-64/0.14.27: - resolution: {integrity: sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ==} + /esbuild-android-64/0.14.36: + resolution: {integrity: sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2918,8 +2922,8 @@ packages: dev: true optional: true - /esbuild-android-arm64/0.14.27: - resolution: {integrity: sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ==} + /esbuild-android-arm64/0.14.36: + resolution: {integrity: sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -2927,8 +2931,8 @@ packages: dev: true optional: true - /esbuild-darwin-64/0.14.27: - resolution: {integrity: sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g==} + /esbuild-darwin-64/0.14.36: + resolution: {integrity: sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2936,8 +2940,8 @@ packages: dev: true optional: true - /esbuild-darwin-arm64/0.14.27: - resolution: {integrity: sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ==} + /esbuild-darwin-arm64/0.14.36: + resolution: {integrity: sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2945,8 +2949,8 @@ packages: dev: true optional: true - /esbuild-freebsd-64/0.14.27: - resolution: {integrity: sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA==} + /esbuild-freebsd-64/0.14.36: + resolution: {integrity: sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2954,8 +2958,8 @@ packages: dev: true optional: true - /esbuild-freebsd-arm64/0.14.27: - resolution: {integrity: sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA==} + /esbuild-freebsd-arm64/0.14.36: + resolution: {integrity: sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2963,8 +2967,8 @@ packages: dev: true optional: true - /esbuild-linux-32/0.14.27: - resolution: {integrity: sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw==} + /esbuild-linux-32/0.14.36: + resolution: {integrity: sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2972,8 +2976,8 @@ packages: dev: true optional: true - /esbuild-linux-64/0.14.27: - resolution: {integrity: sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg==} + /esbuild-linux-64/0.14.36: + resolution: {integrity: sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2981,8 +2985,8 @@ packages: dev: true optional: true - /esbuild-linux-arm/0.14.27: - resolution: {integrity: sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw==} + /esbuild-linux-arm/0.14.36: + resolution: {integrity: sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2990,8 +2994,8 @@ packages: dev: true optional: true - /esbuild-linux-arm64/0.14.27: - resolution: {integrity: sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ==} + /esbuild-linux-arm64/0.14.36: + resolution: {integrity: sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2999,8 +3003,8 @@ packages: dev: true optional: true - /esbuild-linux-mips64le/0.14.27: - resolution: {integrity: sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A==} + /esbuild-linux-mips64le/0.14.36: + resolution: {integrity: sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -3008,8 +3012,8 @@ packages: dev: true optional: true - /esbuild-linux-ppc64le/0.14.27: - resolution: {integrity: sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA==} + /esbuild-linux-ppc64le/0.14.36: + resolution: {integrity: sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -3017,8 +3021,8 @@ packages: dev: true optional: true - /esbuild-linux-riscv64/0.14.27: - resolution: {integrity: sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg==} + /esbuild-linux-riscv64/0.14.36: + resolution: {integrity: sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -3026,8 +3030,8 @@ packages: dev: true optional: true - /esbuild-linux-s390x/0.14.27: - resolution: {integrity: sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg==} + /esbuild-linux-s390x/0.14.36: + resolution: {integrity: sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -3035,8 +3039,8 @@ packages: dev: true optional: true - /esbuild-netbsd-64/0.14.27: - resolution: {integrity: sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q==} + /esbuild-netbsd-64/0.14.36: + resolution: {integrity: sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -3044,8 +3048,14 @@ packages: dev: true optional: true - /esbuild-openbsd-64/0.14.27: - resolution: {integrity: sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw==} + /esbuild-node-loader/0.6.5: + resolution: {integrity: sha512-uPP+dllWm38cFvDysdocutN3lfe5pTIbddAHp1ENyLzpHYqE2r+3Wo+pfg9X3p8DFWwzIisft5YkeBIthIcixw==} + dependencies: + esbuild: 0.14.36 + dev: true + + /esbuild-openbsd-64/0.14.36: + resolution: {integrity: sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -3053,8 +3063,16 @@ packages: dev: true optional: true - /esbuild-sunos-64/0.14.27: - resolution: {integrity: sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg==} + /esbuild-register/3.3.2_esbuild@0.14.36: + resolution: {integrity: sha512-jceAtTO6zxPmCfSD5cBb3rgIK1vmuqCKYwgylHiS1BF4pq0jJiJb4K2QMuqF4BEw7XDBRatYzip0upyTzfkgsQ==} + peerDependencies: + esbuild: '>=0.12 <1' + dependencies: + esbuild: 0.14.36 + dev: true + + /esbuild-sunos-64/0.14.36: + resolution: {integrity: sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -3062,8 +3080,8 @@ packages: dev: true optional: true - /esbuild-windows-32/0.14.27: - resolution: {integrity: sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw==} + /esbuild-windows-32/0.14.36: + resolution: {integrity: sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -3071,8 +3089,8 @@ packages: dev: true optional: true - /esbuild-windows-64/0.14.27: - resolution: {integrity: sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg==} + /esbuild-windows-64/0.14.36: + resolution: {integrity: sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -3080,8 +3098,8 @@ packages: dev: true optional: true - /esbuild-windows-arm64/0.14.27: - resolution: {integrity: sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg==} + /esbuild-windows-arm64/0.14.36: + resolution: {integrity: sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -3089,32 +3107,32 @@ packages: dev: true optional: true - /esbuild/0.14.27: - resolution: {integrity: sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q==} + /esbuild/0.14.36: + resolution: {integrity: sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - esbuild-android-64: 0.14.27 - esbuild-android-arm64: 0.14.27 - esbuild-darwin-64: 0.14.27 - esbuild-darwin-arm64: 0.14.27 - esbuild-freebsd-64: 0.14.27 - esbuild-freebsd-arm64: 0.14.27 - esbuild-linux-32: 0.14.27 - esbuild-linux-64: 0.14.27 - esbuild-linux-arm: 0.14.27 - esbuild-linux-arm64: 0.14.27 - esbuild-linux-mips64le: 0.14.27 - esbuild-linux-ppc64le: 0.14.27 - esbuild-linux-riscv64: 0.14.27 - esbuild-linux-s390x: 0.14.27 - esbuild-netbsd-64: 0.14.27 - esbuild-openbsd-64: 0.14.27 - esbuild-sunos-64: 0.14.27 - esbuild-windows-32: 0.14.27 - esbuild-windows-64: 0.14.27 - esbuild-windows-arm64: 0.14.27 + esbuild-android-64: 0.14.36 + esbuild-android-arm64: 0.14.36 + esbuild-darwin-64: 0.14.36 + esbuild-darwin-arm64: 0.14.36 + esbuild-freebsd-64: 0.14.36 + esbuild-freebsd-arm64: 0.14.36 + esbuild-linux-32: 0.14.36 + esbuild-linux-64: 0.14.36 + esbuild-linux-arm: 0.14.36 + esbuild-linux-arm64: 0.14.36 + esbuild-linux-mips64le: 0.14.36 + esbuild-linux-ppc64le: 0.14.36 + esbuild-linux-riscv64: 0.14.36 + esbuild-linux-s390x: 0.14.36 + esbuild-netbsd-64: 0.14.36 + esbuild-openbsd-64: 0.14.36 + esbuild-sunos-64: 0.14.36 + esbuild-windows-32: 0.14.36 + esbuild-windows-64: 0.14.36 + esbuild-windows-arm64: 0.14.36 dev: true /escalade/3.1.1: @@ -3442,6 +3460,17 @@ packages: - supports-color dev: true + /esno/0.14.1: + resolution: {integrity: sha512-yDFYw6dGUjCT1qKsdG7WOc/RzIh/qwxUEVZ+ohCltaxBxEFMNqeqbQL9xjRl6Yvdwrfc5OCjUA9JbFmuu/8BKg==} + hasBin: true + dependencies: + cross-spawn: 7.0.3 + esbuild: 0.14.36 + esbuild-node-loader: 0.6.5 + esbuild-register: 3.3.2_esbuild@0.14.36 + import-meta-resolve: 1.1.1 + dev: true + /espree/9.3.1: resolution: {integrity: sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4003,6 +4032,10 @@ packages: engines: {node: '>= 4'} dev: true + /immutable/4.0.0: + resolution: {integrity: sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==} + dev: true + /import-fresh/3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -4011,6 +4044,12 @@ packages: resolve-from: 4.0.0 dev: true + /import-meta-resolve/1.1.1: + resolution: {integrity: sha512-JiTuIvVyPaUg11eTrNDx5bgQ/yMKMZffc7YSjvQeSMXy58DO2SQ8BtAf3xteZvmzvjYh14wnqNjL8XVeDy2o9A==} + dependencies: + builtins: 4.0.0 + dev: true + /imurmurhash/0.1.4: resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} engines: {node: '>=0.8.19'} @@ -4694,6 +4733,12 @@ packages: resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + dev: true + + /nanoid/3.3.2: + resolution: {integrity: sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true /natural-compare/1.4.0: resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} @@ -5047,7 +5092,7 @@ packages: resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.1 + nanoid: 3.3.2 picocolors: 1.0.0 source-map-js: 1.0.2 @@ -5354,6 +5399,16 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true + /sass/1.50.0: + resolution: {integrity: sha512-cLsD6MEZ5URXHStxApajEh7gW189kkjn4Rc8DQweMyF+o5HF5nfEz8QYLMlPsTOD88DknatTmBWkOcw5/LnJLQ==} + engines: {node: '>=12.0.0'} + hasBin: true + dependencies: + chokidar: 3.5.3 + immutable: 4.0.0 + source-map-js: 1.0.2 + dev: true + /saxes/5.0.1: resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} engines: {node: '>=10'} @@ -5910,7 +5965,7 @@ packages: engines: {node: '>= 10.0.0'} dev: true - /unocss/0.31.2_vite@2.9.1: + /unocss/0.31.2_vite@2.9.2: resolution: {integrity: sha512-ZPu14276pTa89o9b9mEcyh7/oK3lwiwESyyAIAvr5zrWgOiXv1GcoMbGUFnl9szj1GSZF2qo3z9nO8OTaAbWRQ==} engines: {node: '>=14'} dependencies: @@ -5926,7 +5981,7 @@ packages: '@unocss/reset': 0.31.2 '@unocss/transformer-directives': 0.31.2 '@unocss/transformer-variant-group': 0.31.2 - '@unocss/vite': 0.31.2_vite@2.9.1 + '@unocss/vite': 0.31.2_vite@2.9.2 transitivePeerDependencies: - debug - supports-color @@ -5938,7 +5993,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /unplugin-auto-import/0.7.1_@vueuse+core@8.2.5+vite@2.9.1: + /unplugin-auto-import/0.7.1_@vueuse+core@8.2.5+vite@2.9.2: resolution: {integrity: sha512-9865OV9eP99PNxHR2mtTDExeN01m4M9boT5U2BtIwsU1wDRsaFIYWLwcCBEjvXzXfTTC2NNMskhHGVAMfL2WgA==} engines: {node: '>=14'} peerDependencies: @@ -5953,7 +6008,7 @@ packages: local-pkg: 0.4.1 magic-string: 0.26.1 resolve: 1.22.0 - unplugin: 0.6.1_vite@2.9.1 + unplugin: 0.6.1_vite@2.9.2 transitivePeerDependencies: - esbuild - rollup @@ -5961,7 +6016,7 @@ packages: - webpack dev: true - /unplugin-vue-components/0.19.2_vite@2.9.1+vue@3.2.32: + /unplugin-vue-components/0.19.2_vite@2.9.2+vue@3.2.32: resolution: {integrity: sha512-7DhQfTyHLyVIWR6VBQONLU6dDBOXtEYvZQYUpN9C+t11WOb5baIFoxfzDxkeFHTHGMhznyEOw6afHyV9JKWnig==} engines: {node: '>=14'} peerDependencies: @@ -5983,7 +6038,7 @@ packages: magic-string: 0.26.1 minimatch: 5.0.1 resolve: 1.22.0 - unplugin: 0.6.1_vite@2.9.1 + unplugin: 0.6.1_vite@2.9.2 vue: 3.2.32 transitivePeerDependencies: - esbuild @@ -5993,7 +6048,7 @@ packages: - webpack dev: true - /unplugin/0.6.1_vite@2.9.1: + /unplugin/0.6.1_vite@2.9.2: resolution: {integrity: sha512-cQqRCgQ2v/Q4fPIWNVZ6sNIDdl5v8JXOnlsUOsGzT4fblTONoPWaytiYSpu5qJ9lvSDZYAQN6BRVo3XQoZMfUQ==} peerDependencies: esbuild: '>=0.13' @@ -6011,7 +6066,7 @@ packages: optional: true dependencies: chokidar: 3.5.3 - vite: 2.9.1 + vite: 2.9.2_sass@1.50.0 webpack-sources: 3.2.3 webpack-virtual-modules: 0.4.3 dev: true @@ -6056,7 +6111,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-plugin-inspect/0.4.3_vite@2.9.1: + /vite-plugin-inspect/0.4.3_vite@2.9.2: resolution: {integrity: sha512-lj3oWnReRUwMHB7k8ZD8o6E27/OSn+8ua+tOftxuS39aM6Z9MG7m5r1CMlxMwEwdTM/wnQr0aH22Y2IX3e+++w==} engines: {node: '>=14'} peerDependencies: @@ -6067,12 +6122,12 @@ packages: kolorist: 1.5.1 sirv: 2.0.2 ufo: 0.7.11 - vite: 2.9.1 + vite: 2.9.2_sass@1.50.0 transitivePeerDependencies: - supports-color dev: true - /vite-plugin-md/0.12.4_vite@2.9.1: + /vite-plugin-md/0.12.4_vite@2.9.2: resolution: {integrity: sha512-qtkzpHAvdp/Zo/2ntmCpfph2JD4F0+tOl1vK3QVAZztpWyoO7Yi8Y2Dqu7Urrnh/fPH7PnIWlrrQy1XV/D92Pg==} peerDependencies: vite: ^2.0.0 @@ -6083,10 +6138,10 @@ packages: '@vue/runtime-core': 3.2.31 gray-matter: 4.0.3 markdown-it: 12.3.2 - vite: 2.9.1 + vite: 2.9.2_sass@1.50.0 dev: true - /vite-plugin-pages/0.22.0_vite@2.9.1: + /vite-plugin-pages/0.22.0_vite@2.9.2: resolution: {integrity: sha512-OeCtSKoQNjrjtlNgkF4JTU0UdiZsa0cSQJKFyRoUz5KMbGoXR8O29BB2fZx9tMSBPyQJgGvIpzdoofLDaRNcQQ==} peerDependencies: '@vue/compiler-sfc': '>=3' @@ -6101,13 +6156,13 @@ packages: json5: 2.2.0 local-pkg: 0.4.1 picocolors: 1.0.0 - vite: 2.9.1 + vite: 2.9.2_sass@1.50.0 yaml: 2.0.0-10 transitivePeerDependencies: - supports-color dev: true - /vite-plugin-pwa/0.11.13_vite@2.9.1: + /vite-plugin-pwa/0.11.13_vite@2.9.2: resolution: {integrity: sha512-Ssj14m3TRVLfkFEAWSMcFE2d1cSdEZyrVTzfY2lSL+umHYvcIFHVDAY143sygtBCb44OPczsAOmWwBTxwOvh7g==} peerDependencies: vite: ^2.0.0 @@ -6116,7 +6171,7 @@ packages: fast-glob: 3.2.11 pretty-bytes: 5.6.0 rollup: 2.70.1 - vite: 2.9.1 + vite: 2.9.2_sass@1.50.0 workbox-build: 6.5.1 workbox-window: 6.5.1 transitivePeerDependencies: @@ -6124,7 +6179,7 @@ packages: - supports-color dev: true - /vite-plugin-vue-layouts/0.6.0_632ba600628532367cf4681a9236eee5: + /vite-plugin-vue-layouts/0.6.0_19e98d1a87783d01efb725acc506d368: resolution: {integrity: sha512-7QX7o/NpCfs+hyXphwYfmPqAEQ6qd4uXsvI0VsovjGT2eCoEE5dMdP6L+uqqNWY4uqv7oCvtinecZmbzZv/9Rg==} peerDependencies: vite: ^2.5.0 @@ -6134,7 +6189,7 @@ packages: '@vue/compiler-sfc': 3.2.31 debug: 4.3.3 fast-glob: 3.2.11 - vite: 2.9.1 + vite: 2.9.2_sass@1.50.0 vue: 3.2.32 vue-router: 4.0.14_vue@3.2.32 transitivePeerDependencies: @@ -6145,7 +6200,7 @@ packages: resolution: {integrity: sha512-eXhdz4fs/RUvHk5n475NovTZkXLG/P7DKYdQ2i+nqF1tAeIGuK3gmN4Fycu1J2bA8eAoDO63Vlrc8MW9QpiJuw==} dev: true - /vite-ssg/0.19.2_6752f1b72378616bf394242b91140628: + /vite-ssg/0.19.2_04592499939e923446fa8d60d79e6adf: resolution: {integrity: sha512-r9UJJ4OTMyu9f4nNe12PMVhVkeXYp1rUKbIl6zIOz5QDYEDgFcq8hZGUMMIAcyHhB4pH5ImmjZd1hJ2fO6hOmg==} engines: {node: '>=14.0.0'} hasBin: true @@ -6167,7 +6222,7 @@ packages: jsdom: 19.0.0 kolorist: 1.5.1 prettier: 2.6.0 - vite: 2.9.1 + vite: 2.9.2_sass@1.50.0 vue: 3.2.32 vue-router: 4.0.14_vue@3.2.32 yargs: 17.3.1 @@ -6178,8 +6233,8 @@ packages: - utf-8-validate dev: true - /vite/2.9.1: - resolution: {integrity: sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==} + /vite/2.9.2_sass@1.50.0: + resolution: {integrity: sha512-ScbfYsiG1N/xE2TnZWYWJ8aOFBQovEl4VLU+0dktxqXvqdAvcTOEUM5YqwaBkmNHSHUGHLPd92tuXFQ35wDkVw==} engines: {node: '>=12.2.0'} hasBin: true peerDependencies: @@ -6194,10 +6249,11 @@ packages: stylus: optional: true dependencies: - esbuild: 0.14.27 + esbuild: 0.14.36 postcss: 8.4.12 resolve: 1.22.0 rollup: 2.70.1 + sass: 1.50.0 optionalDependencies: fsevents: 2.3.2 dev: true diff --git a/public/data/recipe.csv b/public/data/recipe.csv new file mode 100644 index 0000000..6b665ac --- /dev/null +++ b/public/data/recipe.csv @@ -0,0 +1,3 @@ +名称,食材,链接,标签/描述,方法,工具 +干锅土豆片,土豆,https://www.bilibili.com/video/BV1ZZ4y1A7HK,下饭,炒,锅 +罗宋汤,土豆、西红柿、洋葱,https://www.bilibili.com/video/BV1gP4y1T7Z7,简易版,煮,锅 diff --git a/scripts/convert.ts b/scripts/convert.ts new file mode 100644 index 0000000..328bbfc --- /dev/null +++ b/scripts/convert.ts @@ -0,0 +1,36 @@ +// convert csv to json +import fs from 'fs' +import path from 'path' +import type { Recipe } from '~/types' + +const recipeCsvFile = path.resolve(__dirname, '../public/data/recipe.csv') +const recipeJsonFile = path.resolve(__dirname, '../public/data/recipe.json') + +function run() { + const csvData = fs.readFileSync(recipeCsvFile, 'utf-8') + const lines = csvData.split(/\r?\n/) + + if (lines[0] !== '名称,食材,链接,标签/描述,方法,工具') + console.log('Headers Changed!') + + const recipeJson: Recipe = [] + const sep = '、' + + lines.slice(1).forEach((line) => { + if (line) { + const attrs = line.split(',') + recipeJson.push({ + name: attrs[0], + stuff: attrs[1].split(sep), + link: attrs[2], + tags: attrs[3].split(sep), + methods: attrs[4].split(sep), + tools: attrs[5].split(sep), + }) + } + }) + + fs.writeFileSync(recipeJsonFile, JSON.stringify(recipeJson)) +} + +run() diff --git a/src/data/recipe.yml b/src/data/recipe.yml deleted file mode 100644 index d87ea9f..0000000 --- a/src/data/recipe.yml +++ /dev/null @@ -1,6 +0,0 @@ -- name: 干锅土豆片 - link: https://www.bilibili.com/video/BV1ZZ4y1A7HK - stuff: ['土豆'] - tags: ['下饭'] - methods: ['炒'] - tools: ['锅'] diff --git a/src/styles/css-vars.scss b/src/styles/css-vars.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/styles/index.scss b/src/styles/index.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/types/index.ts b/src/types/index.ts index 8fa90dc..f882582 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,3 +1,5 @@ import { type ViteSSGContext } from 'vite-ssg' export type UserModule = (ctx: ViteSSGContext) => void + +export * from './recipe'