@mgks/docmd 0.2.6 → 0.2.8
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/.github/CODE_OF_CONDUCT.md +48 -0
- package/.github/CONTRIBUTING.md +129 -0
- package/.github/ISSUE_TEMPLATE/bug_report.yml +58 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +27 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +16 -0
- package/.github/SECURITY.md +18 -0
- package/.github/workflows/publish.yml +20 -55
- package/README.md +119 -67
- package/config.js +14 -0
- package/docs/comparison.md +51 -0
- package/docs/content/containers/changelogs.md +128 -0
- package/docs/content/containers/collapsible.md +89 -0
- package/docs/recipes/custom-fonts.md +43 -0
- package/docs/recipes/favicon.md +38 -0
- package/docs/recipes/index.md +12 -0
- package/docs/recipes/landing-page.md +46 -0
- package/package.json +1 -2
- package/src/assets/css/docmd-main.css +1262 -4
- package/src/assets/js/docmd-main.js +17 -1
- package/src/core/config-loader.js +9 -3
- package/src/core/config-validator.js +79 -0
- package/src/core/file-processor.js +49 -769
- package/src/core/markdown/containers.js +94 -0
- package/src/core/markdown/renderers.js +90 -0
- package/src/core/markdown/rules.js +355 -0
- package/src/core/markdown/setup.js +108 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our Pledge
|
|
4
|
+
|
|
5
|
+
We as members, contributors, and leaders pledge to make participation in our
|
|
6
|
+
community a harassment-free experience for everyone, regardless of age, body
|
|
7
|
+
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
|
8
|
+
identity and expression, level of experience, education, socio-economic status,
|
|
9
|
+
nationality, personal appearance, race, religion, or sexual identity
|
|
10
|
+
and orientation.
|
|
11
|
+
|
|
12
|
+
We pledge to act and interact in ways that contribute to an open, welcoming,
|
|
13
|
+
diverse, inclusive, and healthy community.
|
|
14
|
+
|
|
15
|
+
## Our Standards
|
|
16
|
+
|
|
17
|
+
Examples of behavior that contributes to a positive environment for our
|
|
18
|
+
community include:
|
|
19
|
+
|
|
20
|
+
* Demonstrating empathy and kindness toward other people
|
|
21
|
+
* Being respectful of differing opinions, viewpoints, and experiences
|
|
22
|
+
* Giving and gracefully accepting constructive feedback
|
|
23
|
+
* Accepting responsibility and apologizing to those affected by our mistakes,
|
|
24
|
+
and learning from the experience
|
|
25
|
+
* Focusing on what is best not just for us as individuals, but for the
|
|
26
|
+
overall community
|
|
27
|
+
|
|
28
|
+
## Enforcement Responsibilities
|
|
29
|
+
|
|
30
|
+
Community leaders are responsible for clarifying and enforcing our standards of
|
|
31
|
+
acceptable behavior and will take appropriate and fair corrective action in
|
|
32
|
+
response to any behavior that they deem inappropriate, threatening, offensive,
|
|
33
|
+
or harmful.
|
|
34
|
+
|
|
35
|
+
## Enforcement
|
|
36
|
+
|
|
37
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
38
|
+
reported to the community leaders responsible for enforcement at hello@mgks.dev.
|
|
39
|
+
All complaints will be reviewed and investigated promptly and fairly.
|
|
40
|
+
|
|
41
|
+
## Attribution
|
|
42
|
+
|
|
43
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
|
44
|
+
version 2.1, available at
|
|
45
|
+
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
|
|
46
|
+
|
|
47
|
+
[homepage]: https://www.contributor-covenant.org
|
|
48
|
+
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Contributing to docmd
|
|
2
|
+
|
|
3
|
+
First off, thank you for considering contributing to `docmd`! It's people like you that make the open-source community such an amazing place to learn, inspire, and create.
|
|
4
|
+
|
|
5
|
+
We welcome contributions of all kinds: bug fixes, new features, documentation improvements, or even just typo fixes.
|
|
6
|
+
|
|
7
|
+
## ⚡ Quick Links
|
|
8
|
+
|
|
9
|
+
* [**Documentation**](https://docmd.mgks.dev) - Read the docs to understand how the tool works.
|
|
10
|
+
* [**GitHub Issues**](https://github.com/mgks/docmd/issues) - Browse existing bugs or feature requests.
|
|
11
|
+
* [**Discussions**](https://github.com/mgks/docmd/discussions) - Ask questions or share ideas.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 🛠️ Development Setup
|
|
16
|
+
|
|
17
|
+
`docmd` is a Node.js CLI tool. Developing it locally requires a slightly different setup than a standard web app.
|
|
18
|
+
|
|
19
|
+
### Prerequisites
|
|
20
|
+
* **Node.js**: Version 22.x or higher.
|
|
21
|
+
* **npm**: Version 10.x or higher.
|
|
22
|
+
|
|
23
|
+
### 1. Fork and Clone
|
|
24
|
+
1. Fork the repository to your GitHub account.
|
|
25
|
+
2. Clone your fork locally:
|
|
26
|
+
```bash
|
|
27
|
+
git clone https://github.com/YOUR_USERNAME/docmd.git
|
|
28
|
+
cd docmd
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### 2. Install Dependencies
|
|
32
|
+
```bash
|
|
33
|
+
npm install
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 3. Link for Local Development
|
|
37
|
+
To test the CLI command (`docmd`) globally on your machine while modifying the source code, use `npm link`.
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# inside the project root
|
|
41
|
+
npm link
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Now, when you run `docmd` in *any* terminal window, it will use the code from your local folder.
|
|
45
|
+
|
|
46
|
+
### 4. Running the Dev Server
|
|
47
|
+
We have a built-in test site located in the `docs/` folder (this is the documentation for docmd itself).
|
|
48
|
+
|
|
49
|
+
To start the dev server and watch for changes:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Method 1: Using the npm script (Recommended)
|
|
53
|
+
npm start
|
|
54
|
+
|
|
55
|
+
# Method 2: If you have linked the package
|
|
56
|
+
docmd dev
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 5. Developer Mode (Important)
|
|
60
|
+
By default, `docmd` only watches the user's content files. To make `docmd` watch **its own internal source code** (templates, css, core logic) and trigger a rebuild when you edit them, set the environment variable:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Mac/Linux
|
|
64
|
+
export DOCMD_DEV=true
|
|
65
|
+
npm start
|
|
66
|
+
|
|
67
|
+
# Windows (PowerShell)
|
|
68
|
+
$env:DOCMD_DEV="true"
|
|
69
|
+
npm start
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 📂 Project Structure
|
|
75
|
+
|
|
76
|
+
Here is a map of the codebase to help you navigate:
|
|
77
|
+
|
|
78
|
+
```text
|
|
79
|
+
bin/
|
|
80
|
+
└── docmd.js # The CLI entry point
|
|
81
|
+
src/
|
|
82
|
+
├── commands/ # Logic for 'init', 'build', 'dev'
|
|
83
|
+
├── core/
|
|
84
|
+
│ ├── config-loader.js # Loads docmd.config.js
|
|
85
|
+
│ ├── config-validator.js # Validates config structure
|
|
86
|
+
│ ├── file-processor.js # Orchestrates file reading
|
|
87
|
+
│ ├── html-generator.js # Injects content into EJS templates
|
|
88
|
+
│ └── markdown/ # The Core Parsing Engine
|
|
89
|
+
│ ├── containers.js # Callout/Card definitions
|
|
90
|
+
│ ├── rules.js # Complex logic (Tabs, Changelogs)
|
|
91
|
+
│ └── setup.js # MarkdownIt configuration
|
|
92
|
+
├── plugins/ # Built-in plugins (SEO, Sitemap)
|
|
93
|
+
├── templates/ # EJS HTML templates
|
|
94
|
+
└── assets/ # Internal CSS and JS (Themes)
|
|
95
|
+
docs/ # The documentation site content
|
|
96
|
+
site/ # The generated output folder (gitignored)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 🚀 Submitting a Pull Request
|
|
102
|
+
|
|
103
|
+
1. **Create a Branch:** Always create a new branch for your changes.
|
|
104
|
+
* `feat/my-new-feature`
|
|
105
|
+
* `fix/bug-description`
|
|
106
|
+
* `docs/update-readme`
|
|
107
|
+
2. **Make Changes:** Write clear, concise code.
|
|
108
|
+
3. **Test:**
|
|
109
|
+
* Run `docmd build` to ensure the build process finishes without errors.
|
|
110
|
+
* Verify your changes visually by running `docmd dev`.
|
|
111
|
+
4. **Commit:** We prefer [Conventional Commits](https://www.conventionalcommits.org/).
|
|
112
|
+
* `feat: add search bar`
|
|
113
|
+
* `fix: resolve css overflow in tables`
|
|
114
|
+
* `docs: fix typo in readme`
|
|
115
|
+
5. **Push & Open PR:** Push your branch to your fork and open a Pull Request against the `main` branch of `mgks/docmd`.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 🎨 Style Guidelines
|
|
120
|
+
|
|
121
|
+
* **Linting:** Please ensure your code follows the existing style. (We use standard ESLint/Prettier configurations).
|
|
122
|
+
* **No-Style:** If modifying `no-style` templates, ensure no external CSS is injected unless requested.
|
|
123
|
+
* **Compatibility:** `docmd` aims to be lightweight. Avoid adding heavy dependencies unless absolutely necessary.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## 🤝 Community
|
|
128
|
+
|
|
129
|
+
Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
name: 🐞 Bug Report
|
|
2
|
+
description: Create a report to help us improve docmd
|
|
3
|
+
title: "[Bug]: "
|
|
4
|
+
labels: ["bug", "triage"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Thanks for taking the time to fill out this bug report!
|
|
10
|
+
- type: input
|
|
11
|
+
id: version
|
|
12
|
+
attributes:
|
|
13
|
+
label: docmd version
|
|
14
|
+
description: What version of docmd are you using? (e.g. 0.2.6)
|
|
15
|
+
placeholder: 0.2.6
|
|
16
|
+
validations:
|
|
17
|
+
required: true
|
|
18
|
+
- type: input
|
|
19
|
+
id: node-version
|
|
20
|
+
attributes:
|
|
21
|
+
label: Node.js version
|
|
22
|
+
placeholder: v20.x
|
|
23
|
+
validations:
|
|
24
|
+
required: true
|
|
25
|
+
- type: dropdown
|
|
26
|
+
id: os
|
|
27
|
+
attributes:
|
|
28
|
+
label: OS
|
|
29
|
+
options:
|
|
30
|
+
- macOS
|
|
31
|
+
- Windows
|
|
32
|
+
- Linux
|
|
33
|
+
validations:
|
|
34
|
+
required: true
|
|
35
|
+
- type: textarea
|
|
36
|
+
id: description
|
|
37
|
+
attributes:
|
|
38
|
+
label: Description
|
|
39
|
+
description: A clear and concise description of what the bug is.
|
|
40
|
+
validations:
|
|
41
|
+
required: true
|
|
42
|
+
- type: textarea
|
|
43
|
+
id: reproduction
|
|
44
|
+
attributes:
|
|
45
|
+
label: Steps to Reproduce
|
|
46
|
+
description: Please provide the steps to reproduce the behavior.
|
|
47
|
+
placeholder: |
|
|
48
|
+
1. Run 'docmd init'
|
|
49
|
+
2. Add configuration...
|
|
50
|
+
3. Run 'docmd build'
|
|
51
|
+
4. See error...
|
|
52
|
+
validations:
|
|
53
|
+
required: true
|
|
54
|
+
- type: textarea
|
|
55
|
+
id: expected
|
|
56
|
+
attributes:
|
|
57
|
+
label: Expected Behavior
|
|
58
|
+
description: A clear and concise description of what you expected to happen.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
name: 💡 Feature Request
|
|
2
|
+
description: Suggest an idea for this project
|
|
3
|
+
title: "[Feature]: "
|
|
4
|
+
labels: ["enhancement"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Thanks for suggesting a new feature!
|
|
10
|
+
- type: textarea
|
|
11
|
+
id: problem
|
|
12
|
+
attributes:
|
|
13
|
+
label: Is your feature request related to a problem?
|
|
14
|
+
description: A clear and concise description of what the problem is.
|
|
15
|
+
placeholder: I'm always frustrated when...
|
|
16
|
+
- type: textarea
|
|
17
|
+
id: solution
|
|
18
|
+
attributes:
|
|
19
|
+
label: Describe the solution you'd like
|
|
20
|
+
description: A clear and concise description of what you want to happen.
|
|
21
|
+
validations:
|
|
22
|
+
required: true
|
|
23
|
+
- type: textarea
|
|
24
|
+
id: alternatives
|
|
25
|
+
attributes:
|
|
26
|
+
label: Describe alternatives you've considered
|
|
27
|
+
description: A clear and concise description of any alternative solutions or features you've considered.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
## Description
|
|
2
|
+
<!-- Please include a summary of the change and which issue is fixed. -->
|
|
3
|
+
|
|
4
|
+
Fixes # (issue)
|
|
5
|
+
|
|
6
|
+
## Type of change
|
|
7
|
+
- [ ] 🐛 Bug fix (non-breaking change which fixes an issue)
|
|
8
|
+
- [ ] ✨ New feature (non-breaking change which adds functionality)
|
|
9
|
+
- [ ] 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
|
10
|
+
- [ ] 📝 Documentation update
|
|
11
|
+
|
|
12
|
+
## Checklist:
|
|
13
|
+
- [ ] I have performed a self-review of my own code
|
|
14
|
+
- [ ] I have commented my code, particularly in hard-to-understand areas
|
|
15
|
+
- [ ] I have made corresponding changes to the documentation
|
|
16
|
+
- [ ] My changes generate no new warnings
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Supported Versions
|
|
4
|
+
|
|
5
|
+
| Version | Supported |
|
|
6
|
+
| ------- | ------------------ |
|
|
7
|
+
| 0.2.x | :white_check_mark: |
|
|
8
|
+
| 0.1.x | :x: |
|
|
9
|
+
|
|
10
|
+
## Reporting a Vulnerability
|
|
11
|
+
|
|
12
|
+
Use this section to tell people how to report a vulnerability.
|
|
13
|
+
|
|
14
|
+
Please do not report security vulnerabilities through public GitHub issues.
|
|
15
|
+
|
|
16
|
+
If you have discovered a security vulnerability in `docmd`, please email hello@mgks.dev.
|
|
17
|
+
|
|
18
|
+
We will do our best to respond within 48 hours.
|
|
@@ -2,83 +2,48 @@ name: Publish Package to NPM and GitHub Packages
|
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
4
|
release:
|
|
5
|
-
types: [
|
|
6
|
-
workflow_dispatch:
|
|
5
|
+
types: [published]
|
|
6
|
+
workflow_dispatch:
|
|
7
7
|
|
|
8
8
|
jobs:
|
|
9
9
|
publish:
|
|
10
10
|
runs-on: ubuntu-latest
|
|
11
11
|
permissions:
|
|
12
12
|
contents: read
|
|
13
|
-
packages: write
|
|
13
|
+
packages: write
|
|
14
14
|
steps:
|
|
15
15
|
- name: Checkout repository
|
|
16
16
|
uses: actions/checkout@v4
|
|
17
|
-
# Your package.json in the workspace should now have name: "@mgks/docmd"
|
|
18
17
|
|
|
19
|
-
- name: Set up Node.js
|
|
18
|
+
- name: Set up Node.js v22
|
|
20
19
|
uses: actions/setup-node@v4
|
|
21
20
|
with:
|
|
22
21
|
node-version: '22'
|
|
23
|
-
cache: 'npm'
|
|
22
|
+
cache: 'npm'
|
|
24
23
|
|
|
25
24
|
- name: Install dependencies
|
|
26
25
|
run: npm ci
|
|
27
26
|
|
|
28
|
-
#
|
|
29
|
-
# - name: Build package
|
|
30
|
-
# run: npm run build
|
|
31
|
-
|
|
32
|
-
# Optional: Run tests
|
|
33
|
-
# - name: Test package
|
|
34
|
-
# run: npm test
|
|
35
|
-
|
|
27
|
+
# ------------------------------------------
|
|
36
28
|
# --- Publish to NPM Registry (npmjs.com) ---
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
node-version: '22' # Redundant if already set, but harmless
|
|
41
|
-
registry-url: 'https://registry.npmjs.org/'
|
|
42
|
-
env:
|
|
43
|
-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} # Configures .npmrc for npmjs.com
|
|
29
|
+
# ------------------------------------------
|
|
30
|
+
- name: Configure NPM for public registry
|
|
31
|
+
run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
|
|
44
32
|
|
|
45
|
-
|
|
46
|
-
# Just ensure no GPR-specific publishConfig is present
|
|
47
|
-
- name: Prepare package.json for npmjs.com
|
|
48
|
-
run: |
|
|
49
|
-
echo "package.json for npmjs.com publishing (should be @mgks/docmd):"
|
|
50
|
-
cat package.json
|
|
51
|
-
# Remove publishConfig if it exists, just in case
|
|
52
|
-
if jq -e '.publishConfig' package.json > /dev/null; then
|
|
53
|
-
echo "Removing publishConfig for npmjs.com publish"
|
|
54
|
-
jq 'del(.publishConfig)' package.json > package_temp.json && mv package_temp.json package.json
|
|
55
|
-
else
|
|
56
|
-
echo "No publishConfig found, package.json is ready for npmjs.com."
|
|
57
|
-
fi
|
|
58
|
-
cat package.json
|
|
59
|
-
|
|
60
|
-
- name: Publish to NPM Registry (npmjs.com)
|
|
61
|
-
# For scoped packages on npmjs.com, --access=public is needed for the first publish
|
|
62
|
-
# and if it's intended to be a public package.
|
|
33
|
+
- name: Publish to NPM Registry
|
|
63
34
|
run: npm publish --access=public
|
|
64
|
-
|
|
65
|
-
# --- Publish to GitHub Packages ---
|
|
66
|
-
- name: Set up Node.js for GitHub Packages
|
|
67
|
-
uses: actions/setup-node@v4
|
|
68
|
-
with:
|
|
69
|
-
node-version: '22' # Redundant if already set, but harmless
|
|
70
|
-
registry-url: 'https://npm.pkg.github.com'
|
|
71
|
-
# scope: '@mgks' # Not strictly needed here if package.json name is already @mgks/docmd
|
|
72
|
-
# but good for ensuring .npmrc is correctly configured for the @mgks scope.
|
|
73
35
|
env:
|
|
74
|
-
NODE_AUTH_TOKEN: ${{ secrets.
|
|
36
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
75
37
|
|
|
76
|
-
#
|
|
77
|
-
#
|
|
78
|
-
|
|
38
|
+
# ----------------------------------------
|
|
39
|
+
# --- Publish to GitHub Packages (GPR) ---
|
|
40
|
+
# ----------------------------------------
|
|
41
|
+
- name: Configure NPM for GitHub Packages registry
|
|
79
42
|
run: |
|
|
80
|
-
echo "
|
|
81
|
-
|
|
43
|
+
echo "@mgks:registry=https://npm.pkg.github.com" > ~/.npmrc
|
|
44
|
+
echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" >> ~/.npmrc
|
|
82
45
|
|
|
83
46
|
- name: Publish to GitHub Packages
|
|
84
|
-
run: npm publish
|
|
47
|
+
run: npm publish
|
|
48
|
+
env:
|
|
49
|
+
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
package/README.md
CHANGED
|
@@ -1,108 +1,160 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<
|
|
3
|
-
<
|
|
4
|
-
|
|
2
|
+
<br>
|
|
3
|
+
<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="200" />
|
|
5
|
+
</a>
|
|
5
6
|
</p>
|
|
6
7
|
|
|
7
8
|
<p align="center">
|
|
8
|
-
<b>
|
|
9
|
-
<br>
|
|
9
|
+
<b>The minimalist, zero-config documentation generator for Node.js developers.</b>
|
|
10
|
+
<br>
|
|
11
|
+
Turn Markdown into beautiful, blazing-fast websites in seconds.
|
|
12
|
+
<br>
|
|
10
13
|
</p>
|
|
11
14
|
|
|
12
15
|
<p align="center">
|
|
13
|
-
<a href="https://www.npmjs.com/package/@mgks/docmd"><img src="https://img.shields.io/npm/v/@mgks/docmd.svg" alt="npm version"></a>
|
|
14
|
-
<a href="https://www.npmjs.com/package/@mgks/docmd"><img src="https://img.shields.io/npm/
|
|
15
|
-
<a href="https://github.com/mgks/docmd/blob/main/LICENSE"><img src="https://img.shields.io/github/license/mgks/docmd.svg" alt="license"></a>
|
|
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=007acc" alt="npm version"></a>
|
|
17
|
+
<a href="https://www.npmjs.com/package/@mgks/docmd"><img src="https://img.shields.io/npm/dt/@mgks/docmd.svg?style=flat-square&color=success" alt="npm downloads"></a>
|
|
18
|
+
<a href="https://github.com/mgks/docmd/blob/main/LICENSE"><img src="https://img.shields.io/github/license/mgks/docmd.svg?style=flat-square&color=blue" alt="license"></a>
|
|
19
|
+
<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>
|
|
16
20
|
</p>
|
|
17
21
|
|
|
18
|
-
|
|
22
|
+
<p align="center">
|
|
23
|
+
<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> •
|
|
25
|
+
<a href="https://github.com/mgks/docmd/issues"><b>Report Bug</b></a>
|
|
26
|
+
</p>
|
|
27
|
+
|
|
28
|
+
<br>
|
|
29
|
+
|
|
30
|
+
<p align="center">
|
|
31
|
+
<img width="2856" height="1558" alt="519536477-8d948e18-8e2d-420d-8902-96e1aafab1ba-modified" src="https://github.com/user-attachments/assets/5b883c80-8357-46e8-9adb-84e38a0da64c" />
|
|
32
|
+
<sup><i>docmd noStyle page preview in dark mode</i></sup>
|
|
33
|
+
</p>
|
|
19
34
|
|
|
20
|
-
|
|
35
|
+
## 🚀 Why docmd?
|
|
21
36
|
|
|
22
|
-
|
|
37
|
+
Most documentation tools today are too heavy (React hydration, massive bundles) or require ecosystems you don't use (Python/Ruby).
|
|
23
38
|
|
|
24
|
-
|
|
25
|
-
- **Beautiful Themes:** Comes with multiple built-in themes (`sky`, `ruby`, `retro`) and automatic light/dark mode support.
|
|
26
|
-
- **Fast & Lightweight:** Blazing fast static site generation with a minimal client-side footprint.
|
|
27
|
-
- **Rich Content:** Go beyond basic Markdown with custom components like callouts, cards, steps, tabs, and Mermaid diagrams.
|
|
28
|
-
- **Built-in Plugins:** SEO meta tags, sitemap, and analytics are all included out-of-the-box.
|
|
29
|
-
- **No-Style Pages:** Create completely custom pages (like landing pages) with full control over the HTML.
|
|
30
|
-
- **Customizable:** Easily extend or override styles with your own CSS and JavaScript.
|
|
31
|
-
- **Simple CLI:** A straightforward workflow with three main commands: `init`, `dev`, and `build`.
|
|
32
|
-
- **Deploy Anywhere:** The generated `site/` folder can be hosted on any static web host (GitHub Pages, Netlify, Vercel, etc.).
|
|
39
|
+
**docmd** fills the gap. It is a native Node.js tool that generates **pure, static HTML**.
|
|
33
40
|
|
|
34
|
-
|
|
35
|
-
**
|
|
41
|
+
* ⚡ **Blazing Fast:** No hydration delay. Instant page loads.
|
|
42
|
+
* 🛠 **Zero Config:** Works out of the box with sensible defaults.
|
|
43
|
+
* 🎨 **Theming:** Built-in light/dark modes and multiple themes (`sky`, `ruby`, `retro`).
|
|
44
|
+
* 📦 **Node.js Native:** No Python, no Gemfiles. Just `npm install`.
|
|
45
|
+
* 🧩 **Rich Content:** Built-in support for Callouts, Cards, Tabs, Steps, and Changelogs.
|
|
36
46
|
|
|
37
|
-
|
|
47
|
+
## 🏁 Quick Start
|
|
38
48
|
|
|
39
|
-
|
|
49
|
+
You don't need to install anything globally to try it out.
|
|
40
50
|
|
|
41
51
|
```bash
|
|
42
|
-
#
|
|
43
|
-
npx @mgks/docmd init my-docs
|
|
52
|
+
# 1. Initialize a new project
|
|
53
|
+
npx @mgks/docmd init my-docs
|
|
54
|
+
|
|
55
|
+
# 2. Enter directory
|
|
56
|
+
cd my-docs
|
|
44
57
|
|
|
45
|
-
# Start the
|
|
58
|
+
# 3. Start the dev server
|
|
46
59
|
npm start
|
|
47
60
|
```
|
|
48
61
|
|
|
49
|
-
|
|
62
|
+
**Dev server output:**
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
_ _
|
|
67
|
+
_| |___ ___ _____ _| |
|
|
68
|
+
| . | . | _| | . |
|
|
69
|
+
|___|___|___|_|_|_|___|
|
|
70
|
+
|
|
71
|
+
v0.x.x
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
🚀 Performing initial build for dev server...
|
|
75
|
+
✅ Generated sitemap at ./site/sitemap.xml
|
|
76
|
+
✅ Initial build complete.
|
|
77
|
+
👀 Watching for changes in:
|
|
78
|
+
- Source: ./docs
|
|
79
|
+
- Config: ./docmd.config.js
|
|
80
|
+
- Assets: ./assets
|
|
81
|
+
- docmd Templates: ./src/templates (internal)
|
|
82
|
+
- docmd Assets: ./src/assets (internal)
|
|
83
|
+
🎉 Dev server started at http://localhost:3000
|
|
84
|
+
Serving content from: ./site
|
|
85
|
+
Live reload is active. Browser will refresh automatically when files change.
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## ✨ Features
|
|
89
|
+
|
|
90
|
+
| Feature | Description |
|
|
91
|
+
| :--- | :--- |
|
|
92
|
+
| **Markdown First** | Standard Markdown + Frontmatter. No proprietary syntax to learn. |
|
|
93
|
+
| **Smart CLI** | Intelligent config validation catches typos before they break your build. |
|
|
94
|
+
| **Custom Containers** | Use `::: callout`, `::: card`, `::: steps`, `::: tabs`, `::: collapsible`, `::: changelog`, and more to enrich content. |
|
|
95
|
+
| **Diagrams** | Create flowcharts, relationship diagrams, journey, piecharts, graphs, timelines and more with Mermaid. |
|
|
96
|
+
| **No-Style Pages** | Create custom landing pages (highly customizable custom HTML pages) without theme constraints. |
|
|
97
|
+
| **Auto Dark Mode** | Respects system preference and saves user choice. |
|
|
98
|
+
| **Plugins** | SEO, Sitemap, and Analytics support included out-of-the-box. |
|
|
99
|
+
|
|
100
|
+
## 🆚 Comparison
|
|
101
|
+
|
|
102
|
+
How does `docmd` stack up against the giants?
|
|
103
|
+
|
|
104
|
+
| Feature | docmd | Docusaurus | MkDocs (Material) | Mintlify |
|
|
105
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
106
|
+
| **Language** | **Node.js** | React.js | Python | Proprietary |
|
|
107
|
+
| **Output** | **Static HTML** | React SPA | Static HTML | Hosted / Next.js |
|
|
108
|
+
| **JS Payload** | **Tiny (< 15kb)** | Heavy | Minimal | Medium |
|
|
109
|
+
| **Setup** | **~2 mins** | ~15 mins | ~10 mins | Instant (SaaS) |
|
|
110
|
+
| **Cost** | **100% Free OSS** | 100% Free OSS | 100% Free OSS | Freemium |
|
|
50
111
|
|
|
51
|
-
|
|
112
|
+
👉 *[Read the full comparison](https://docmd.mgks.dev/comparison/)*
|
|
52
113
|
|
|
53
|
-
|
|
114
|
+
## 📦 Installation
|
|
115
|
+
|
|
116
|
+
For frequent use, install globally:
|
|
54
117
|
|
|
55
118
|
```bash
|
|
56
119
|
npm install -g @mgks/docmd
|
|
57
120
|
```
|
|
58
|
-
After installation, you can run the `docmd` commands from any directory.
|
|
59
|
-
|
|
60
|
-
### Basic Workflow
|
|
61
121
|
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
docmd init
|
|
65
|
-
```
|
|
66
|
-
This creates a `docs/` directory, a `docmd.config.js` file, and a sample `index.md` to get you started.
|
|
122
|
+
### Commands
|
|
67
123
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
```
|
|
72
|
-
This starts a live-reloading server to preview your site as you write.
|
|
124
|
+
* `docmd init` - Create a new documentation project.
|
|
125
|
+
* `docmd dev` - Start the live-reloading local server.
|
|
126
|
+
* `docmd build` - Generate static files to `site/` for deployment.
|
|
73
127
|
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
docmd build
|
|
77
|
-
```
|
|
78
|
-
This generates the complete, optimized static site into the `site/` directory, ready for deployment.
|
|
128
|
+
## 🎨 Themes
|
|
79
129
|
|
|
80
|
-
|
|
130
|
+
Switching themes is as easy as changing one line in your `docmd.config.js`.
|
|
81
131
|
|
|
82
|
-
|
|
132
|
+
```javascript
|
|
133
|
+
module.exports = {
|
|
134
|
+
theme: {
|
|
135
|
+
name: 'sky', // Options: 'default', 'sky', 'ruby', 'retro'
|
|
136
|
+
defaultMode: 'dark'
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
```
|
|
83
140
|
|
|
84
|
-
## Contributing
|
|
141
|
+
## 🤝 Contributing
|
|
85
142
|
|
|
86
|
-
We welcome contributions
|
|
143
|
+
We welcome contributions! Please see our [Contribution Guidelines](.github/CONTRIBUTING.md) for details.
|
|
87
144
|
|
|
88
145
|
1. Fork the repository.
|
|
89
|
-
2.
|
|
90
|
-
3.
|
|
91
|
-
4.
|
|
92
|
-
5.
|
|
93
|
-
|
|
94
|
-
Please check our [contributing guidelines](https://docmd.mgks.dev/contributing/) for more detailed information.
|
|
95
|
-
|
|
96
|
-
## Support the Project
|
|
146
|
+
2. Create your feature branch (`git checkout -b feature/AmazingFeature`).
|
|
147
|
+
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`).
|
|
148
|
+
4. Push to the branch (`git push origin feature/AmazingFeature`).
|
|
149
|
+
5. Open a Pull Request.
|
|
97
150
|
|
|
98
|
-
|
|
151
|
+
## ❤️ Support
|
|
99
152
|
|
|
100
|
-
|
|
101
|
-
- Sharing it with others who might benefit.
|
|
102
|
-
- Reporting issues or submitting pull requests.
|
|
153
|
+
This project is open source and free to use. If you find it valuable, please consider:
|
|
103
154
|
|
|
104
|
-
|
|
155
|
+
1. ⭐️ **Starring the repo** on GitHub (it helps a lot!)
|
|
156
|
+
2. ☕ **[Sponsoring the project](https://github.com/sponsors/mgks)** to support ongoing development.
|
|
105
157
|
|
|
106
|
-
## License
|
|
158
|
+
## 📄 License
|
|
107
159
|
|
|
108
|
-
|
|
160
|
+
Distributed under the MIT License. See `LICENSE` for more information.
|
package/config.js
CHANGED
|
@@ -123,6 +123,8 @@ module.exports = {
|
|
|
123
123
|
{ title: 'Cards', path: '/content/containers/cards', icon: 'panel-top' },
|
|
124
124
|
{ title: 'Steps', path: '/content/containers/steps', icon: 'list-ordered' },
|
|
125
125
|
{ title: 'Tabs', path: '/content/containers/tabs', icon: 'columns-3' },
|
|
126
|
+
{ title: 'Collapsible', path: '/content/containers/collapsible', icon: 'chevrons-down' },
|
|
127
|
+
{ title: 'Changelogs', path: '/content/containers/changelogs', icon: 'logs' },
|
|
126
128
|
{ title: 'Buttons', path: '/content/containers/buttons', icon: 'mouse-pointer-click' },
|
|
127
129
|
{ title: 'Nested Containers', path: '/content/containers/nested-containers', icon: 'folder-tree' },
|
|
128
130
|
]
|
|
@@ -155,9 +157,21 @@ module.exports = {
|
|
|
155
157
|
{ title: 'Sitemap', path: '/plugins/sitemap', icon: 'map' },
|
|
156
158
|
],
|
|
157
159
|
},
|
|
160
|
+
{
|
|
161
|
+
title: 'Recipes',
|
|
162
|
+
icon: 'chef-hat',
|
|
163
|
+
path: '/recipes/',
|
|
164
|
+
collapsible: true,
|
|
165
|
+
children: [
|
|
166
|
+
{ title: 'Landing Page', path: '/recipes/landing-page', icon: 'panel-top' },
|
|
167
|
+
{ title: 'Custom Fonts', path: '/recipes/custom-fonts', icon: 'type-outline' },
|
|
168
|
+
{ title: 'Favicon', path: '/recipes/favicon', icon: 'circle-dashed' },
|
|
169
|
+
],
|
|
170
|
+
},
|
|
158
171
|
{ title: 'CLI Commands', path: '/cli-commands', icon: 'terminal' },
|
|
159
172
|
{ title: 'Deployment', path: '/deployment', icon: 'upload-cloud' },
|
|
160
173
|
{ title: 'Contributing', path: '/contributing', icon: 'users-2' },
|
|
174
|
+
{ title: 'Comparison', path: '/comparison', icon: 'shapes' },
|
|
161
175
|
|
|
162
176
|
{ title: 'GitHub', path: 'https://github.com/mgks/docmd', icon: 'github', external: true },
|
|
163
177
|
{ title: 'Discussions', path: 'https://github.com/mgks/docmd/discussions', icon: 'message-square', external: true },
|