From 2f93207870bc31584abb3fa48685e53cb8b2d3d9 Mon Sep 17 00:00:00 2001 From: Stefan Buhrmester Date: Thu, 2 Sep 2021 07:24:43 +0200 Subject: [PATCH] mdsvex --- README.md | 11 +--- mdsvex.config.js | 14 +++++ package-lock.json | 110 +++++++++++++++++++++++++++++++++++++ package.json | 29 +++++----- src/layouts/default.svelte | 9 +++ src/routes/index.md | 9 +++ src/routes/index.svelte | 2 - static/admin/config.yml | 11 ++-- svelte.config.js | 12 +++- 9 files changed, 173 insertions(+), 34 deletions(-) create mode 100644 mdsvex.config.js create mode 100644 src/layouts/default.svelte create mode 100644 src/routes/index.md delete mode 100644 src/routes/index.svelte diff --git a/README.md b/README.md index 929813e..3729c79 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,13 @@ # sveltekit-netlify-cms -A preconfigured SvelteKit skeleton app with Netlify CMS living in `/admin`. +A SvelteKit skeleton app with Netlify CMS living in `/admin`. Netlify CMS is configured to directly edit `/routes/*.md` files, which are preprocessed by [mdsvex](https://mdsvex.com). Deploy to Netlify -## Downloading this template - -To download this template, open your command line and run: - -```bash -git pull https://github.com/buhrmi/sveltekit-netlify-cms -``` ## Developing -Once you've downloaded the template and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: +Once you've downloaded this repo and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: ```bash npm run dev diff --git a/mdsvex.config.js b/mdsvex.config.js new file mode 100644 index 0000000..34462bf --- /dev/null +++ b/mdsvex.config.js @@ -0,0 +1,14 @@ +const config = { + "extensions": [".svelte.md", ".md", ".svx"], + + "smartypants": { + "dashes": "oldschool" + }, + "layout": { + _: "./src/layouts/default.svelte" + }, + "remarkPlugins": [], + "rehypePlugins": [] +}; + +export default config; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9a5b62b..9a714a1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "devDependencies": { "@sveltejs/adapter-netlify": "^1.0.0-next.29", "@sveltejs/kit": "next", + "mdsvex": "^0.9.8", "svelte": "^3.34.0" } }, @@ -90,6 +91,12 @@ } } }, + "node_modules/@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, "node_modules/cheap-watch": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/cheap-watch/-/cheap-watch-1.0.3.tgz", @@ -200,6 +207,21 @@ "sourcemap-codec": "^1.4.4" } }, + "node_modules/mdsvex": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/mdsvex/-/mdsvex-0.9.8.tgz", + "integrity": "sha512-5QvThjRKoKkGH00qdHxLZ5ROd80RgGiJvM2B9opeFreaiGFTLoKKFUgEBCslLrwM24cVGJLmIM3rR83OFDf3tQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.3", + "prism-svelte": "^0.4.7", + "prismjs": "^1.17.1", + "vfile-message": "^2.0.4" + }, + "peerDependencies": { + "svelte": "3.x" + } + }, "node_modules/mri": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", @@ -263,6 +285,18 @@ "url": "https://opencollective.com/postcss/" } }, + "node_modules/prism-svelte": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/prism-svelte/-/prism-svelte-0.4.7.tgz", + "integrity": "sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==", + "dev": true + }, + "node_modules/prismjs": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.24.1.tgz", + "integrity": "sha512-mNPsedLuk90RVJioIky8ANZEwYm5w9LcvCXrxHlwf4fNVSn8jEipMybMkWUyyF0JhnC+C4VcOVSBuHRKs1L5Ow==", + "dev": true + }, "node_modules/require-relative": { "version": "0.8.7", "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", @@ -342,6 +376,33 @@ "svelte": ">=3.19.0" } }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/vite": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/vite/-/vite-2.5.3.tgz", @@ -417,6 +478,12 @@ "svelte-hmr": "^0.14.7" } }, + "@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, "cheap-watch": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/cheap-watch/-/cheap-watch-1.0.3.tgz", @@ -496,6 +563,18 @@ "sourcemap-codec": "^1.4.4" } }, + "mdsvex": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/mdsvex/-/mdsvex-0.9.8.tgz", + "integrity": "sha512-5QvThjRKoKkGH00qdHxLZ5ROd80RgGiJvM2B9opeFreaiGFTLoKKFUgEBCslLrwM24cVGJLmIM3rR83OFDf3tQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.3", + "prism-svelte": "^0.4.7", + "prismjs": "^1.17.1", + "vfile-message": "^2.0.4" + } + }, "mri": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", @@ -537,6 +616,18 @@ "source-map-js": "^0.6.2" } }, + "prism-svelte": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/prism-svelte/-/prism-svelte-0.4.7.tgz", + "integrity": "sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==", + "dev": true + }, + "prismjs": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.24.1.tgz", + "integrity": "sha512-mNPsedLuk90RVJioIky8ANZEwYm5w9LcvCXrxHlwf4fNVSn8jEipMybMkWUyyF0JhnC+C4VcOVSBuHRKs1L5Ow==", + "dev": true + }, "require-relative": { "version": "0.8.7", "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", @@ -596,6 +687,25 @@ "dev": true, "requires": {} }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.2" + } + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, "vite": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/vite/-/vite-2.5.3.tgz", diff --git a/package.json b/package.json index e737d0d..ff60376 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,16 @@ { - "name": "~TODO~", - "version": "0.0.1", - "scripts": { - "dev": "svelte-kit dev", - "build": "svelte-kit build", - "preview": "svelte-kit preview" - }, - "devDependencies": { - "@sveltejs/adapter-netlify": "^1.0.0-next.29", - "@sveltejs/kit": "next", - "svelte": "^3.34.0" - }, - "type": "module" -} + "name": "~TODO~", + "version": "0.0.1", + "scripts": { + "dev": "svelte-kit dev", + "build": "svelte-kit build", + "preview": "svelte-kit preview" + }, + "devDependencies": { + "@sveltejs/adapter-netlify": "^1.0.0-next.29", + "@sveltejs/kit": "next", + "mdsvex": "^0.9.8", + "svelte": "^3.34.0" + }, + "type": "module" +} \ No newline at end of file diff --git a/src/layouts/default.svelte b/src/layouts/default.svelte new file mode 100644 index 0000000..9412bbe --- /dev/null +++ b/src/layouts/default.svelte @@ -0,0 +1,9 @@ + + + + {title} + + + \ No newline at end of file diff --git a/src/routes/index.md b/src/routes/index.md new file mode 100644 index 0000000..1baeedd --- /dev/null +++ b/src/routes/index.md @@ -0,0 +1,9 @@ +--- +title: 'Welcome' +--- + +# Welcome to the SvelteKit Netlify CMS example + +You are viewing the `/routes/index.md` file, which is preprocessed by mdsex and is editable directly through Netlify CMS. + +See the [GitHub repo](https://github.com/buhrmi/sveltekit-netlify-cms) for more information. diff --git a/src/routes/index.svelte b/src/routes/index.svelte deleted file mode 100644 index b604d20..0000000 --- a/src/routes/index.svelte +++ /dev/null @@ -1,2 +0,0 @@ -

Welcome to the SvelteKit Netlify CMS example

-

Visit https://github.com/buhrmi/sveltekit-netlify-cms to get started.

diff --git a/static/admin/config.yml b/static/admin/config.yml index f454b4f..038e6e7 100644 --- a/static/admin/config.yml +++ b/static/admin/config.yml @@ -1,17 +1,16 @@ backend: name: git-gateway branch: main - base_url: https://api.netlify.com collections: - - name: pages - label: Pages - folder: content/pages + - name: routes + label: routes + folder: src/routes create: true fields: - name: title - name: body -media_folder: "static/netlify" -public_folder: "/netlify" +media_folder: "static/uploads" +public_folder: "/uploads" # site_url: https://your-site.com # display_url: https://your-site.com diff --git a/svelte.config.js b/svelte.config.js index 6ecc308..af3df71 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -1,6 +1,8 @@ +import { mdsvex } from "mdsvex"; +import mdsvexConfig from "./mdsvex.config.js"; import adapter from '@sveltejs/adapter-netlify' -export default { +const config = { kit: { adapter: adapter(), // currently the adapter does not take any options target: '#svelte', @@ -10,5 +12,9 @@ export default { onError: 'continue', pages: ['*'], }, - } -} \ No newline at end of file + }, + extensions: [".svelte", ...mdsvexConfig.extensions], + preprocess: [mdsvex(mdsvexConfig)] +}; + +export default config; \ No newline at end of file