├── .gitignore ├── README.md ├── jsconfig.json ├── mdsvex.config.js ├── netlify.toml ├── package-lock.json ├── package.json ├── src ├── app.html ├── global.d.ts ├── layouts │ └── default.svelte ├── metadata.js └── routes │ ├── contact.md │ └── index.md ├── static ├── admin │ ├── config.yml │ └── index.html └── favicon.png └── svelte.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # sveltekit-netlify-cms 2 | 3 | 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). 4 | 5 | Deploy to Netlify 6 | 7 | [Demo](https://sveltekit-netlify-cms.netlify.app) 8 | 9 | ## Developing 10 | 11 | Once you've downloaded this repo and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: 12 | 13 | ```bash 14 | npm run dev 15 | 16 | # or start the server and open the app in a new browser tab 17 | npm run dev -- --open 18 | ``` 19 | 20 | ## Building 21 | 22 | To create the production version of your app, run: 23 | 24 | ```bash 25 | npm run build 26 | ``` 27 | 28 | > You can preview the built app with `npm run preview`. However, this should _not_ be used to serve your app in production. 29 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "paths": { 5 | "$lib": ["src/lib"], 6 | "$lib/*": ["src/lib/*"] 7 | } 8 | }, 9 | "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"] 10 | } 11 | -------------------------------------------------------------------------------- /mdsvex.config.js: -------------------------------------------------------------------------------- 1 | const config = { 2 | "extensions": [".svelte.md", ".md", ".svx"], 3 | 4 | "smartypants": { 5 | "dashes": "oldschool" 6 | }, 7 | "layout": { 8 | _: "./src/layouts/default.svelte" 9 | }, 10 | "remarkPlugins": [], 11 | "rehypePlugins": [] 12 | }; 13 | 14 | export default config; -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | command = "npm run build" 3 | publish = "build" 4 | 5 | [dev] 6 | command = "svelte-kit dev" 7 | 8 | [functions] 9 | directory = "netlify/functions" 10 | node_bundler = "esbuild" -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "~TODO~", 3 | "version": "0.0.1", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@iarna/toml": { 8 | "version": "2.2.5", 9 | "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", 10 | "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", 11 | "dev": true 12 | }, 13 | "@rollup/pluginutils": { 14 | "version": "4.1.1", 15 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.1.tgz", 16 | "integrity": "sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ==", 17 | "dev": true, 18 | "requires": { 19 | "estree-walker": "^2.0.1", 20 | "picomatch": "^2.2.2" 21 | } 22 | }, 23 | "@sveltejs/adapter-netlify": { 24 | "version": "1.0.0-next.33", 25 | "resolved": "https://registry.npmjs.org/@sveltejs/adapter-netlify/-/adapter-netlify-1.0.0-next.33.tgz", 26 | "integrity": "sha512-moLWLlotUy2CJlVEdnwFZnW/EH3BlEg6yk4KRjO35nrNw/w3uX6Owk1HwU8u09tqTddWyo3t58T0ZYvWW5IMdg==", 27 | "dev": true, 28 | "requires": { 29 | "@iarna/toml": "^2.2.5", 30 | "esbuild": "^0.13.4" 31 | } 32 | }, 33 | "@sveltejs/kit": { 34 | "version": "1.0.0-next.183", 35 | "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.183.tgz", 36 | "integrity": "sha512-XS115RLu8mQk0wZ33BF6sKHEQD8BUFhErfxJhEkXoR4m2bW1h1JBLKHaZ1qnG9eAPkalmccCXDMxJjuYVCh/oQ==", 37 | "dev": true, 38 | "requires": { 39 | "@sveltejs/vite-plugin-svelte": "^1.0.0-next.27", 40 | "cheap-watch": "^1.0.4", 41 | "sade": "^1.7.4", 42 | "vite": "^2.6.7" 43 | } 44 | }, 45 | "@sveltejs/vite-plugin-svelte": { 46 | "version": "1.0.0-next.27", 47 | "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.27.tgz", 48 | "integrity": "sha512-hiau09LA/5eGGFTxXtRPIxKmWw8By8t+Vw+uvgKYeUf+4zJLe/Q5yX3Przf2CmW0J6fPi4NWWIeYsLrOd78a2w==", 49 | "dev": true, 50 | "requires": { 51 | "@rollup/pluginutils": "^4.1.1", 52 | "debug": "^4.3.2", 53 | "kleur": "^4.1.4", 54 | "magic-string": "^0.25.7", 55 | "require-relative": "^0.8.7", 56 | "svelte-hmr": "^0.14.7" 57 | } 58 | }, 59 | "@types/unist": { 60 | "version": "2.0.6", 61 | "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", 62 | "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", 63 | "dev": true 64 | }, 65 | "cheap-watch": { 66 | "version": "1.0.4", 67 | "resolved": "https://registry.npmjs.org/cheap-watch/-/cheap-watch-1.0.4.tgz", 68 | "integrity": "sha512-QR/9FrtRL5fjfUJBhAKCdi0lSRQ3rVRRum3GF9wDKp2TJbEIMGhUEr2yU8lORzm9Isdjx7/k9S0DFDx+z5VGtw==", 69 | "dev": true 70 | }, 71 | "debug": { 72 | "version": "4.3.2", 73 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", 74 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", 75 | "dev": true, 76 | "requires": { 77 | "ms": "2.1.2" 78 | } 79 | }, 80 | "esbuild": { 81 | "version": "0.13.6", 82 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.6.tgz", 83 | "integrity": "sha512-zkMkYwC9ohVe6qxXykKf/4jfbtM/09CL8UEEnwuhO7Xq8NOTN2yAwCrmKKvHlGrEej6Y8e/tAmHB7wMMg7O0ew==", 84 | "dev": true, 85 | "requires": { 86 | "esbuild-android-arm64": "0.13.6", 87 | "esbuild-darwin-64": "0.13.6", 88 | "esbuild-darwin-arm64": "0.13.6", 89 | "esbuild-freebsd-64": "0.13.6", 90 | "esbuild-freebsd-arm64": "0.13.6", 91 | "esbuild-linux-32": "0.13.6", 92 | "esbuild-linux-64": "0.13.6", 93 | "esbuild-linux-arm": "0.13.6", 94 | "esbuild-linux-arm64": "0.13.6", 95 | "esbuild-linux-mips64le": "0.13.6", 96 | "esbuild-linux-ppc64le": "0.13.6", 97 | "esbuild-netbsd-64": "0.13.6", 98 | "esbuild-openbsd-64": "0.13.6", 99 | "esbuild-sunos-64": "0.13.6", 100 | "esbuild-windows-32": "0.13.6", 101 | "esbuild-windows-64": "0.13.6", 102 | "esbuild-windows-arm64": "0.13.6" 103 | } 104 | }, 105 | "esbuild-android-arm64": { 106 | "version": "0.13.6", 107 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.6.tgz", 108 | "integrity": "sha512-uEwrMRzqNzXxzIi0K/CtHn3/SPoRso4Dd/aJCpf9KuX+kCs9Tlhz29cKbZieznYAekdo36fDUrZyuugAwSdI+A==", 109 | "dev": true, 110 | "optional": true 111 | }, 112 | "esbuild-darwin-64": { 113 | "version": "0.13.6", 114 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.6.tgz", 115 | "integrity": "sha512-oJdWZn2QV5LTM24/vVWaUFlMVlRhpG9zZIA6Xd+xbCULOURwYnYRQWIzRpXNtTfuAr3+em9PqKUaGtYqvO/DYg==", 116 | "dev": true, 117 | "optional": true 118 | }, 119 | "esbuild-darwin-arm64": { 120 | "version": "0.13.6", 121 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.6.tgz", 122 | "integrity": "sha512-+f8Yn5doTEpCWtBaGxciDTikxESdGCNZpLYtXzMJLTWFHr8zqfAf4TAYGvg6T5T6N7OMC8HHy3GM+BijFXDXMg==", 123 | "dev": true, 124 | "optional": true 125 | }, 126 | "esbuild-freebsd-64": { 127 | "version": "0.13.6", 128 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.6.tgz", 129 | "integrity": "sha512-Yb/DgZUX0C6i4vnOymthLzoWAJBYWbn3Y2F4wKEufsx2veGN/wlwO/yz7IWGVVzb2zMUqbt30hCLF61sUFe7gA==", 130 | "dev": true, 131 | "optional": true 132 | }, 133 | "esbuild-freebsd-arm64": { 134 | "version": "0.13.6", 135 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.6.tgz", 136 | "integrity": "sha512-UKYlEb7mwprSJ9VW9+q3/Mgxest45I6rGMB/hrKY1T6lqoBVhWS4BTbL4EGetWdk05Tw4njFAO9+nmxgl7jMlA==", 137 | "dev": true, 138 | "optional": true 139 | }, 140 | "esbuild-linux-32": { 141 | "version": "0.13.6", 142 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.6.tgz", 143 | "integrity": "sha512-hQCZfSLBYtn8f1afFT6Dh9KeLsW12xLqrqssbhpi/xfN9c/bbCh/QQZaR9ZOEnmBHHRPb7rbSo3jQqlCWYb7LQ==", 144 | "dev": true, 145 | "optional": true 146 | }, 147 | "esbuild-linux-64": { 148 | "version": "0.13.6", 149 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.6.tgz", 150 | "integrity": "sha512-bRQwsD+xJoajonfyeq5JpiNRogH4mYFYbYsGhwrtQ4pMGk93V/4KuKQiKEisRZO0hYhZL4MtxufwF195zKlCAw==", 151 | "dev": true, 152 | "optional": true 153 | }, 154 | "esbuild-linux-arm": { 155 | "version": "0.13.6", 156 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.6.tgz", 157 | "integrity": "sha512-qQUrpL7QoPqujXEFSpeu6QZ43z0+OdDPHDkLO0GPbpV/jebP7J+0FreMqoq7ZxWG4rPigwcRdEyqzHh8Bh4Faw==", 158 | "dev": true, 159 | "optional": true 160 | }, 161 | "esbuild-linux-arm64": { 162 | "version": "0.13.6", 163 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.6.tgz", 164 | "integrity": "sha512-sRc1lt9ma1xBvInCwpS77ywR6KVdcJNsErsrDkDXx3mVe8DLLEn05TG0nIX9I+s8ouHEepikdKCfe1DZdILRjQ==", 165 | "dev": true, 166 | "optional": true 167 | }, 168 | "esbuild-linux-mips64le": { 169 | "version": "0.13.6", 170 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.6.tgz", 171 | "integrity": "sha512-1lsHZaIsHlFkHn1QRa/EONPGVHwzdIrkKn6r2m9cYUIn2J+rKtJg0e+WkNG3MaIrxozaGKaiSPGvaG1toCbZjw==", 172 | "dev": true, 173 | "optional": true 174 | }, 175 | "esbuild-linux-ppc64le": { 176 | "version": "0.13.6", 177 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.6.tgz", 178 | "integrity": "sha512-x223JNC8XeLDf05zLaKfxqCEWVct4frp8ft8Qc13cha33TMrqMFaSPq6cgpgT2VYuUsXtwoocoWChKfvy+AUQg==", 179 | "dev": true, 180 | "optional": true 181 | }, 182 | "esbuild-netbsd-64": { 183 | "version": "0.13.6", 184 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.6.tgz", 185 | "integrity": "sha512-TonKf530kT25+zi1Da6esITmuBJe13QiN+QGVch6YE8t720IvIelDGwkOQN3Td7A0JjbSbK3u+Fo6YaL151VxQ==", 186 | "dev": true, 187 | "optional": true 188 | }, 189 | "esbuild-openbsd-64": { 190 | "version": "0.13.6", 191 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.6.tgz", 192 | "integrity": "sha512-WFa5J0IuyER0UJbCGw87gvGWXGfhxeNppYcvQjp0pWYuH4FS+YqphyjV0RJlybzzDpAXkyZ9RzkMFtSAp+6AUA==", 193 | "dev": true, 194 | "optional": true 195 | }, 196 | "esbuild-sunos-64": { 197 | "version": "0.13.6", 198 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.6.tgz", 199 | "integrity": "sha512-duCL8Ewri+zjKxuN/61maniDxcd8fHwSuubdAPofll0y0E6WcL/R/e/mQzhHIuoguFm5RJkKun1qua54javh7g==", 200 | "dev": true, 201 | "optional": true 202 | }, 203 | "esbuild-windows-32": { 204 | "version": "0.13.6", 205 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.6.tgz", 206 | "integrity": "sha512-U8RkpT4f0/dygA5ytFyHNZ/fRECU9LWBMrqWflNhM31iTi6RhU0QTuOzFYkmpYnwl358ZZhVoBeEOm313d4u4A==", 207 | "dev": true, 208 | "optional": true 209 | }, 210 | "esbuild-windows-64": { 211 | "version": "0.13.6", 212 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.6.tgz", 213 | "integrity": "sha512-A23VyUeyBfSWUYNL0jtrJi5M/2yR/RR8zfpGQ0wU0fldqV2vxnvmBYOBwRxexFYCDRpRWh4cPFsoYoXRCFa8Dg==", 214 | "dev": true, 215 | "optional": true 216 | }, 217 | "esbuild-windows-arm64": { 218 | "version": "0.13.6", 219 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.6.tgz", 220 | "integrity": "sha512-K/pFqK/s5C6wXYcFKO9iPY4yU3DI0/Gbl1W2+OhaPHoXu13VGBmqbCiQ5lohHGE72FFQl76naOjEayEiI+gDMQ==", 221 | "dev": true, 222 | "optional": true 223 | }, 224 | "estree-walker": { 225 | "version": "2.0.2", 226 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 227 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 228 | "dev": true 229 | }, 230 | "fsevents": { 231 | "version": "2.3.2", 232 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 233 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 234 | "dev": true, 235 | "optional": true 236 | }, 237 | "function-bind": { 238 | "version": "1.1.1", 239 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 240 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 241 | "dev": true 242 | }, 243 | "has": { 244 | "version": "1.0.3", 245 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 246 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 247 | "dev": true, 248 | "requires": { 249 | "function-bind": "^1.1.1" 250 | } 251 | }, 252 | "is-core-module": { 253 | "version": "2.7.0", 254 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", 255 | "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", 256 | "dev": true, 257 | "requires": { 258 | "has": "^1.0.3" 259 | } 260 | }, 261 | "kleur": { 262 | "version": "4.1.4", 263 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", 264 | "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", 265 | "dev": true 266 | }, 267 | "magic-string": { 268 | "version": "0.25.7", 269 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", 270 | "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", 271 | "dev": true, 272 | "requires": { 273 | "sourcemap-codec": "^1.4.4" 274 | } 275 | }, 276 | "mdsvex": { 277 | "version": "0.9.8", 278 | "resolved": "https://registry.npmjs.org/mdsvex/-/mdsvex-0.9.8.tgz", 279 | "integrity": "sha512-5QvThjRKoKkGH00qdHxLZ5ROd80RgGiJvM2B9opeFreaiGFTLoKKFUgEBCslLrwM24cVGJLmIM3rR83OFDf3tQ==", 280 | "dev": true, 281 | "requires": { 282 | "@types/unist": "^2.0.3", 283 | "prism-svelte": "^0.4.7", 284 | "prismjs": "^1.17.1", 285 | "vfile-message": "^2.0.4" 286 | } 287 | }, 288 | "mri": { 289 | "version": "1.2.0", 290 | "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", 291 | "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", 292 | "dev": true 293 | }, 294 | "ms": { 295 | "version": "2.1.2", 296 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 297 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 298 | "dev": true 299 | }, 300 | "nanoid": { 301 | "version": "3.1.30", 302 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", 303 | "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", 304 | "dev": true 305 | }, 306 | "path-parse": { 307 | "version": "1.0.7", 308 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 309 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 310 | "dev": true 311 | }, 312 | "picocolors": { 313 | "version": "0.2.1", 314 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", 315 | "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", 316 | "dev": true 317 | }, 318 | "picomatch": { 319 | "version": "2.3.0", 320 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", 321 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", 322 | "dev": true 323 | }, 324 | "postcss": { 325 | "version": "8.3.9", 326 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz", 327 | "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==", 328 | "dev": true, 329 | "requires": { 330 | "nanoid": "^3.1.28", 331 | "picocolors": "^0.2.1", 332 | "source-map-js": "^0.6.2" 333 | } 334 | }, 335 | "prism-svelte": { 336 | "version": "0.4.7", 337 | "resolved": "https://registry.npmjs.org/prism-svelte/-/prism-svelte-0.4.7.tgz", 338 | "integrity": "sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==", 339 | "dev": true 340 | }, 341 | "prismjs": { 342 | "version": "1.25.0", 343 | "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz", 344 | "integrity": "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==", 345 | "dev": true 346 | }, 347 | "require-relative": { 348 | "version": "0.8.7", 349 | "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", 350 | "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", 351 | "dev": true 352 | }, 353 | "resolve": { 354 | "version": "1.20.0", 355 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 356 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 357 | "dev": true, 358 | "requires": { 359 | "is-core-module": "^2.2.0", 360 | "path-parse": "^1.0.6" 361 | } 362 | }, 363 | "rollup": { 364 | "version": "2.58.0", 365 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz", 366 | "integrity": "sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==", 367 | "dev": true, 368 | "requires": { 369 | "fsevents": "~2.3.2" 370 | } 371 | }, 372 | "sade": { 373 | "version": "1.7.4", 374 | "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", 375 | "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", 376 | "dev": true, 377 | "requires": { 378 | "mri": "^1.1.0" 379 | } 380 | }, 381 | "source-map-js": { 382 | "version": "0.6.2", 383 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", 384 | "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", 385 | "dev": true 386 | }, 387 | "sourcemap-codec": { 388 | "version": "1.4.8", 389 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 390 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 391 | "dev": true 392 | }, 393 | "svelte": { 394 | "version": "3.43.2", 395 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.43.2.tgz", 396 | "integrity": "sha512-Lj+TJfSeod8UGnoG2opysdlCy4MCck/hHQsZwtNPXdYTwLTz+WC37QwewPhZtd+h3dpfps4h9QzFxWGVI4tzQw==", 397 | "dev": true 398 | }, 399 | "svelte-hmr": { 400 | "version": "0.14.7", 401 | "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.7.tgz", 402 | "integrity": "sha512-pDrzgcWSoMaK6AJkBWkmgIsecW0GChxYZSZieIYfCP0v2oPyx2CYU/zm7TBIcjLVUPP714WxmViE9Thht4etog==", 403 | "dev": true 404 | }, 405 | "unist-util-stringify-position": { 406 | "version": "2.0.3", 407 | "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", 408 | "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", 409 | "dev": true, 410 | "requires": { 411 | "@types/unist": "^2.0.2" 412 | } 413 | }, 414 | "vfile-message": { 415 | "version": "2.0.4", 416 | "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", 417 | "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", 418 | "dev": true, 419 | "requires": { 420 | "@types/unist": "^2.0.0", 421 | "unist-util-stringify-position": "^2.0.0" 422 | } 423 | }, 424 | "vite": { 425 | "version": "2.6.7", 426 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.6.7.tgz", 427 | "integrity": "sha512-ewk//jve9k6vlU8PfJmWUHN8k0YYdw4VaKOMvoQ3nT2Pb6k5OSMKQi4jPOzVH/TlUqMsCrq7IJ80xcuDDVyigg==", 428 | "dev": true, 429 | "requires": { 430 | "esbuild": "^0.13.2", 431 | "fsevents": "~2.3.2", 432 | "postcss": "^8.3.8", 433 | "resolve": "^1.20.0", 434 | "rollup": "^2.57.0" 435 | } 436 | } 437 | } 438 | } 439 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "~TODO~", 3 | "version": "0.0.1", 4 | "scripts": { 5 | "dev": "svelte-kit dev", 6 | "build": "svelte-kit build", 7 | "preview": "svelte-kit preview" 8 | }, 9 | "devDependencies": { 10 | "@sveltejs/adapter-netlify": "^1.0.0-next.29", 11 | "@sveltejs/kit": "next", 12 | "mdsvex": "^0.9.8", 13 | "svelte": "^3.34.0" 14 | }, 15 | "type": "module" 16 | } 17 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | %svelte.head% 9 | 10 | 11 |
%svelte.body%
12 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/global.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /src/layouts/default.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | {title} 11 | 12 | 13 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/metadata.js: -------------------------------------------------------------------------------- 1 | const modules = Object.entries(import.meta.globEager("./routes/**/*.md")); 2 | 3 | const getRoutes = () => { 4 | return modules.map(([file, module]) => { 5 | const path = file 6 | .replace("./routes/", "/") 7 | .replace("index", "") 8 | .replace(".md", ""); 9 | 10 | return { 11 | path, 12 | ...module.metadata, 13 | }; 14 | }); 15 | }; 16 | 17 | export { getRoutes }; 18 | -------------------------------------------------------------------------------- /src/routes/contact.md: -------------------------------------------------------------------------------- 1 | --- 2 | label: Contact 3 | title: Contact Us 4 | --- 5 | 6 | This is where the contact form will go -------------------------------------------------------------------------------- /src/routes/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | label: Home 3 | title: SvelteKit Netlify CMS 4 | --- 5 | 6 | # Welcome to the SvelteKit Netlify CMS example 7 | 8 | This is the [`/routes/index.md`](https://github.com/buhrmi/sveltekit-netlify-cms/blob/main/src/routes/index.md) file, which is preprocessed by [mdsvex](https://mdsvex.com) and is editable through Netlify CMS 9 | 10 | [![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/buhrmi/sveltekit-netlify-cms&stack=cms) or [view repo](https://github.com/buhrmi/sveltekit-netlify-cms) -------------------------------------------------------------------------------- /static/admin/config.yml: -------------------------------------------------------------------------------- 1 | backend: 2 | name: git-gateway 3 | branch: main 4 | collections: 5 | - name: routes 6 | label: routes 7 | folder: src/routes 8 | create: true 9 | fields: 10 | - name: title 11 | - name: nav_label 12 | - name: body 13 | widget: markdown 14 | media_folder: "static/uploads" 15 | public_folder: "/uploads" 16 | 17 | # site_url: https://your-site.com 18 | # display_url: https://your-site.com 19 | # logo_url: https://your-site.com/images/logo.svg -------------------------------------------------------------------------------- /static/admin/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Content Manager 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buhrmi/sveltekit-netlify-cms/2aad18796cf3f786e8928f36e4343ed326c0a7f6/static/favicon.png -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import { mdsvex } from "mdsvex"; 2 | import mdsvexConfig from "./mdsvex.config.js"; 3 | import adapter from '@sveltejs/adapter-netlify' 4 | 5 | const config = { 6 | kit: { 7 | adapter: adapter(), // currently the adapter does not take any options 8 | target: '#svelte', 9 | prerender: { 10 | crawl: true, 11 | enabled: true, 12 | onError: 'continue', 13 | entries: ['*'], 14 | }, 15 | }, 16 | extensions: [".svelte", ...mdsvexConfig.extensions], 17 | preprocess: [mdsvex(mdsvexConfig)] 18 | }; 19 | 20 | export default config; 21 | --------------------------------------------------------------------------------