Develop and demo your Svelte components in your README.md.
This project embraces the concept of Readme Driven Development (RDD) – or more generally, documentation driven development.
This module enables the README.md to be used for:
- developing a Svelte component
- demoing a Svelte component
- documentation
- installation
- usage
- API
- metadata
- links to Changelog, License etc.
At its core, this library is a simple Svelte preprocessor.
- Use the
svelteentry defined in your projectpackage.json - Use
README.mdas the Svelte source code - Parse Markdown using Markdown It
- Run code within
sveltecode fence blocks so that demos are juxtaposed with code
GitHub Markdown CSS is used for styling to maintain a consistent style with github.com.
This library exports two methods:
createConfig(default export): creates a Rollup InputOptions object for youpreprocessReadme: standalone Svelte markup preprocessor
createConfig is tightly coupled with Rollup. At a minimum, package.json#svelte and package.json#name are required.
package.json
{ "name": "my-svelte-component", "svelte": "./src/index.js", "main": "./lib/index.js", "module": "./lib/index.mjs", "scripts": { "dev": "rollup -cw", "build": "rollup -c", "prepack": "BUNDLE=true rollup -c" }, "homepage": "https://github.com/metonym/svelte-readme" }rollup.config.js
The default export from "svelte-readme" will create a Rollup configuration used to develop and generate the demo.
import resolve from "@rollup/plugin-node-resolve"; import svelte from "rollup-plugin-svelte"; import svelteReadme from "svelte-readme"; import pkg from "./package.json"; export default () => { if (process.env.BUNDLE !== "true") { return svelteReadme(); } return ["es", "umd"].map((format) => { const UMD = format === "umd"; return { input: pkg.svelte, output: { format, file: UMD ? pkg.main : pkg.module, name: UMD ? pkg.name : undefined, }, plugins: [svelte(), resolve()], }; }); };interface CreateConfigOptions { /** * set to `true` to minify the HTML/JS * @default false */ minify: boolean; /** * set the folder to emit the files * @default "dist" */ outDir: string; /** * custom CSS appended to the <style> block * @default "" */ style: string; /** * set to `true` to omit the default GitHub styles * @default false */ disableDefaultCSS: boolean; /** * value to prepend to relative URLs (i.e. GitHub repo URL) * @default undefined */ prefixUrl: string; /** * `rollup-plugin-svelte` options * @default {} */ svelte: RollupPluginSvelteOptions; /** * Rollup plugins * @default {[]} */ plugins: Plugin[]; /** * Rollup output options * @default {{}} */ output: OutputOptions; }Single line comments in Svelte script blocks are not supported.
Use multi-line comments instead.
- let toggled; // comment + let toggled; /** comment */This project is inspired by MDsveX.