@mgks/docmd 0.3.3 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +92 -100
- package/bin/docmd.js +55 -93
- package/docmd.config.js +175 -0
- package/package.json +16 -15
- package/scripts/build-live.js +157 -0
- package/scripts/test-live.js +54 -0
- package/src/assets/css/docmd-highlight-dark.css +1 -0
- package/src/assets/css/docmd-highlight-light.css +1 -0
- package/src/assets/css/docmd-main.css +1627 -0
- package/src/assets/css/docmd-theme-retro.css +868 -0
- package/src/assets/css/docmd-theme-ruby.css +629 -0
- package/src/assets/css/docmd-theme-sky.css +618 -0
- package/src/assets/favicon.ico +0 -0
- package/src/assets/images/docmd-logo-dark.png +0 -0
- package/src/assets/images/docmd-logo-light.png +0 -0
- package/src/assets/images/docmd-logo.png +0 -0
- package/src/assets/js/docmd-image-lightbox.js +74 -0
- package/src/assets/js/docmd-main.js +214 -0
- package/src/assets/js/docmd-mermaid.js +205 -0
- package/src/assets/js/docmd-search.js +218 -0
- package/src/commands/build.js +11 -6
- package/src/commands/dev.js +100 -189
- package/src/commands/init.js +8 -8
- package/src/core/config-loader.js +23 -3
- package/src/core/file-processor.js +8 -2
- package/src/core/html-generator.js +107 -102
- package/src/live/core.js +63 -0
- package/src/live/index.html +201 -0
- package/src/live/live.css +167 -0
- package/src/live/shims.js +1 -0
- package/src/live/templates.js +9 -0
- package/src/templates/layout.ejs +11 -11
- package/src/templates/navigation.ejs +69 -7
- package/config.js +0 -175
package/README.md
CHANGED
|
@@ -1,68 +1,63 @@
|
|
|
1
|
-
<
|
|
2
|
-
<br>
|
|
1
|
+
<div align="center">
|
|
3
2
|
<a href="https://docmd.mgks.dev">
|
|
4
|
-
<img src="https://github.com/mgks/docmd/blob/main/src/assets/images/docmd-logo-light.png?raw=true" alt="docmd logo" width="
|
|
3
|
+
<img src="https://github.com/mgks/docmd/blob/main/src/assets/images/docmd-logo-light.png?raw=true" alt="docmd logo" width="150" />
|
|
5
4
|
</a>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
<br>
|
|
11
|
-
Turn Markdown into beautiful, blazing-fast websites in seconds.
|
|
12
|
-
<br>
|
|
13
|
-
</p>
|
|
5
|
+
<p>
|
|
6
|
+
<strong>The minimalist, zero-config documentation generator.</strong>
|
|
7
|
+
</p>
|
|
8
|
+
</div>
|
|
14
9
|
|
|
15
10
|
<p align="center">
|
|
16
|
-
<a href="https://www.npmjs.com/package/@mgks/docmd"><img src="https://img.shields.io/npm/v/@mgks/docmd.svg?style=flat-square&color=
|
|
17
|
-
|
|
18
|
-
<a href="https://
|
|
11
|
+
<a href="https://www.npmjs.com/package/@mgks/docmd"><img src="https://img.shields.io/npm/v/@mgks/docmd.svg?style=flat-square&color=fc3b53" alt="npm version"></a>
|
|
12
|
+
<a href="https://github.com/mgks/docmd/commits"><img src="https://img.shields.io/github/commit-activity/m/mgks/docmd?style=flat-square&color=38bd24" alt="commits"></a>
|
|
13
|
+
<a href="https://www.npmjs.com/package/@mgks/docmd"><img src="https://img.shields.io/npm/dt/@mgks/docmd.svg?style=flat-square&color=38bd24" alt="downloads"></a>
|
|
19
14
|
<a href="https://github.com/mgks/docmd/stargazers"><img src="https://img.shields.io/github/stars/mgks/docmd?style=flat-square&logo=github" alt="stars"></a>
|
|
15
|
+
<a href="LICENSE"><img src="https://img.shields.io/github/license/mgks/docmd.svg?style=flat-square&color=blue" alt="license"></a>
|
|
20
16
|
</p>
|
|
21
17
|
|
|
22
18
|
<p align="center">
|
|
23
19
|
<a href="https://docmd.mgks.dev"><b>View Live Demo</b></a> •
|
|
24
|
-
<a href="https://docmd.mgks.dev/getting-started/installation/"><b>Documentation</b></a> •
|
|
20
|
+
<a href="https://docmd.mgks.dev/getting-started/installation/"><b>Read Documentation</b></a> •
|
|
21
|
+
<a href="https://docmd.mgks.dev/live/"><b>Live Editor</b></a> •
|
|
25
22
|
<a href="https://github.com/mgks/docmd/issues"><b>Report Bug</b></a>
|
|
26
23
|
</p>
|
|
27
24
|
|
|
28
|
-
<br>
|
|
29
|
-
|
|
30
25
|
<p align="center">
|
|
31
|
-
<img width="
|
|
26
|
+
<img width="800" alt="docmd preview" src="https://docmd.mgks.dev/assets/images/preview-dark-welcome.png" style="border-radius: 10px" />
|
|
27
|
+
<br/>
|
|
32
28
|
<sup><i>docmd noStyle page preview in dark mode</i></sup>
|
|
33
29
|
</p>
|
|
34
30
|
|
|
35
|
-
##
|
|
36
|
-
|
|
37
|
-
Most documentation tools today are too heavy (React hydration, massive bundles) or require ecosystems you don't use (Python/Ruby).
|
|
38
|
-
|
|
39
|
-
**docmd** fills the gap. It is a native Node.js tool that generates **pure, static HTML**.
|
|
31
|
+
## Features
|
|
40
32
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
33
|
+
- **Zero Config**: Works out of the box with sensible defaults. Just `init` and go.
|
|
34
|
+
- **Blazing Fast**: Generates **pure, static HTML**. No React hydration lag, no heavy bundles.
|
|
35
|
+
- **Smart Search**: Built-in, **offline-capable** full-text search with fuzzy matching. No API keys required.
|
|
36
|
+
- **Isomorphic Core**: Runs anywhere—Node.js CLI, CI/CD pipelines, or **directly in the browser** via WASM.
|
|
37
|
+
- **Rich Content**: Built-in support for Callouts, Cards, Tabs, Steps, Changelogs, and Mermaid diagrams.
|
|
38
|
+
- **Theming**: Beautiful light/dark modes and multiple pre-built themes (`sky`, `ruby`, `retro`).
|
|
47
39
|
|
|
48
|
-
##
|
|
40
|
+
## Quick Start
|
|
49
41
|
|
|
50
|
-
|
|
42
|
+
**Installation:**
|
|
51
43
|
|
|
52
44
|
```bash
|
|
53
|
-
|
|
54
|
-
|
|
45
|
+
npm install -g @mgks/docmd
|
|
46
|
+
```
|
|
55
47
|
|
|
56
|
-
|
|
57
|
-
cd my-docs
|
|
48
|
+
**Run:**
|
|
58
49
|
|
|
59
|
-
|
|
60
|
-
|
|
50
|
+
```bash
|
|
51
|
+
docmd init my-docs # Initialize a new project
|
|
52
|
+
cd my-docs # Enter directory
|
|
53
|
+
docmd dev # Start live-reloading server
|
|
54
|
+
docmd build # Generate static site for deployment
|
|
55
|
+
docmd live # Launch live editor to preview and design pages
|
|
61
56
|
```
|
|
62
57
|
|
|
63
|
-
**Dev
|
|
58
|
+
**Dev Server:**
|
|
64
59
|
|
|
65
|
-
```
|
|
60
|
+
```js
|
|
66
61
|
|
|
67
62
|
_ _
|
|
68
63
|
_| |___ ___ _____ _| |
|
|
@@ -72,92 +67,89 @@ npm start
|
|
|
72
67
|
v0.x.x
|
|
73
68
|
|
|
74
69
|
|
|
75
|
-
🚀 Performing initial build
|
|
76
|
-
✅ Generated sitemap at ./site/sitemap.xml
|
|
77
|
-
✅ Initial build complete.
|
|
78
|
-
👀 Watching for changes in:
|
|
79
|
-
- Source: ./docs
|
|
80
|
-
- Config: ./docmd.config.js
|
|
81
|
-
- Assets: ./assets
|
|
82
|
-
- docmd Templates: ./src/templates (internal)
|
|
83
|
-
- docmd Assets: ./src/assets (internal)
|
|
84
|
-
🎉 Dev server started at http://localhost:3000
|
|
85
|
-
Serving content from: ./site
|
|
86
|
-
Live reload is active. Browser will refresh automatically when files change.
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## ✨ Features
|
|
70
|
+
🚀 Performing initial build...
|
|
90
71
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
| **Custom Containers** | Use `::: callout`, `::: card`, `::: steps`, `::: tabs`, `::: collapsible`, `::: changelog`, and more to enrich content. |
|
|
96
|
-
| **Smart Search** | Built-in, offline-capable full-text search with fuzzy matching and highlighting. No API keys required. |
|
|
97
|
-
| **Diagrams** | Create flowcharts, relationship diagrams, journey, piecharts, graphs, timelines and more with Mermaid. |
|
|
98
|
-
| **No-Style Pages** | Create custom landing pages (highly customizable custom HTML pages) without theme constraints. |
|
|
99
|
-
| **Auto Dark Mode** | Respects system preference and saves user choice. |
|
|
100
|
-
| **Plugins** | SEO, Sitemap, and Analytics support included out-of-the-box. |
|
|
72
|
+
👀 Watching for changes in:
|
|
73
|
+
- Source: ./docs
|
|
74
|
+
- Config: ./config.js
|
|
75
|
+
- Assets: ./assets
|
|
101
76
|
|
|
102
|
-
|
|
77
|
+
────────────────────────────────────────
|
|
78
|
+
SERVER RUNNING (v0.3.5)
|
|
103
79
|
|
|
104
|
-
|
|
80
|
+
Local: http://127.0.0.1:3000
|
|
81
|
+
Network: http://192.1.1.1:3000
|
|
105
82
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
| **Output** | **Static HTML** | React SPA | Static HTML | Hosted / Next.js |
|
|
110
|
-
| **JS Payload** | **Tiny (< 15kb)** | Heavy | Minimal | Medium |
|
|
111
|
-
| **Setup** | **~2 mins** | ~15 mins | ~10 mins | Instant (SaaS) |
|
|
112
|
-
| **Cost** | **100% Free OSS** | 100% Free OSS | 100% Free OSS | Freemium |
|
|
83
|
+
Serving: ./site
|
|
84
|
+
────────────────────────────────────────
|
|
85
|
+
```
|
|
113
86
|
|
|
114
|
-
|
|
87
|
+
## Usage in Detail
|
|
115
88
|
|
|
116
|
-
|
|
89
|
+
### Project Structure
|
|
117
90
|
|
|
118
|
-
|
|
91
|
+
`docmd` keeps it simple. Your content lives in `docs/`, your config in `docmd.config.js`.
|
|
119
92
|
|
|
120
93
|
```bash
|
|
121
|
-
|
|
94
|
+
my-docs/
|
|
95
|
+
├── docs/ # Your Markdown files
|
|
96
|
+
│ ├── index.md # Homepage
|
|
97
|
+
│ └── guide.md # Content page
|
|
98
|
+
├── assets/ # Images and custom CSS
|
|
99
|
+
└── docmd.config.js # Configuration
|
|
122
100
|
```
|
|
123
101
|
|
|
124
|
-
###
|
|
125
|
-
|
|
126
|
-
* `docmd init` - Create a new documentation project.
|
|
127
|
-
* `docmd dev` - Start the live-reloading local server.
|
|
128
|
-
* `docmd build` - Generate static files to `site/` for deployment.
|
|
129
|
-
|
|
130
|
-
## 🎨 Themes
|
|
102
|
+
### Configuration
|
|
131
103
|
|
|
132
|
-
|
|
104
|
+
Customize your site in seconds via `docmd.config.js`:
|
|
133
105
|
|
|
134
106
|
```javascript
|
|
135
107
|
module.exports = {
|
|
108
|
+
siteTitle: 'My Project',
|
|
109
|
+
srcDir: 'docs',
|
|
110
|
+
outputDir: 'site',
|
|
136
111
|
theme: {
|
|
137
|
-
name: 'sky',
|
|
138
|
-
defaultMode: 'dark'
|
|
139
|
-
|
|
112
|
+
name: 'sky', // 'default', 'sky', 'ruby', 'retro'
|
|
113
|
+
defaultMode: 'dark', // 'light' or 'dark'
|
|
114
|
+
enableModeToggle: true
|
|
115
|
+
},
|
|
116
|
+
navigation: [
|
|
117
|
+
{ title: 'Home', path: '/', icon: 'home' },
|
|
118
|
+
{ title: 'Guide', path: '/guide', icon: 'book' }
|
|
119
|
+
]
|
|
140
120
|
}
|
|
141
121
|
```
|
|
142
122
|
|
|
143
|
-
##
|
|
123
|
+
## Live Editor
|
|
144
124
|
|
|
145
|
-
|
|
125
|
+
`docmd` comes with a modular architecture that allows the core engine to run client-side.
|
|
146
126
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
127
|
+
**Launch locally:**
|
|
128
|
+
```bash
|
|
129
|
+
docmd live
|
|
130
|
+
```
|
|
131
|
+
This builds and serves a local editor where you can write Markdown and see the preview instantly without any server-side processing.
|
|
132
|
+
|
|
133
|
+
**Embed in your app:**
|
|
134
|
+
You can also use the `dist/docmd-live.js` bundle to add Markdown compilation capabilities to your own web applications.
|
|
135
|
+
|
|
136
|
+
## Comparison
|
|
152
137
|
|
|
153
|
-
|
|
138
|
+
| Feature | docmd | Docusaurus | MkDocs | Mintlify |
|
|
139
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
140
|
+
| **Language** | **Node.js** | React.js | Python | Proprietary |
|
|
141
|
+
| **Output** | **Static HTML** | React SPA | Static HTML | Hosted |
|
|
142
|
+
| **JS Payload** | **Tiny (< 15kb)** | Heavy | Minimal | Medium |
|
|
143
|
+
| **Search** | **Built-in (Offline)** | Algolia (Ext) | Built-in | Built-in |
|
|
144
|
+
| **Setup** | **~1 min** | ~15 mins | ~10 mins | Instant |
|
|
145
|
+
| **Cost** | **Free OSS** | Free OSS | Free OSS | Freemium |
|
|
154
146
|
|
|
155
|
-
|
|
147
|
+
## Community & Support
|
|
156
148
|
|
|
157
|
-
|
|
158
|
-
|
|
149
|
+
- **Contributing**: We welcome PRs! See [CONTRIBUTING.md](.github/CONTRIBUTING.md).
|
|
150
|
+
- **Support**: If you find `docmd` useful, please consider [sponsoring the project](https://github.com/sponsors/mgks) or giving it a star ⭐.
|
|
159
151
|
|
|
160
|
-
##
|
|
152
|
+
## License
|
|
161
153
|
|
|
162
154
|
Distributed under the MIT License. See `LICENSE` for more information.
|
|
163
155
|
|
package/bin/docmd.js
CHANGED
|
@@ -1,113 +1,75 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const {
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const { version } = require('../package.json');
|
|
7
|
-
const { initProject } = require('../src/commands/init');
|
|
3
|
+
const { program } = require('commander');
|
|
4
|
+
// This import corresponds to module.exports = { startDevServer } in src/commands/dev.js
|
|
5
|
+
const { startDevServer } = require('../src/commands/dev');
|
|
8
6
|
const { buildSite } = require('../src/commands/build');
|
|
9
|
-
const {
|
|
7
|
+
const { initProject } = require('../src/commands/init');
|
|
8
|
+
const { version } = require('../package.json');
|
|
10
9
|
const { printBanner } = require('../src/core/logger');
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const findConfigFile = () => {
|
|
14
|
-
const newConfigPath = 'docmd.config.js';
|
|
15
|
-
const oldConfigPath = 'config.js';
|
|
16
|
-
|
|
17
|
-
if (fs.existsSync(path.resolve(process.cwd(), newConfigPath))) {
|
|
18
|
-
return newConfigPath;
|
|
19
|
-
}
|
|
20
|
-
if (fs.existsSync(path.resolve(process.cwd(), oldConfigPath))) {
|
|
21
|
-
return oldConfigPath;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
throw new Error('Configuration file not found. Please create a docmd.config.js file or run "docmd init".');
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
const program = new Command();
|
|
10
|
+
const path = require('path');
|
|
11
|
+
const { spawn } = require('child_process');
|
|
28
12
|
|
|
29
13
|
program
|
|
30
14
|
.name('docmd')
|
|
31
|
-
.description('
|
|
32
|
-
.version(version)
|
|
15
|
+
.description('The minimalist, zero-config documentation generator')
|
|
16
|
+
.version(version, '-v, --version', 'Output the current version')
|
|
17
|
+
.helpOption('-h, --help', 'Display help for command');
|
|
33
18
|
|
|
34
19
|
program
|
|
35
20
|
.command('init')
|
|
36
|
-
.description('Initialize a new
|
|
37
|
-
.action(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
console.log('✅ docmd project initialized successfully!');
|
|
41
|
-
} catch (error) {
|
|
42
|
-
console.error('❌ Error initializing project:', error.message);
|
|
43
|
-
process.exit(1);
|
|
44
|
-
}
|
|
21
|
+
.description('Initialize a new documentation project')
|
|
22
|
+
.action(() => {
|
|
23
|
+
printBanner();
|
|
24
|
+
initProject();
|
|
45
25
|
});
|
|
46
26
|
|
|
47
27
|
program
|
|
48
|
-
.command('
|
|
49
|
-
.description('
|
|
50
|
-
.option('-c, --config <path>', 'Path to
|
|
51
|
-
.option('-p, --
|
|
52
|
-
.option('--
|
|
53
|
-
.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (!options.silent) { printBanner(); }
|
|
57
|
-
|
|
58
|
-
const originalLog = console.log;
|
|
59
|
-
if (options.silent) { console.log = () => {}; }
|
|
60
|
-
|
|
61
|
-
const configPath = options.config || findConfigFile();
|
|
62
|
-
console.log(`🚀 Starting build process using ${configPath}...`);
|
|
63
|
-
await buildSite(configPath, {
|
|
64
|
-
preserve: options.preserve
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
console.log = originalLog;
|
|
68
|
-
if (!options.silent) {
|
|
69
|
-
console.log('✅ Build complete! Site generated in `site/` directory.');
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
} catch (error) {
|
|
73
|
-
console.error('❌ Build failed:', error.message);
|
|
74
|
-
// console.error(error.stack);
|
|
75
|
-
process.exit(1);
|
|
76
|
-
}
|
|
28
|
+
.command('dev')
|
|
29
|
+
.description('Start the development server with live reload')
|
|
30
|
+
.option('-c, --config <path>', 'Path to configuration file', 'docmd.config.js')
|
|
31
|
+
.option('-p, --port <number>', 'Port to run the server on')
|
|
32
|
+
.option('--preserve', 'Preserve existing assets', false)
|
|
33
|
+
.action((options) => {
|
|
34
|
+
printBanner();
|
|
35
|
+
startDevServer(options.config, options);
|
|
77
36
|
});
|
|
78
37
|
|
|
79
38
|
program
|
|
80
|
-
.command('
|
|
81
|
-
.description('
|
|
82
|
-
.option('-c, --config <path>', 'Path to
|
|
83
|
-
.option('--
|
|
84
|
-
.
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
.
|
|
88
|
-
|
|
89
|
-
|
|
39
|
+
.command('build')
|
|
40
|
+
.description('Build the static documentation site')
|
|
41
|
+
.option('-c, --config <path>', 'Path to configuration file', 'docmd.config.js')
|
|
42
|
+
.option('--preserve', 'Preserve existing assets', false)
|
|
43
|
+
.action((options) => {
|
|
44
|
+
buildSite(options.config, { isDev: false, preserve: options.preserve });
|
|
45
|
+
})
|
|
46
|
+
.option('--offline', 'Generate a build optimized for file:// viewing (appends index.html)', false)
|
|
47
|
+
.action((options) => {
|
|
48
|
+
buildSite(options.config, { isDev: false, preserve: options.preserve, offline: options.offline });
|
|
49
|
+
});
|
|
90
50
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
51
|
+
program
|
|
52
|
+
.command('live')
|
|
53
|
+
.description('Build and serve the browser-based live editor')
|
|
54
|
+
.action(() => {
|
|
55
|
+
const scriptPath = path.resolve(__dirname, '../scripts/build-live.js');
|
|
56
|
+
const distPath = path.resolve(__dirname, '../dist');
|
|
57
|
+
|
|
58
|
+
console.log('🚀 Starting Live Editor build...');
|
|
59
|
+
|
|
60
|
+
// Using spawn ensures the build runs in a fresh process context
|
|
61
|
+
const build = spawn(process.execPath, [scriptPath], { stdio: 'inherit' });
|
|
62
|
+
|
|
63
|
+
build.on('close', (code) => {
|
|
64
|
+
if (code === 0) {
|
|
65
|
+
console.log('\n🌍 Launching server...');
|
|
66
|
+
console.log(' Press Ctrl+C to stop.\n');
|
|
67
|
+
|
|
68
|
+
// Fix for Node DeprecationWarning regarding shell: true
|
|
69
|
+
const serveCmd = `npx serve "${distPath}"`;
|
|
70
|
+
spawn(serveCmd, { stdio: 'inherit', shell: true });
|
|
98
71
|
}
|
|
99
|
-
|
|
100
|
-
await startDevServer(configPath, { preserve: options.preserve, port: options.port });
|
|
101
|
-
|
|
102
|
-
} catch (error) {
|
|
103
|
-
console.error('❌ Dev server failed:', error.message);
|
|
104
|
-
// console.error(error.stack);
|
|
105
|
-
process.exit(1);
|
|
106
|
-
}
|
|
72
|
+
});
|
|
107
73
|
});
|
|
108
74
|
|
|
109
|
-
program.parse(
|
|
110
|
-
|
|
111
|
-
if (!process.argv.slice(2).length) {
|
|
112
|
-
program.outputHelp();
|
|
113
|
-
}
|
|
75
|
+
program.parse();
|
package/docmd.config.js
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
// Source file from the docmd project — https://github.com/mgks/docmd
|
|
2
|
+
|
|
3
|
+
module.exports = {
|
|
4
|
+
// --- Core Metadata ---
|
|
5
|
+
siteTitle: 'docmd',
|
|
6
|
+
siteUrl: 'https://docmd.mgks.dev', // No trailing slash
|
|
7
|
+
|
|
8
|
+
// --- Branding ---
|
|
9
|
+
logo: {
|
|
10
|
+
light: 'assets/images/docmd-logo-light.png',
|
|
11
|
+
dark: 'assets/images/docmd-logo-dark.png',
|
|
12
|
+
alt: 'docmd Logo',
|
|
13
|
+
href: './',
|
|
14
|
+
},
|
|
15
|
+
favicon: 'assets/favicon.ico',
|
|
16
|
+
|
|
17
|
+
// --- Structure ---
|
|
18
|
+
srcDir: 'docs', // Source markdown files directory
|
|
19
|
+
outputDir: 'site', // Output directory for generated site
|
|
20
|
+
|
|
21
|
+
// --- Features & UX ---
|
|
22
|
+
search: true, // Built-in offline search
|
|
23
|
+
minify: true, // Production build optimization
|
|
24
|
+
autoTitleFromH1: true, // Auto-generate title from first H1 if frontmatter title is missing
|
|
25
|
+
copyCode: true, // Enable "copy to clipboard" on code blocks
|
|
26
|
+
pageNavigation: true, // Next/Prev links
|
|
27
|
+
|
|
28
|
+
// --- Sidebar & Theme ---
|
|
29
|
+
sidebar: {
|
|
30
|
+
collapsible: true,
|
|
31
|
+
defaultCollapsed: false,
|
|
32
|
+
},
|
|
33
|
+
theme: {
|
|
34
|
+
name: 'sky', // 'default', 'sky', 'ruby', 'retro'
|
|
35
|
+
defaultMode: 'light', // 'light' or 'dark'
|
|
36
|
+
enableModeToggle: true, // Show theme mode toggle button
|
|
37
|
+
positionMode: 'top', // 'top' or 'bottom' of header
|
|
38
|
+
codeHighlight: true, // Enable code syntax highlighting
|
|
39
|
+
customCss: [], // Add paths relative to outputDir here
|
|
40
|
+
},
|
|
41
|
+
customJs: [
|
|
42
|
+
'assets/js/docmd-image-lightbox.js',
|
|
43
|
+
],
|
|
44
|
+
|
|
45
|
+
// --- Plugins ---
|
|
46
|
+
plugins: {
|
|
47
|
+
seo: {
|
|
48
|
+
defaultDescription: 'The minimalist, zero-config documentation generator for Node.js developers.',
|
|
49
|
+
openGraph: {
|
|
50
|
+
defaultImage: 'assets/images/docmd-preview.png',
|
|
51
|
+
},
|
|
52
|
+
twitter: {
|
|
53
|
+
cardType: 'summary_large_image',
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
analytics: {
|
|
57
|
+
googleV4: {
|
|
58
|
+
measurementId: 'G-8QVBDQ4KM1'
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
sitemap: {
|
|
62
|
+
defaultChangefreq: 'weekly',
|
|
63
|
+
defaultPriority: 0.8
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
|
|
67
|
+
// --- Doc Source Link ---
|
|
68
|
+
editLink: {
|
|
69
|
+
enabled: true,
|
|
70
|
+
baseUrl: 'https://github.com/mgks/docmd/edit/main/docs',
|
|
71
|
+
text: 'Edit this page on GitHub'
|
|
72
|
+
},
|
|
73
|
+
|
|
74
|
+
// --- Navigation ---
|
|
75
|
+
navigation: [
|
|
76
|
+
{ title: 'Welcome', path: './', icon: 'feather' },
|
|
77
|
+
{ title: 'Overview', path: './overview', icon: 'home' },
|
|
78
|
+
|
|
79
|
+
{
|
|
80
|
+
title: 'Getting Started',
|
|
81
|
+
icon: 'rocket',
|
|
82
|
+
path: './getting-started/',
|
|
83
|
+
children: [
|
|
84
|
+
{ title: 'Installation', path: './getting-started/installation', icon: 'download' },
|
|
85
|
+
{ title: 'Basic Usage', path: './getting-started/basic-usage', icon: 'play' },
|
|
86
|
+
],
|
|
87
|
+
},
|
|
88
|
+
|
|
89
|
+
{ title: 'Configuration', path: './configuration', icon: 'settings' },
|
|
90
|
+
{
|
|
91
|
+
title: 'Content',
|
|
92
|
+
icon: 'layout-template',
|
|
93
|
+
path: './content/',
|
|
94
|
+
collapsible: true,
|
|
95
|
+
children: [
|
|
96
|
+
{ title: 'Markdown Syntax', path: './content/markdown-syntax', icon: 'code-2' },
|
|
97
|
+
{ title: 'Frontmatter', path: './content/frontmatter', icon: 'file-text' },
|
|
98
|
+
{ title: 'Images & Lightbox', path: './content/images', icon: 'image' },
|
|
99
|
+
{ title: 'Search', path: './content/search', icon: 'search' },
|
|
100
|
+
{ title: 'Mermaid Diagrams', path: './content/mermaid', icon: 'network' },
|
|
101
|
+
{
|
|
102
|
+
title: 'Containers',
|
|
103
|
+
path: './content/containers/',
|
|
104
|
+
icon: 'box',
|
|
105
|
+
collapsible: true,
|
|
106
|
+
children: [
|
|
107
|
+
{ title: 'Callouts', path: './content/containers/callouts', icon: 'megaphone' },
|
|
108
|
+
{ title: 'Cards', path: './content/containers/cards', icon: 'panel-top' },
|
|
109
|
+
{ title: 'Steps', path: './content/containers/steps', icon: 'list-ordered' },
|
|
110
|
+
{ title: 'Tabs', path: './content/containers/tabs', icon: 'columns-3' },
|
|
111
|
+
{ title: 'Collapsible', path: './content/containers/collapsible', icon: 'chevrons-down' },
|
|
112
|
+
{ title: 'Changelogs', path: './content/containers/changelogs', icon: 'history' },
|
|
113
|
+
{ title: 'Buttons', path: './content/containers/buttons', icon: 'mouse-pointer-click' },
|
|
114
|
+
{ title: 'Nested Containers', path: './content/containers/nested-containers', icon: 'folder-tree' },
|
|
115
|
+
]
|
|
116
|
+
},
|
|
117
|
+
{ title: 'No-Style Pages', path: './content/no-style-pages', icon: 'layout' },
|
|
118
|
+
{ title: 'Live Preview', path: './content/live-preview', icon: 'monitor-play' },
|
|
119
|
+
],
|
|
120
|
+
},
|
|
121
|
+
|
|
122
|
+
{
|
|
123
|
+
title: 'Theming',
|
|
124
|
+
icon: 'palette',
|
|
125
|
+
path: './theming/',
|
|
126
|
+
collapsible: true,
|
|
127
|
+
children: [
|
|
128
|
+
{ title: 'Available Themes', path: './theming/available-themes', icon: 'layout-grid' },
|
|
129
|
+
{ title: 'Light & Dark Mode', path: './theming/light-dark-mode', icon: 'sun-moon' },
|
|
130
|
+
{ title: 'Custom CSS & JS', path: './theming/custom-css-js', icon: 'file-code' },
|
|
131
|
+
{ title: 'Icons', path: './theming/icons', icon: 'pencil-ruler' },
|
|
132
|
+
],
|
|
133
|
+
},
|
|
134
|
+
|
|
135
|
+
{
|
|
136
|
+
title: 'Plugins',
|
|
137
|
+
icon: 'puzzle',
|
|
138
|
+
path: './plugins/',
|
|
139
|
+
collapsible: true,
|
|
140
|
+
children: [
|
|
141
|
+
{ title: 'SEO & Meta', path: './plugins/seo', icon: 'search' },
|
|
142
|
+
{ title: 'Analytics', path: './plugins/analytics', icon: 'bar-chart' },
|
|
143
|
+
{ title: 'Sitemap', path: './plugins/sitemap', icon: 'map' },
|
|
144
|
+
],
|
|
145
|
+
},
|
|
146
|
+
|
|
147
|
+
{
|
|
148
|
+
title: 'Recipes',
|
|
149
|
+
icon: 'chef-hat',
|
|
150
|
+
path: './recipes/',
|
|
151
|
+
collapsible: true,
|
|
152
|
+
children: [
|
|
153
|
+
{ title: 'Landing Page', path: './recipes/landing-page', icon: 'layout-template' },
|
|
154
|
+
{ title: 'Custom Fonts', path: './recipes/custom-fonts', icon: 'type' },
|
|
155
|
+
{ title: 'Favicon', path: './recipes/favicon', icon: 'image-plus' },
|
|
156
|
+
],
|
|
157
|
+
},
|
|
158
|
+
|
|
159
|
+
{ title: 'CLI Commands', path: './cli-commands', icon: 'terminal' },
|
|
160
|
+
{ title: 'Deployment', path: './deployment', icon: 'upload-cloud' },
|
|
161
|
+
{ title: 'Comparison', path: './comparison', icon: 'scale' },
|
|
162
|
+
{ title: 'Contributing', path: './contributing', icon: 'git-pull-request' },
|
|
163
|
+
|
|
164
|
+
{ title: 'GitHub', path: 'https://github.com/mgks/docmd', icon: 'github', external: true },
|
|
165
|
+
{ title: 'Discussions', path: 'https://github.com/mgks/docmd/discussions', icon: 'message-circle', external: true },
|
|
166
|
+
],
|
|
167
|
+
|
|
168
|
+
// --- Footer & Sponsor ---
|
|
169
|
+
footer: '© ' + new Date().getFullYear() + ' Project docmd.',
|
|
170
|
+
sponsor: {
|
|
171
|
+
enabled: true,
|
|
172
|
+
title: 'Sponsor',
|
|
173
|
+
link: 'https://github.com/sponsors/mgks',
|
|
174
|
+
},
|
|
175
|
+
};
|