feat: can convert csv to json

This commit is contained in:
YunYouJun
2022-04-13 23:29:42 +08:00
parent c355d51874
commit 86d0fe7bfe
9 changed files with 207 additions and 110 deletions

3
.gitignore vendored
View File

@@ -1,3 +1,6 @@
# auto generate
public/data/recipe.json
.DS_Store .DS_Store
.vite-ssg-dist .vite-ssg-dist
.vite-ssg-temp .vite-ssg-temp

View File

@@ -2,7 +2,8 @@
"private": true, "private": true,
"packageManager": "pnpm@6.32.3", "packageManager": "pnpm@6.32.3",
"scripts": { "scripts": {
"build": "vite-ssg build", "build": "npm run convert && vite-ssg build",
"convert": "esno scripts/convert.ts",
"dev": "vite --port 3333 --open", "dev": "vite --port 3333 --open",
"lint": "eslint .", "lint": "eslint .",
"preview": "vite preview", "preview": "vite preview",
@@ -29,15 +30,17 @@
"critters": "^0.0.16", "critters": "^0.0.16",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"eslint": "^8.13.0", "eslint": "^8.13.0",
"esno": "^0.14.1",
"https-localhost": "^4.7.1", "https-localhost": "^4.7.1",
"markdown-it-link-attributes": "^4.0.0", "markdown-it-link-attributes": "^4.0.0",
"markdown-it-prism": "^2.2.3", "markdown-it-prism": "^2.2.3",
"pnpm": "^6.32.6", "pnpm": "^6.32.6",
"sass": "^1.50.0",
"typescript": "^4.6.3", "typescript": "^4.6.3",
"unocss": "^0.31.2", "unocss": "^0.31.2",
"unplugin-auto-import": "^0.7.1", "unplugin-auto-import": "^0.7.1",
"unplugin-vue-components": "^0.19.2", "unplugin-vue-components": "^0.19.2",
"vite": "^2.9.1", "vite": "^2.9.2",
"vite-plugin-inspect": "^0.4.3", "vite-plugin-inspect": "^0.4.3",
"vite-plugin-md": "^0.12.4", "vite-plugin-md": "^0.12.4",
"vite-plugin-pages": "^0.22.0", "vite-plugin-pages": "^0.22.0",

260
pnpm-lock.yaml generated
View File

@@ -12,6 +12,7 @@ specifiers:
critters: ^0.0.16 critters: ^0.0.16
cross-env: ^7.0.3 cross-env: ^7.0.3
eslint: ^8.13.0 eslint: ^8.13.0
esno: ^0.14.1
https-localhost: ^4.7.1 https-localhost: ^4.7.1
markdown-it-link-attributes: ^4.0.0 markdown-it-link-attributes: ^4.0.0
markdown-it-prism: ^2.2.3 markdown-it-prism: ^2.2.3
@@ -19,11 +20,12 @@ specifiers:
pinia: ^2.0.13 pinia: ^2.0.13
pnpm: ^6.32.6 pnpm: ^6.32.6
prism-theme-vars: ^0.2.2 prism-theme-vars: ^0.2.2
sass: ^1.50.0
typescript: ^4.6.3 typescript: ^4.6.3
unocss: ^0.31.2 unocss: ^0.31.2
unplugin-auto-import: ^0.7.1 unplugin-auto-import: ^0.7.1
unplugin-vue-components: ^0.19.2 unplugin-vue-components: ^0.19.2
vite: ^2.9.1 vite: ^2.9.2
vite-plugin-inspect: ^0.4.3 vite-plugin-inspect: ^0.4.3
vite-plugin-md: ^0.12.4 vite-plugin-md: ^0.12.4
vite-plugin-pages: ^0.22.0 vite-plugin-pages: ^0.22.0
@@ -52,25 +54,27 @@ devDependencies:
'@iconify-json/ri': 1.1.1 '@iconify-json/ri': 1.1.1
'@types/markdown-it-link-attributes': 3.0.1 '@types/markdown-it-link-attributes': 3.0.1
'@types/nprogress': 0.2.0 '@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 critters: 0.0.16
cross-env: 7.0.3 cross-env: 7.0.3
eslint: 8.13.0 eslint: 8.13.0
esno: 0.14.1
https-localhost: 4.7.1 https-localhost: 4.7.1
markdown-it-link-attributes: 4.0.0 markdown-it-link-attributes: 4.0.0
markdown-it-prism: 2.2.3 markdown-it-prism: 2.2.3
pnpm: 6.32.6 pnpm: 6.32.6
sass: 1.50.0
typescript: 4.6.3 typescript: 4.6.3
unocss: 0.31.2_vite@2.9.1 unocss: 0.31.2_vite@2.9.2
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
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
vite: 2.9.1 vite: 2.9.2_sass@1.50.0
vite-plugin-inspect: 0.4.3_vite@2.9.1 vite-plugin-inspect: 0.4.3_vite@2.9.2
vite-plugin-md: 0.12.4_vite@2.9.1 vite-plugin-md: 0.12.4_vite@2.9.2
vite-plugin-pages: 0.22.0_vite@2.9.1 vite-plugin-pages: 0.22.0_vite@2.9.2
vite-plugin-pwa: 0.11.13_vite@2.9.1 vite-plugin-pwa: 0.11.13_vite@2.9.2
vite-plugin-vue-layouts: 0.6.0_632ba600628532367cf4681a9236eee5 vite-plugin-vue-layouts: 0.6.0_19e98d1a87783d01efb725acc506d368
vite-ssg: 0.19.2_6752f1b72378616bf394242b91140628 vite-ssg: 0.19.2_04592499939e923446fa8d60d79e6adf
vite-ssg-sitemap: 0.2.2 vite-ssg-sitemap: 0.2.2
vue-tsc: 0.34.6_typescript@4.6.3 vue-tsc: 0.34.6_typescript@4.6.3
@@ -1806,7 +1810,7 @@ packages:
'@unocss/core': 0.31.2 '@unocss/core': 0.31.2
dev: true dev: true
/@unocss/vite/0.31.2_vite@2.9.1: /@unocss/vite/0.31.2_vite@2.9.2:
resolution: {integrity: sha512-6aIGWNBYuhpokE3qWRCQqMjFwUoM91yLnInhpHQ4Q6W6Py8i8NZIUxnsp2qOmNHjrf5BwTnJlkFyisbQLCdvwg==} resolution: {integrity: sha512-6aIGWNBYuhpokE3qWRCQqMjFwUoM91yLnInhpHQ4Q6W6Py8i8NZIUxnsp2qOmNHjrf5BwTnJlkFyisbQLCdvwg==}
peerDependencies: peerDependencies:
vite: ^2.9.0 vite: ^2.9.0
@@ -1818,17 +1822,17 @@ packages:
'@unocss/scope': 0.31.2 '@unocss/scope': 0.31.2
'@unocss/transformer-directives': 0.31.2 '@unocss/transformer-directives': 0.31.2
magic-string: 0.26.1 magic-string: 0.26.1
vite: 2.9.1 vite: 2.9.2_sass@1.50.0
dev: true 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==} resolution: {integrity: sha512-YNzBt8+jt6bSwpt7LP890U1UcTOIZZxfpE5WOJ638PNxSEKOqAi0+FSKS0nVeukfdZ0Ai/H7AFd6k3hayfGZqQ==}
engines: {node: '>=12.0.0'} engines: {node: '>=12.0.0'}
peerDependencies: peerDependencies:
vite: ^2.5.10 vite: ^2.5.10
vue: ^3.2.25 vue: ^3.2.25
dependencies: dependencies:
vite: 2.9.1 vite: 2.9.2_sass@1.50.0
vue: 3.2.32 vue: 3.2.32
dev: true dev: true
@@ -2909,8 +2913,8 @@ packages:
is-symbol: 1.0.4 is-symbol: 1.0.4
dev: true dev: true
/esbuild-android-64/0.14.27: /esbuild-android-64/0.14.36:
resolution: {integrity: sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ==} resolution: {integrity: sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [android] os: [android]
@@ -2918,8 +2922,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-android-arm64/0.14.27: /esbuild-android-arm64/0.14.36:
resolution: {integrity: sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ==} resolution: {integrity: sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
@@ -2927,8 +2931,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-darwin-64/0.14.27: /esbuild-darwin-64/0.14.36:
resolution: {integrity: sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g==} resolution: {integrity: sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
@@ -2936,8 +2940,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-darwin-arm64/0.14.27: /esbuild-darwin-arm64/0.14.36:
resolution: {integrity: sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ==} resolution: {integrity: sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
@@ -2945,8 +2949,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-freebsd-64/0.14.27: /esbuild-freebsd-64/0.14.36:
resolution: {integrity: sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA==} resolution: {integrity: sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [freebsd] os: [freebsd]
@@ -2954,8 +2958,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-freebsd-arm64/0.14.27: /esbuild-freebsd-arm64/0.14.36:
resolution: {integrity: sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA==} resolution: {integrity: sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [freebsd] os: [freebsd]
@@ -2963,8 +2967,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-32/0.14.27: /esbuild-linux-32/0.14.36:
resolution: {integrity: sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw==} resolution: {integrity: sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [ia32] cpu: [ia32]
os: [linux] os: [linux]
@@ -2972,8 +2976,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-64/0.14.27: /esbuild-linux-64/0.14.36:
resolution: {integrity: sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg==} resolution: {integrity: sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@@ -2981,8 +2985,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-arm/0.14.27: /esbuild-linux-arm/0.14.36:
resolution: {integrity: sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw==} resolution: {integrity: sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
@@ -2990,8 +2994,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-arm64/0.14.27: /esbuild-linux-arm64/0.14.36:
resolution: {integrity: sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ==} resolution: {integrity: sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
@@ -2999,8 +3003,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-mips64le/0.14.27: /esbuild-linux-mips64le/0.14.36:
resolution: {integrity: sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A==} resolution: {integrity: sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [mips64el] cpu: [mips64el]
os: [linux] os: [linux]
@@ -3008,8 +3012,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-ppc64le/0.14.27: /esbuild-linux-ppc64le/0.14.36:
resolution: {integrity: sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA==} resolution: {integrity: sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
@@ -3017,8 +3021,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-riscv64/0.14.27: /esbuild-linux-riscv64/0.14.36:
resolution: {integrity: sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg==} resolution: {integrity: sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
@@ -3026,8 +3030,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-s390x/0.14.27: /esbuild-linux-s390x/0.14.36:
resolution: {integrity: sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg==} resolution: {integrity: sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
@@ -3035,8 +3039,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-netbsd-64/0.14.27: /esbuild-netbsd-64/0.14.36:
resolution: {integrity: sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q==} resolution: {integrity: sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [netbsd] os: [netbsd]
@@ -3044,8 +3048,14 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-openbsd-64/0.14.27: /esbuild-node-loader/0.6.5:
resolution: {integrity: sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw==} 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'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [openbsd] os: [openbsd]
@@ -3053,8 +3063,16 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-sunos-64/0.14.27: /esbuild-register/3.3.2_esbuild@0.14.36:
resolution: {integrity: sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg==} 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'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [sunos] os: [sunos]
@@ -3062,8 +3080,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-windows-32/0.14.27: /esbuild-windows-32/0.14.36:
resolution: {integrity: sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw==} resolution: {integrity: sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
@@ -3071,8 +3089,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-windows-64/0.14.27: /esbuild-windows-64/0.14.36:
resolution: {integrity: sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg==} resolution: {integrity: sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@@ -3080,8 +3098,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-windows-arm64/0.14.27: /esbuild-windows-arm64/0.14.36:
resolution: {integrity: sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg==} resolution: {integrity: sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
@@ -3089,32 +3107,32 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild/0.14.27: /esbuild/0.14.36:
resolution: {integrity: sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q==} resolution: {integrity: sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==}
engines: {node: '>=12'} engines: {node: '>=12'}
hasBin: true hasBin: true
requiresBuild: true requiresBuild: true
optionalDependencies: optionalDependencies:
esbuild-android-64: 0.14.27 esbuild-android-64: 0.14.36
esbuild-android-arm64: 0.14.27 esbuild-android-arm64: 0.14.36
esbuild-darwin-64: 0.14.27 esbuild-darwin-64: 0.14.36
esbuild-darwin-arm64: 0.14.27 esbuild-darwin-arm64: 0.14.36
esbuild-freebsd-64: 0.14.27 esbuild-freebsd-64: 0.14.36
esbuild-freebsd-arm64: 0.14.27 esbuild-freebsd-arm64: 0.14.36
esbuild-linux-32: 0.14.27 esbuild-linux-32: 0.14.36
esbuild-linux-64: 0.14.27 esbuild-linux-64: 0.14.36
esbuild-linux-arm: 0.14.27 esbuild-linux-arm: 0.14.36
esbuild-linux-arm64: 0.14.27 esbuild-linux-arm64: 0.14.36
esbuild-linux-mips64le: 0.14.27 esbuild-linux-mips64le: 0.14.36
esbuild-linux-ppc64le: 0.14.27 esbuild-linux-ppc64le: 0.14.36
esbuild-linux-riscv64: 0.14.27 esbuild-linux-riscv64: 0.14.36
esbuild-linux-s390x: 0.14.27 esbuild-linux-s390x: 0.14.36
esbuild-netbsd-64: 0.14.27 esbuild-netbsd-64: 0.14.36
esbuild-openbsd-64: 0.14.27 esbuild-openbsd-64: 0.14.36
esbuild-sunos-64: 0.14.27 esbuild-sunos-64: 0.14.36
esbuild-windows-32: 0.14.27 esbuild-windows-32: 0.14.36
esbuild-windows-64: 0.14.27 esbuild-windows-64: 0.14.36
esbuild-windows-arm64: 0.14.27 esbuild-windows-arm64: 0.14.36
dev: true dev: true
/escalade/3.1.1: /escalade/3.1.1:
@@ -3442,6 +3460,17 @@ packages:
- supports-color - supports-color
dev: true 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: /espree/9.3.1:
resolution: {integrity: sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==} resolution: {integrity: sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -4003,6 +4032,10 @@ packages:
engines: {node: '>= 4'} engines: {node: '>= 4'}
dev: true dev: true
/immutable/4.0.0:
resolution: {integrity: sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==}
dev: true
/import-fresh/3.3.0: /import-fresh/3.3.0:
resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
engines: {node: '>=6'} engines: {node: '>=6'}
@@ -4011,6 +4044,12 @@ packages:
resolve-from: 4.0.0 resolve-from: 4.0.0
dev: true dev: true
/import-meta-resolve/1.1.1:
resolution: {integrity: sha512-JiTuIvVyPaUg11eTrNDx5bgQ/yMKMZffc7YSjvQeSMXy58DO2SQ8BtAf3xteZvmzvjYh14wnqNjL8XVeDy2o9A==}
dependencies:
builtins: 4.0.0
dev: true
/imurmurhash/0.1.4: /imurmurhash/0.1.4:
resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=}
engines: {node: '>=0.8.19'} engines: {node: '>=0.8.19'}
@@ -4694,6 +4733,12 @@ packages:
resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==} resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true 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: /natural-compare/1.4.0:
resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=}
@@ -5047,7 +5092,7 @@ packages:
resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==} resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==}
engines: {node: ^10 || ^12 || >=14} engines: {node: ^10 || ^12 || >=14}
dependencies: dependencies:
nanoid: 3.3.1 nanoid: 3.3.2
picocolors: 1.0.0 picocolors: 1.0.0
source-map-js: 1.0.2 source-map-js: 1.0.2
@@ -5354,6 +5399,16 @@ packages:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
dev: true 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: /saxes/5.0.1:
resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==}
engines: {node: '>=10'} engines: {node: '>=10'}
@@ -5910,7 +5965,7 @@ packages:
engines: {node: '>= 10.0.0'} engines: {node: '>= 10.0.0'}
dev: true dev: true
/unocss/0.31.2_vite@2.9.1: /unocss/0.31.2_vite@2.9.2:
resolution: {integrity: sha512-ZPu14276pTa89o9b9mEcyh7/oK3lwiwESyyAIAvr5zrWgOiXv1GcoMbGUFnl9szj1GSZF2qo3z9nO8OTaAbWRQ==} resolution: {integrity: sha512-ZPu14276pTa89o9b9mEcyh7/oK3lwiwESyyAIAvr5zrWgOiXv1GcoMbGUFnl9szj1GSZF2qo3z9nO8OTaAbWRQ==}
engines: {node: '>=14'} engines: {node: '>=14'}
dependencies: dependencies:
@@ -5926,7 +5981,7 @@ packages:
'@unocss/reset': 0.31.2 '@unocss/reset': 0.31.2
'@unocss/transformer-directives': 0.31.2 '@unocss/transformer-directives': 0.31.2
'@unocss/transformer-variant-group': 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: transitivePeerDependencies:
- debug - debug
- supports-color - supports-color
@@ -5938,7 +5993,7 @@ packages:
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
dev: true 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==} resolution: {integrity: sha512-9865OV9eP99PNxHR2mtTDExeN01m4M9boT5U2BtIwsU1wDRsaFIYWLwcCBEjvXzXfTTC2NNMskhHGVAMfL2WgA==}
engines: {node: '>=14'} engines: {node: '>=14'}
peerDependencies: peerDependencies:
@@ -5953,7 +6008,7 @@ packages:
local-pkg: 0.4.1 local-pkg: 0.4.1
magic-string: 0.26.1 magic-string: 0.26.1
resolve: 1.22.0 resolve: 1.22.0
unplugin: 0.6.1_vite@2.9.1 unplugin: 0.6.1_vite@2.9.2
transitivePeerDependencies: transitivePeerDependencies:
- esbuild - esbuild
- rollup - rollup
@@ -5961,7 +6016,7 @@ packages:
- webpack - webpack
dev: true 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==} resolution: {integrity: sha512-7DhQfTyHLyVIWR6VBQONLU6dDBOXtEYvZQYUpN9C+t11WOb5baIFoxfzDxkeFHTHGMhznyEOw6afHyV9JKWnig==}
engines: {node: '>=14'} engines: {node: '>=14'}
peerDependencies: peerDependencies:
@@ -5983,7 +6038,7 @@ packages:
magic-string: 0.26.1 magic-string: 0.26.1
minimatch: 5.0.1 minimatch: 5.0.1
resolve: 1.22.0 resolve: 1.22.0
unplugin: 0.6.1_vite@2.9.1 unplugin: 0.6.1_vite@2.9.2
vue: 3.2.32 vue: 3.2.32
transitivePeerDependencies: transitivePeerDependencies:
- esbuild - esbuild
@@ -5993,7 +6048,7 @@ packages:
- webpack - webpack
dev: true dev: true
/unplugin/0.6.1_vite@2.9.1: /unplugin/0.6.1_vite@2.9.2:
resolution: {integrity: sha512-cQqRCgQ2v/Q4fPIWNVZ6sNIDdl5v8JXOnlsUOsGzT4fblTONoPWaytiYSpu5qJ9lvSDZYAQN6BRVo3XQoZMfUQ==} resolution: {integrity: sha512-cQqRCgQ2v/Q4fPIWNVZ6sNIDdl5v8JXOnlsUOsGzT4fblTONoPWaytiYSpu5qJ9lvSDZYAQN6BRVo3XQoZMfUQ==}
peerDependencies: peerDependencies:
esbuild: '>=0.13' esbuild: '>=0.13'
@@ -6011,7 +6066,7 @@ packages:
optional: true optional: true
dependencies: dependencies:
chokidar: 3.5.3 chokidar: 3.5.3
vite: 2.9.1 vite: 2.9.2_sass@1.50.0
webpack-sources: 3.2.3 webpack-sources: 3.2.3
webpack-virtual-modules: 0.4.3 webpack-virtual-modules: 0.4.3
dev: true dev: true
@@ -6056,7 +6111,7 @@ packages:
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
dev: true 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==} resolution: {integrity: sha512-lj3oWnReRUwMHB7k8ZD8o6E27/OSn+8ua+tOftxuS39aM6Z9MG7m5r1CMlxMwEwdTM/wnQr0aH22Y2IX3e+++w==}
engines: {node: '>=14'} engines: {node: '>=14'}
peerDependencies: peerDependencies:
@@ -6067,12 +6122,12 @@ packages:
kolorist: 1.5.1 kolorist: 1.5.1
sirv: 2.0.2 sirv: 2.0.2
ufo: 0.7.11 ufo: 0.7.11
vite: 2.9.1 vite: 2.9.2_sass@1.50.0
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true 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==} resolution: {integrity: sha512-qtkzpHAvdp/Zo/2ntmCpfph2JD4F0+tOl1vK3QVAZztpWyoO7Yi8Y2Dqu7Urrnh/fPH7PnIWlrrQy1XV/D92Pg==}
peerDependencies: peerDependencies:
vite: ^2.0.0 vite: ^2.0.0
@@ -6083,10 +6138,10 @@ packages:
'@vue/runtime-core': 3.2.31 '@vue/runtime-core': 3.2.31
gray-matter: 4.0.3 gray-matter: 4.0.3
markdown-it: 12.3.2 markdown-it: 12.3.2
vite: 2.9.1 vite: 2.9.2_sass@1.50.0
dev: true 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==} resolution: {integrity: sha512-OeCtSKoQNjrjtlNgkF4JTU0UdiZsa0cSQJKFyRoUz5KMbGoXR8O29BB2fZx9tMSBPyQJgGvIpzdoofLDaRNcQQ==}
peerDependencies: peerDependencies:
'@vue/compiler-sfc': '>=3' '@vue/compiler-sfc': '>=3'
@@ -6101,13 +6156,13 @@ packages:
json5: 2.2.0 json5: 2.2.0
local-pkg: 0.4.1 local-pkg: 0.4.1
picocolors: 1.0.0 picocolors: 1.0.0
vite: 2.9.1 vite: 2.9.2_sass@1.50.0
yaml: 2.0.0-10 yaml: 2.0.0-10
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true 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==} resolution: {integrity: sha512-Ssj14m3TRVLfkFEAWSMcFE2d1cSdEZyrVTzfY2lSL+umHYvcIFHVDAY143sygtBCb44OPczsAOmWwBTxwOvh7g==}
peerDependencies: peerDependencies:
vite: ^2.0.0 vite: ^2.0.0
@@ -6116,7 +6171,7 @@ packages:
fast-glob: 3.2.11 fast-glob: 3.2.11
pretty-bytes: 5.6.0 pretty-bytes: 5.6.0
rollup: 2.70.1 rollup: 2.70.1
vite: 2.9.1 vite: 2.9.2_sass@1.50.0
workbox-build: 6.5.1 workbox-build: 6.5.1
workbox-window: 6.5.1 workbox-window: 6.5.1
transitivePeerDependencies: transitivePeerDependencies:
@@ -6124,7 +6179,7 @@ packages:
- supports-color - supports-color
dev: true 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==} resolution: {integrity: sha512-7QX7o/NpCfs+hyXphwYfmPqAEQ6qd4uXsvI0VsovjGT2eCoEE5dMdP6L+uqqNWY4uqv7oCvtinecZmbzZv/9Rg==}
peerDependencies: peerDependencies:
vite: ^2.5.0 vite: ^2.5.0
@@ -6134,7 +6189,7 @@ packages:
'@vue/compiler-sfc': 3.2.31 '@vue/compiler-sfc': 3.2.31
debug: 4.3.3 debug: 4.3.3
fast-glob: 3.2.11 fast-glob: 3.2.11
vite: 2.9.1 vite: 2.9.2_sass@1.50.0
vue: 3.2.32 vue: 3.2.32
vue-router: 4.0.14_vue@3.2.32 vue-router: 4.0.14_vue@3.2.32
transitivePeerDependencies: transitivePeerDependencies:
@@ -6145,7 +6200,7 @@ packages:
resolution: {integrity: sha512-eXhdz4fs/RUvHk5n475NovTZkXLG/P7DKYdQ2i+nqF1tAeIGuK3gmN4Fycu1J2bA8eAoDO63Vlrc8MW9QpiJuw==} resolution: {integrity: sha512-eXhdz4fs/RUvHk5n475NovTZkXLG/P7DKYdQ2i+nqF1tAeIGuK3gmN4Fycu1J2bA8eAoDO63Vlrc8MW9QpiJuw==}
dev: true dev: true
/vite-ssg/0.19.2_6752f1b72378616bf394242b91140628: /vite-ssg/0.19.2_04592499939e923446fa8d60d79e6adf:
resolution: {integrity: sha512-r9UJJ4OTMyu9f4nNe12PMVhVkeXYp1rUKbIl6zIOz5QDYEDgFcq8hZGUMMIAcyHhB4pH5ImmjZd1hJ2fO6hOmg==} resolution: {integrity: sha512-r9UJJ4OTMyu9f4nNe12PMVhVkeXYp1rUKbIl6zIOz5QDYEDgFcq8hZGUMMIAcyHhB4pH5ImmjZd1hJ2fO6hOmg==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
hasBin: true hasBin: true
@@ -6167,7 +6222,7 @@ packages:
jsdom: 19.0.0 jsdom: 19.0.0
kolorist: 1.5.1 kolorist: 1.5.1
prettier: 2.6.0 prettier: 2.6.0
vite: 2.9.1 vite: 2.9.2_sass@1.50.0
vue: 3.2.32 vue: 3.2.32
vue-router: 4.0.14_vue@3.2.32 vue-router: 4.0.14_vue@3.2.32
yargs: 17.3.1 yargs: 17.3.1
@@ -6178,8 +6233,8 @@ packages:
- utf-8-validate - utf-8-validate
dev: true dev: true
/vite/2.9.1: /vite/2.9.2_sass@1.50.0:
resolution: {integrity: sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==} resolution: {integrity: sha512-ScbfYsiG1N/xE2TnZWYWJ8aOFBQovEl4VLU+0dktxqXvqdAvcTOEUM5YqwaBkmNHSHUGHLPd92tuXFQ35wDkVw==}
engines: {node: '>=12.2.0'} engines: {node: '>=12.2.0'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@@ -6194,10 +6249,11 @@ packages:
stylus: stylus:
optional: true optional: true
dependencies: dependencies:
esbuild: 0.14.27 esbuild: 0.14.36
postcss: 8.4.12 postcss: 8.4.12
resolve: 1.22.0 resolve: 1.22.0
rollup: 2.70.1 rollup: 2.70.1
sass: 1.50.0
optionalDependencies: optionalDependencies:
fsevents: 2.3.2 fsevents: 2.3.2
dev: true dev: true

3
public/data/recipe.csv Normal file
View File

@@ -0,0 +1,3 @@
名称,食材,链接,标签/描述,方法,工具
干锅土豆片,土豆,https://www.bilibili.com/video/BV1ZZ4y1A7HK,下饭,,
罗宋汤,土豆、西红柿、洋葱,https://www.bilibili.com/video/BV1gP4y1T7Z7,简易版,,
1 名称 食材 链接 标签/描述 方法 工具
2 干锅土豆片 土豆 https://www.bilibili.com/video/BV1ZZ4y1A7HK 下饭
3 罗宋汤 土豆、西红柿、洋葱 https://www.bilibili.com/video/BV1gP4y1T7Z7 简易版

36
scripts/convert.ts Normal file
View File

@@ -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()

View File

@@ -1,6 +0,0 @@
- name: 干锅土豆片
link: https://www.bilibili.com/video/BV1ZZ4y1A7HK
stuff: ['土豆']
tags: ['下饭']
methods: ['炒']
tools: ['锅']

0
src/styles/css-vars.scss Normal file
View File

0
src/styles/index.scss Normal file
View File

View File

@@ -1,3 +1,5 @@
import { type ViteSSGContext } from 'vite-ssg' import { type ViteSSGContext } from 'vite-ssg'
export type UserModule = (ctx: ViteSSGContext) => void export type UserModule = (ctx: ViteSSGContext) => void
export * from './recipe'