Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yuanqing/single-page-markdown-website
:hot_pepper: Create a nice single-page documentation website from one or more Markdown files
https://github.com/yuanqing/single-page-markdown-website
docs markdown static-site-generator
Last synced: 8 days ago
JSON representation
:hot_pepper: Create a nice single-page documentation website from one or more Markdown files
- Host: GitHub
- URL: https://github.com/yuanqing/single-page-markdown-website
- Owner: yuanqing
- License: mit
- Created: 2020-11-30T00:45:40.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2021-11-23T03:19:11.000Z (about 3 years ago)
- Last Synced: 2024-12-12T05:42:15.989Z (9 days ago)
- Topics: docs, markdown, static-site-generator
- Language: TypeScript
- Homepage: https://yuanqing.github.io/single-page-markdown-website/
- Size: 1.89 MB
- Stars: 48
- Watchers: 4
- Forks: 15
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- starred - yuanqing/single-page-markdown-website - :hot_pepper: Create a nice single-page documentation website from one or more Markdown files (TypeScript)
README
![Single-Page Markdown Website](media/single-page-markdown-website.svg)
> Create a nice single-page documentation website from one or more Markdown files
# Features
- Zero configuration
- Render a table of contents, shortcuts to the top-level sections, and custom links
- Include the contents of other Markdown files using a special syntax
- Responsive from mobile and up
- Dark mode (follows system settings)# Quick start
*Requires [Node.js](https://nodejs.org).*
```sh
$ npx --yes -- single-page-markdown-website '*.md' --open
```The above command does the following:
- Concatenates the given globs of Markdown files (`'*.md'`) and renders the result as a single-page website to `./build/index.html`.
- Copies any local image file referenced in the Markdown to `./build/images`.
- Opens the rendered page in your default web browser.# Configuration
Configuration is via the **`"single-page-markdown-website"`** key of your `package.json` file.
- Single-Page Markdown Website works without configuration out of the box; all configuration options are optional.
- Some configuration options default to values specified in your `package.json` or `lerna.json`.```json
{
"single-page-markdown-website": {
"baseUrl": "https://yuanqing.github.io/single-page-markdown-website/",
"title": "Single-Page Markdown Website",
"description": "Create a nice single-page documentation website from one or more Markdown files",
"toc": true,
"sections": true,
"links": [
{
"text": "GitHub",
"url": "https://github.com/yuanqing/single-page-markdown-website"
}
],
"faviconImage": "media/favicon.svg",
"shareImage": "media/share.png"
}
}
```## `"baseUrl"`
(*`null`* or *`string`*)
The base URL of the single-page website.
- Defaults to `null`
## `"title"`
(*`null`* or *`string`*)
The title of the page.
- Defaults to `packageJson.name`, else `null`
## `"description"`
(*`null`* or *`string`*)
The `meta` description of the page.
- Defaults to `packageJson.description`, else `null`
## `"toc"`
(*`boolean`*)
Whether to render a Table of Contents.
- Defaults to `true`
## `"sections"`
(*`boolean`*)
Whether to render sections shortcuts in the menu. (Sections are the level-one headers (`# `) in the Markdown.)
- Defaults to `true`
## `"links"`
(*`Array<{ text: string, url: string }>`*)
A list of links to add to the menu.
- Defaults to `[{ text: 'GitHub', url: packageJson.homepage }]`, else `null`
## `"faviconImage"`
(*`null`* or *`string`*)
The URL or file path of the favicon image to use.
- Defaults to `null`
## `"shareImage"`
(*`null`* or *`string`*)
The URL or file path of the share image to use.
- Defaults to `null`
## `"version"`
(*`null`* or *`string`*)
The version number to show beside the title.
- Defaults to `v${lernaJson.version}`, else `v${packageJson.version}`, else `null`
# Tips
## Including files
Use the following syntax to include the entire contents of a local file `foo.md` in your Markdown:
```
./foo.md
```
Note that an empty line is required immediately before and after the file path.
- If the `./` prefix is used, then the file path is resolved relative to the current Markdown file.
- If the `/` prefix is used, then the file path is resolved relative to the current working directory (ie. `process.cwd()`).You can also specify a glob to include multiple files:
```
./bar/*.md
```
## Deploying to GitHub Pages
Deploy your single-page website to [GitHub Pages](https://pages.github.com/) via one of the following two ways:
1. Commit the `./build` directory and push your changes. Then, set the `./build` directory as the [publishing source](https://docs.github.com/en/free-pro-team@latest/github/working-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site) in your GitHub repository settings.
2. Use the [`gh-pages`](https://github.com/tschaub/gh-pages) CLI to deploy the `./build` directory to the `gh-pages` branch:
```sh
$ npx --yes -- gh-pages --dist build
```Then, set the `gh-pages` branch as the publishing source in your GitHub repository settings.
## Deploying to Cloudflare Pages
To deploy your single-page website to [Cloudflare Pages](https://pages.cloudflare.com/), use the following settings in your [build configuration](https://developers.cloudflare.com/pages/get-started#configuring-your-deployment):
- Build command: `exit 0`
- Build output directory: `/build`
- Root directory: `/`# CLI
```
Create a nice single-page documentation website from one or more Markdown files.
Usage:
$ single-page-markdown-website [options]Arguments:
One or more globs of Markdown files. Defaults to 'README.md'.Options:
-h, --help Print this message.
-p, --open Whether to open the generated page in the default web
browser. Defaults to 'false'.
-o, --output Set the output directory. Defaults to './build'.
-v, --version Print the version.
-w, --watch Whether to watch for changes and regenerate the page.
Defaults to 'false'.Examples:
$ single-page-markdown-website
$ single-page-markdown-website '*.md'
$ single-page-markdown-website --open
$ single-page-markdown-website --output dist
$ single-page-markdown-website --watch```