@life-and-dev/mdsite 0.0.15 → 0.0.21
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 +42 -90
- package/dist/commands/prepare.js +4 -11
- package/dist/commands/prepare.js.map +1 -1
- package/dist/commands/prepare.test.js +22 -3
- package/dist/commands/prepare.test.js.map +1 -1
- package/dist/commands/workflows.test.js +0 -1
- package/dist/commands/workflows.test.js.map +1 -1
- package/dist/renderer/mdsite-nuxt.js +0 -6
- package/dist/renderer/mdsite-nuxt.js.map +1 -1
- package/dist/renderer/mdsite-nuxt.test.js +0 -11
- package/dist/renderer/mdsite-nuxt.test.js.map +1 -1
- package/mdsite-nuxt/scripts/generate-indices.test.ts +180 -0
- package/mdsite-nuxt/scripts/generate-indices.ts +104 -17
- package/mdsite-nuxt/scripts/sync-content.ts +16 -71
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,22 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
# MDsite
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
MDsite is a local-first CLI that turns a directory of Markdown files into a static site using the bundled Nuxt renderer.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
The full documentation lives at [https://life-and-dev.github.io/mdsite/](https://life-and-dev.github.io/mdsite/). This README is a quick reference for end users; contributors should jump to [Developing MDsite](https://life-and-dev.github.io/mdsite/develop).
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
2. Change into the markdown/content directory you want to serve.
|
|
11
|
-
3. Invoke the built CLI from this repository path, or use a local alias/link that points to it.
|
|
12
|
-
4. Run `init` once to create `mdsite.yml`.
|
|
13
|
-
5. Run `start` for foreground local development, or `start -d` for a tracked background process that opens the browser after the server is ready.
|
|
14
|
-
6. Run `generate` to build static output.
|
|
15
|
-
7. Run `preview` after `generate` for a foreground local preview, or `preview -d` for a tracked background preview.
|
|
16
|
-
8. Run `stop` to stop tracked detached `start` and `preview` processes.
|
|
9
|
+
## Install
|
|
17
10
|
|
|
18
|
-
|
|
11
|
+
Install the CLI globally from the npm registry on any machine with Node.js (>= 24.0.0) and npm:
|
|
19
12
|
|
|
20
|
-
|
|
13
|
+
```bash
|
|
14
|
+
npm install -g @life-and-dev/mdsite
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
After install, the `mdsite` command is available from any content directory.
|
|
18
|
+
|
|
19
|
+
## Quick start
|
|
20
|
+
|
|
21
|
+
From the directory containing your Markdown files:
|
|
22
|
+
|
|
23
|
+
1. Run `mdsite init` once to create `mdsite.yml`.
|
|
24
|
+
2. Run `mdsite start` for foreground local development, or `mdsite start -d` for a tracked background process that opens the browser after the server is ready.
|
|
25
|
+
3. Run `mdsite generate` to build static output.
|
|
26
|
+
4. Run `mdsite preview` after `generate` for a foreground local preview, or `mdsite preview -d` for a tracked background preview.
|
|
27
|
+
5. Run `mdsite stop` to stop tracked detached `start` and `preview` processes.
|
|
21
28
|
|
|
22
29
|
## Implemented commands
|
|
23
30
|
|
|
@@ -32,63 +39,7 @@ mdsite stop
|
|
|
32
39
|
mdsite prepare github
|
|
33
40
|
```
|
|
34
41
|
|
|
35
|
-
All commands operate on the **current working directory** as the content/project directory.
|
|
36
|
-
`version` prints the CLI version from the root `package.json`; run it as `mdsite version` or `node /path/to/md-site/dist/index.js version`.
|
|
37
|
-
`prepare github` also requires `mdsite.yml` and writes a GitHub Pages workflow for that content directory.
|
|
38
|
-
|
|
39
|
-
## Local Development Setup
|
|
40
|
-
|
|
41
|
-
This repository currently documents a **local-only** workflow:
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
# in this repository
|
|
45
|
-
npm install
|
|
46
|
-
npm run build
|
|
47
|
-
npm run install-alias
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
Restart CLI terminal session.
|
|
51
|
-
|
|
52
|
-
Then run the `mdsite-dev` alias from any directory containing `mdsite.yml`:
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
mdsite-dev start
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
Open http://localhost:3000/. The command runs in the foreground and writes renderer output to the terminal; closing the terminal or interrupting the command stops the process.
|
|
59
|
-
|
|
60
|
-
To run the demo as a tracked background process instead, use `mdsite-dev start -d` or `mdsite-dev start --detached`. Detached start logs to `.mdsite-runtime/start.log` in the content directory and opens the browser automatically after the server is ready.
|
|
61
|
-
|
|
62
|
-
To stop a detached local preview:
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
mdsite-dev stop
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
> [!NOTE] When using `mdsite-dev` locally (e.g. `npm run install-alias`), the CLI utility is called `mdsite-dev`. When installed globally via npm registry, the CLI utility is called `mdsite` instead.
|
|
69
|
-
|
|
70
|
-
## Release version and npm publish
|
|
71
|
-
|
|
72
|
-
The npm package is `@life-and-dev/mdsite`. To bump the package version and create a release tag, run:
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
npm run release:version -- patch
|
|
76
|
-
npm run release:version -- minor
|
|
77
|
-
npm run release:version -- major
|
|
78
|
-
npm run release:version -- x.y.z
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
The script updates `package.json` and `package-lock.json` with `npm version`, runs typecheck, build, and package verification, commits `chore: release v<version>`, and creates a local annotated tag named `v<version>`.
|
|
82
|
-
|
|
83
|
-
The script does not push changes or publish to npm. Push the release commit and tag manually:
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
git push origin main
|
|
87
|
-
git push origin v<version>
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
> [!WARNING]
|
|
91
|
-
> Pushing the `v<version>` tag triggers the GitHub Actions npm publish workflow with provenance. The `npm-publish.yml` workflow requires npm Trusted Publisher configuration for `@life-and-dev/mdsite`.
|
|
42
|
+
All commands operate on the **current working directory** as the content/project directory. `version` prints the CLI version from the root `package.json`. `prepare github` requires `mdsite.yml` and writes a GitHub Pages workflow for that content directory.
|
|
92
43
|
|
|
93
44
|
## Supported CLI flow
|
|
94
45
|
|
|
@@ -132,8 +83,7 @@ mdsite generate
|
|
|
132
83
|
mdsite preview
|
|
133
84
|
```
|
|
134
85
|
|
|
135
|
-
`preview` is a **post-generate** local preview step. It requires `mdsite.yml` and an existing generated renderer build.
|
|
136
|
-
By default, it runs in the foreground with terminal output. Closing the terminal or interrupting the command stops the foreground preview.
|
|
86
|
+
`preview` is a **post-generate** local preview step. It requires `mdsite.yml` and an existing generated renderer build. By default, it runs in the foreground with terminal output. Closing the terminal or interrupting the command stops the foreground preview.
|
|
137
87
|
|
|
138
88
|
Use `mdsite preview -d` or `mdsite preview --detached` to run a tracked background preview instead. Detached preview logs to `mdsite.log` in the content directory and writes runtime state under `.mdsite-runtime/`.
|
|
139
89
|
|
|
@@ -153,16 +103,16 @@ mdsite prepare github
|
|
|
153
103
|
|
|
154
104
|
`prepare github` requires `mdsite.yml`, prepares the configured local renderer, and writes `.github/workflows/deploy.yml` in the current content directory. The generated workflow uses the configured local `server.path` during GitHub Actions; it does not add a renderer clone or pull workflow.
|
|
155
105
|
|
|
106
|
+
For production deployments, see the [Deployment guide](https://life-and-dev.github.io/mdsite/deploy).
|
|
107
|
+
|
|
156
108
|
## Renderer resolution
|
|
157
109
|
|
|
158
|
-
Renderer resolution is
|
|
110
|
+
Renderer resolution is **local-only**:
|
|
159
111
|
|
|
160
112
|
- If `mdsite.yml` sets `server.path`, the CLI first looks for that path **relative to the content directory**.
|
|
161
|
-
- If that directory is not present, the CLI falls back to the
|
|
113
|
+
- If that directory is not present, the CLI falls back to the bundled renderer shipped with the package.
|
|
162
114
|
- If the renderer's `node_modules` directory is missing, the CLI runs `npm install` in the renderer directory.
|
|
163
|
-
- `prepare github` requires the configured `server.path` renderer directory to exist; unlike `start`, `generate`, and `preview`, it does not fall back to the
|
|
164
|
-
|
|
165
|
-
Current documentation does **not** describe clone/pull behavior as active usage.
|
|
115
|
+
- `prepare github` requires the configured `server.path` renderer directory to exist; unlike `start`, `generate`, and `preview`, it does not fall back to the bundled renderer when that configured path is absent.
|
|
166
116
|
|
|
167
117
|
## Expected content project layout
|
|
168
118
|
|
|
@@ -186,18 +136,7 @@ your-content/
|
|
|
186
136
|
└── other-pages.md
|
|
187
137
|
```
|
|
188
138
|
|
|
189
|
-
The CLI also writes renderer compatibility files such as `_menu.yml
|
|
190
|
-
|
|
191
|
-
## Migration notes for existing users
|
|
192
|
-
|
|
193
|
-
If you previously used the legacy root workflow:
|
|
194
|
-
|
|
195
|
-
- Replace `npm start` with `node /path/to/md-site/dist/index.js start`.
|
|
196
|
-
- Replace `npm run generate` with `node /path/to/md-site/dist/index.js generate`.
|
|
197
|
-
- Replace `npm run preview` with `node /path/to/md-site/dist/index.js preview` after `node /path/to/md-site/dist/index.js generate`.
|
|
198
|
-
- Replace legacy root/domain config assumptions with a single `mdsite.yml` in the content directory.
|
|
199
|
-
- Treat `content.config.yml` and domain-specific `*.config.yml` files as legacy reference, not current setup.
|
|
200
|
-
- Keep custom markdown content, menus, and theme values, but move current configuration intent into `mdsite.yml`.
|
|
139
|
+
The CLI also writes renderer compatibility files such as `_menu.yml` and the renderer's `.env` / `content.config.yml` as part of orchestration. Tracked background commands write runtime files under `.mdsite-runtime/`.
|
|
201
140
|
|
|
202
141
|
## Troubleshooting
|
|
203
142
|
|
|
@@ -212,7 +151,7 @@ mdsite init
|
|
|
212
151
|
### Renderer directory issues
|
|
213
152
|
|
|
214
153
|
- If `server.path` is set, confirm it points to a renderer directory relative to the content directory.
|
|
215
|
-
- If that path does not exist, the CLI falls back to the
|
|
154
|
+
- If that path does not exist, the CLI falls back to the bundled renderer shipped with the package.
|
|
216
155
|
- If neither renderer location exists, the CLI cannot run.
|
|
217
156
|
- For `prepare github`, the configured `server.path` must exist because workflow generation uses the configured renderer path directly.
|
|
218
157
|
|
|
@@ -231,6 +170,8 @@ Run `mdsite generate` first. `preview` requires an existing generated renderer b
|
|
|
231
170
|
- `server.path` is resolved relative to the content directory.
|
|
232
171
|
- If `favicon` is configured, the referenced file must exist.
|
|
233
172
|
|
|
173
|
+
For more, see the user guides on [Markdown](https://life-and-dev.github.io/mdsite/markdown), [Menu](https://life-and-dev.github.io/mdsite/menu), [Favicon](https://life-and-dev.github.io/mdsite/favicon), [Theme](https://life-and-dev.github.io/mdsite/theme), and [Features](https://life-and-dev.github.io/mdsite/features).
|
|
174
|
+
|
|
234
175
|
## Configuration reference
|
|
235
176
|
|
|
236
177
|
`mdsite.yml` is the only active content-directory configuration file. `mdsite init` creates it and fills defaults from local markdown files where possible.
|
|
@@ -242,9 +183,20 @@ Run `mdsite generate` first. `preview` requires an existing generated renderer b
|
|
|
242
183
|
| `features.sourceEdit` | `true` | Enables renderer source-edit support. |
|
|
243
184
|
| `menu` | derived from markdown files | Menu structure used to generate `_menu.yml`. |
|
|
244
185
|
| `server.output` | `.output` | Static output path under the content directory. |
|
|
245
|
-
| `server.path` | `.mdsite` | Renderer path relative to the content directory. Local commands fall back to
|
|
186
|
+
| `server.path` | `.mdsite` | Renderer path relative to the content directory. Local commands fall back to the bundled renderer when this path is absent, except `prepare github`. |
|
|
246
187
|
| `server.repo` | `https://github.com/life-and-dev/mdsite` | Stored for compatibility and generated renderer config. It is not used for active clone/pull behaviour. |
|
|
247
188
|
| `site.canonical` | empty string | Canonical site URL passed to the renderer. |
|
|
248
189
|
| `site.name` | derived from `index.md` or directory | Site name passed to the renderer. |
|
|
249
190
|
| `themes.light.colors` | built-in palette | Light theme colour overrides. |
|
|
250
191
|
| `themes.dark.colors` | built-in palette | Dark theme colour overrides. |
|
|
192
|
+
|
|
193
|
+
For full descriptions of each section, see the corresponding guides under [Documentation](https://life-and-dev.github.io/mdsite/).
|
|
194
|
+
|
|
195
|
+
## For Developers
|
|
196
|
+
|
|
197
|
+
MDsite is a thin TypeScript CLI that orchestrates a Nuxt renderer shipped as a git submodule. If you want to contribute, customize the renderer, run the test suites, or cut a release, the developer documentation lives at:
|
|
198
|
+
|
|
199
|
+
- [Developing MDsite](https://life-and-dev.github.io/mdsite/develop) — repository layout, CLI architecture, and CLI ↔ Nuxt integration.
|
|
200
|
+
- [Renderer (mdsite-nuxt submodule)](https://life-and-dev.github.io/mdsite/develop/nuxt) — what the submodule is, how to customize it, how to extend Nuxt with custom components.
|
|
201
|
+
- [Testing](https://life-and-dev.github.io/mdsite/develop/tests) — how to run the CLI and renderer test suites.
|
|
202
|
+
- [Release](https://life-and-dev.github.io/mdsite/develop/release) — how to cut and publish a new version of `@life-and-dev/mdsite`.
|
package/dist/commands/prepare.js
CHANGED
|
@@ -46,18 +46,11 @@ function buildGithubWorkflow(config) {
|
|
|
46
46
|
' steps:',
|
|
47
47
|
' - name: Checkout',
|
|
48
48
|
' uses: actions/checkout@v7',
|
|
49
|
+
' with:',
|
|
50
|
+
' submodules: true',
|
|
49
51
|
'',
|
|
50
|
-
' - name:
|
|
51
|
-
|
|
52
|
-
' npm install --no-save @life-and-dev/mdsite',
|
|
53
|
-
" node <<'NODE'",
|
|
54
|
-
" const fs = require('node:fs')",
|
|
55
|
-
" const path = require('node:path')",
|
|
56
|
-
" const ignored = new Set(['node_modules', '.nuxt', '.output', 'dist', '.cache'])",
|
|
57
|
-
" const source = path.join(process.cwd(), 'node_modules', '@life-and-dev', 'mdsite', 'mdsite-nuxt')",
|
|
58
|
-
` const target = path.join(process.cwd(), ${JSON.stringify(rendererPath)})`,
|
|
59
|
-
' fs.cpSync(source, target, { recursive: true, force: true, filter: (sourcePath) => !ignored.has(path.basename(sourcePath)) })',
|
|
60
|
-
' NODE',
|
|
52
|
+
' - name: Use checked-in mdsite renderer',
|
|
53
|
+
` run: test -f ${rendererPath}/package.json`,
|
|
61
54
|
'',
|
|
62
55
|
' - name: Setup Node',
|
|
63
56
|
' uses: actions/setup-node@v6',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/commands/prepare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,iCAAiC,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAE7J,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,UAAkB;IAC9D,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAA;IACjD,MAAM,iCAAiC,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjF,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,MAAM,yBAAyB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE9G,MAAM,0BAA0B,CAAC,WAAW,CAAC,CAAA;IAC7C,MAAM,sBAAsB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IAEtD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;IAChF,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5D,MAAM,SAAS,CAAC,YAAY,EAAE,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;IAEzE,OAAO,sCAAsC,YAAY,EAAE,CAAA;AAC7D,CAAC;AAED,SAAS,mBAAmB,CAAC,MAA8D;IACzF,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;IACjF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IAChH,MAAM,YAAY,GAAG,aAAa,CAAA;IAClC,MAAM,YAAY,GAAG,KAAK,UAAU,SAAS,CAAA;IAC7C,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,4BAA4B,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAA;IAE3K,OAAO;QACL,SAAS,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;QACvC,EAAE;QACF,KAAK;QACL,SAAS;QACT,wBAAwB;QACxB,sBAAsB;QACtB,EAAE;QACF,cAAc;QACd,kBAAkB;QAClB,gBAAgB;QAChB,mBAAmB;QACnB,EAAE;QACF,cAAc;QACd,kBAAkB;QAClB,6BAA6B;QAC7B,EAAE;QACF,OAAO;QACP,UAAU;QACV,4BAA4B;QAC5B,UAAU;QACV,6BAA6B,oBAAoB,GAAG;QACpD,uBAAuB,oBAAoB,GAAG;QAC9C,gEAAgE;QAChE,YAAY;QACZ,wBAAwB;QACxB,mCAAmC;QACnC,
|
|
1
|
+
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/commands/prepare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,iCAAiC,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAE7J,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,UAAkB;IAC9D,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAA;IACjD,MAAM,iCAAiC,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjF,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,MAAM,yBAAyB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE9G,MAAM,0BAA0B,CAAC,WAAW,CAAC,CAAA;IAC7C,MAAM,sBAAsB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IAEtD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;IAChF,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5D,MAAM,SAAS,CAAC,YAAY,EAAE,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;IAEzE,OAAO,sCAAsC,YAAY,EAAE,CAAA;AAC7D,CAAC;AAED,SAAS,mBAAmB,CAAC,MAA8D;IACzF,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;IACjF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IAChH,MAAM,YAAY,GAAG,aAAa,CAAA;IAClC,MAAM,YAAY,GAAG,KAAK,UAAU,SAAS,CAAA;IAC7C,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,4BAA4B,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAA;IAE3K,OAAO;QACL,SAAS,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;QACvC,EAAE;QACF,KAAK;QACL,SAAS;QACT,wBAAwB;QACxB,sBAAsB;QACtB,EAAE;QACF,cAAc;QACd,kBAAkB;QAClB,gBAAgB;QAChB,mBAAmB;QACnB,EAAE;QACF,cAAc;QACd,kBAAkB;QAClB,6BAA6B;QAC7B,EAAE;QACF,OAAO;QACP,UAAU;QACV,4BAA4B;QAC5B,UAAU;QACV,6BAA6B,oBAAoB,GAAG;QACpD,uBAAuB,oBAAoB,GAAG;QAC9C,gEAAgE;QAChE,YAAY;QACZ,wBAAwB;QACxB,mCAAmC;QACnC,eAAe;QACf,4BAA4B;QAC5B,EAAE;QACF,8CAA8C;QAC9C,wBAAwB,YAAY,eAAe;QACnD,EAAE;QACF,0BAA0B;QAC1B,qCAAqC;QACrC,eAAe;QACf,8BAA8B;QAC9B,sBAAsB;QACtB,oCAAoC,IAAI,CAAC,SAAS,CAAC,GAAG,YAAY,oBAAoB,CAAC,EAAE;QACzF,EAAE;QACF,2BAA2B;QAC3B,mBAAmB;QACnB,0CAA0C;QAC1C,EAAE;QACF,6BAA6B;QAC7B,gCAAgC;QAChC,eAAe;QACf,mBAAmB;QACnB,eAAe,YAAY,eAAe;QAC1C,4DAA4D,GAAG,YAAY,GAAG,yBAAyB;QACvG,2BAA2B;QAC3B,0CAA0C;QAC1C,EAAE;QACF,oCAAoC;QACpC,8BAA8B,YAAY,EAAE;QAC5C,0BAA0B;QAC1B,EAAE;QACF,oCAAoC;QACpC,8BAA8B,YAAY,EAAE;QAC5C,+BAA+B;QAC/B,cAAc;QACd,oEAAoE;QACpE,EAAE;QACF,+BAA+B;QAC/B,gDAAgD;QAChD,eAAe;QACf,mBAAmB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;QACjD,EAAE;QACF,WAAW;QACX,kBAAkB;QAClB,0BAA0B;QAC1B,qDAAqD;QACrD,4BAA4B;QAC5B,kBAAkB;QAClB,YAAY;QACZ,sCAAsC;QACtC,wBAAwB;QACxB,uCAAuC;KACxC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;AACrB,CAAC"}
|
|
@@ -51,9 +51,15 @@ describe('runPrepareGithubCommand', () => {
|
|
|
51
51
|
expect(workflow).toContain(' renderer/node_modules');
|
|
52
52
|
expect(workflow).not.toContain(' renderer/.nuxt');
|
|
53
53
|
expect(workflow).not.toContain(' renderer/build/site');
|
|
54
|
-
expect(workflow).toContain('name:
|
|
55
|
-
expect(workflow).toContain('
|
|
56
|
-
expect(workflow).toContain(
|
|
54
|
+
expect(workflow).toContain('name: Use checked-in mdsite renderer');
|
|
55
|
+
expect(workflow).toContain('run: test -f renderer/package.json');
|
|
56
|
+
expect(workflow).toContain('name: Install dependencies');
|
|
57
|
+
expect(workflow).toContain('run: npm install');
|
|
58
|
+
expect(workflow).not.toContain('name: Setup mdsite renderer');
|
|
59
|
+
expect(workflow).not.toContain('npm install --no-save @life-and-dev/mdsite');
|
|
60
|
+
expect(workflow).not.toContain('@life-and-dev/mdsite');
|
|
61
|
+
expect(workflow).not.toContain('node_modules/@life-and-dev/mdsite');
|
|
62
|
+
expect(workflow).not.toContain("node_modules', '@life-and-dev', 'mdsite', 'mdsite-nuxt");
|
|
57
63
|
expect(workflow).toContain('renderer/build/site');
|
|
58
64
|
expect(workflow).toContain('path: "./renderer/build/site/public"');
|
|
59
65
|
expect(workflow).toContain('run: npm run generate');
|
|
@@ -92,6 +98,13 @@ describe('runPrepareGithubCommand', () => {
|
|
|
92
98
|
expect(workflow).toContain('MDSITE_CONFIG_PATH: "${{ github.workspace }}/mdsite.yml"');
|
|
93
99
|
expect(workflow).toContain('working-directory: renderer');
|
|
94
100
|
expect(workflow).toContain('node-version: "24"');
|
|
101
|
+
expect(workflow).toContain('NUXT_APP_BASE_URL: ${{ steps.pages.outputs.base_path }}/');
|
|
102
|
+
expect(workflow).toContain('run: test -f renderer/package.json');
|
|
103
|
+
expect(workflow).toContain('run: npm install');
|
|
104
|
+
expect(workflow).not.toContain('npm install --no-save @life-and-dev/mdsite');
|
|
105
|
+
expect(workflow).not.toContain('@life-and-dev/mdsite');
|
|
106
|
+
expect(workflow).not.toContain('node_modules/@life-and-dev/mdsite');
|
|
107
|
+
expect(workflow).not.toContain("node_modules', '@life-and-dev', 'mdsite', 'mdsite-nuxt");
|
|
95
108
|
expect(workflow).toContain('run: npm run generate');
|
|
96
109
|
expect(workflow).not.toContain('npm start -- --generate');
|
|
97
110
|
expect(workflow).toContain('path: "./renderer/build/site/public"');
|
|
@@ -120,6 +133,12 @@ describe('runPrepareGithubCommand', () => {
|
|
|
120
133
|
expect(workflow).toContain('working-directory: .mdsite');
|
|
121
134
|
expect(workflow).toContain('node-version: "24"');
|
|
122
135
|
expect(workflow).toContain('cache-dependency-path: ".mdsite/package-lock.json"');
|
|
136
|
+
expect(workflow).toContain('run: test -f .mdsite/package.json');
|
|
137
|
+
expect(workflow).toContain('run: npm install');
|
|
138
|
+
expect(workflow).not.toContain('npm install --no-save @life-and-dev/mdsite');
|
|
139
|
+
expect(workflow).not.toContain('@life-and-dev/mdsite');
|
|
140
|
+
expect(workflow).not.toContain('node_modules/@life-and-dev/mdsite');
|
|
141
|
+
expect(workflow).not.toContain("node_modules', '@life-and-dev', 'mdsite', 'mdsite-nuxt");
|
|
123
142
|
expect(workflow).toContain('path: "./.mdsite/.output/public"');
|
|
124
143
|
expect(workflow).toContain('run: npm run generate');
|
|
125
144
|
expect(workflow).not.toContain('npm start -- --generate');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare.test.js","sourceRoot":"","sources":["../../src/commands/prepare.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"prepare.test.js","sourceRoot":"","sources":["../../src/commands/prepare.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -101,7 +101,6 @@ describe('CLI workflow coverage', () => {
|
|
|
101
101
|
}), path.join(contentDir, '.mdsite-runtime', 'start.log'));
|
|
102
102
|
expect(waitForTcpPortMocked).toHaveBeenCalledWith('localhost', 3000);
|
|
103
103
|
expect(openUrlInBrowserMock).toHaveBeenCalledWith('http://localhost:3000');
|
|
104
|
-
expect(await readFile(path.join(contentDir, '_menu.yml'), 'utf8')).toContain('- docs/guide');
|
|
105
104
|
expect(await readFile(path.join(rendererDir, '.env'), 'utf8')).toContain(`NUXT_CONTENT_PATH=${JSON.stringify(contentDir)}`);
|
|
106
105
|
expect(await readFile(path.join(rendererDir, 'content.config.yml'), 'utf8')).toContain('siteName: Workspace Docs');
|
|
107
106
|
await expect(readRuntimeState(contentDir, 'start')).resolves.toEqual(expect.objectContaining({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.test.js","sourceRoot":"","sources":["../../src/commands/workflows.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"workflows.test.js","sourceRoot":"","sources":["../../src/commands/workflows.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@ import { access, copyFile, cp, mkdir, rm, stat, symlink, writeFile } from 'node:
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
import YAML from 'yaml';
|
|
5
|
-
import { generateMenuFromMarkdownFiles } from '../config/menu.js';
|
|
6
5
|
import { runForeground, runBackground } from '../process/child-process.js';
|
|
7
6
|
const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..');
|
|
8
7
|
const checkedInRendererDir = path.join(repoRoot, 'mdsite-nuxt');
|
|
@@ -31,7 +30,6 @@ export async function ensureConfiguredRendererInstalled(contentDir, config, opti
|
|
|
31
30
|
return rendererDir;
|
|
32
31
|
}
|
|
33
32
|
async function prepareRendererEnvironment(contentDir, config, rendererDir, configPath) {
|
|
34
|
-
await ensureMenuFile(contentDir, config);
|
|
35
33
|
await ensureRendererFaviconAlias(contentDir, config);
|
|
36
34
|
await writeCompatibilityConfigFile(rendererDir, contentDir, config);
|
|
37
35
|
const rendererEnv = {
|
|
@@ -129,10 +127,6 @@ async function ensureDirectoryIsAvailable(directoryPath) {
|
|
|
129
127
|
function shouldCopyRendererPath(sourcePath) {
|
|
130
128
|
return !rendererCopyIgnoredNames.has(path.basename(sourcePath));
|
|
131
129
|
}
|
|
132
|
-
async function ensureMenuFile(contentDir, config) {
|
|
133
|
-
const menu = config.menu.length > 0 ? config.menu : await generateMenuFromMarkdownFiles(contentDir);
|
|
134
|
-
await writeFile(path.join(contentDir, '_menu.yml'), YAML.stringify(menu), 'utf8');
|
|
135
|
-
}
|
|
136
130
|
async function ensureRendererFaviconAlias(contentDir, config) {
|
|
137
131
|
if (!config.favicon.trim()) {
|
|
138
132
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mdsite-nuxt.js","sourceRoot":"","sources":["../../src/renderer/mdsite-nuxt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5F,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,IAAI,MAAM,MAAM,CAAA;AAGvB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"mdsite-nuxt.js","sourceRoot":"","sources":["../../src/renderer/mdsite-nuxt.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,15 +10,11 @@ vi.mock('node:fs/promises', () => ({
|
|
|
10
10
|
symlink: vi.fn(),
|
|
11
11
|
writeFile: vi.fn()
|
|
12
12
|
}));
|
|
13
|
-
vi.mock('../config/menu.js', () => ({
|
|
14
|
-
generateMenuFromMarkdownFiles: vi.fn()
|
|
15
|
-
}));
|
|
16
13
|
vi.mock('../process/child-process.js', () => ({
|
|
17
14
|
runForeground: vi.fn(),
|
|
18
15
|
runBackground: vi.fn()
|
|
19
16
|
}));
|
|
20
17
|
import { access, copyFile, cp, mkdir, rm, stat, symlink, writeFile } from 'node:fs/promises';
|
|
21
|
-
import { generateMenuFromMarkdownFiles } from '../config/menu.js';
|
|
22
18
|
import { runBackground, runForeground } from '../process/child-process.js';
|
|
23
19
|
import { ensurePreviewArtifacts, ensureConfiguredRendererInstalled, ensureRendererDependencies, generateRenderer, getRendererGeneratedOutputPath, prepareRendererBackend, prepareConfiguredRenderer, prepareRenderer, previewRendererForeground, previewRendererInBackground, startRendererForeground, startRendererInBackground } from './mdsite-nuxt.js';
|
|
24
20
|
const accessMock = vi.mocked(access);
|
|
@@ -29,7 +25,6 @@ const rmMock = vi.mocked(rm);
|
|
|
29
25
|
const statMock = vi.mocked(stat);
|
|
30
26
|
const symlinkMock = vi.mocked(symlink);
|
|
31
27
|
const writeFileMock = vi.mocked(writeFile);
|
|
32
|
-
const generateMenuMock = vi.mocked(generateMenuFromMarkdownFiles);
|
|
33
28
|
const runForegroundMock = vi.mocked(runForeground);
|
|
34
29
|
const runBackgroundMock = vi.mocked(runBackground);
|
|
35
30
|
const baseConfig = {
|
|
@@ -48,7 +43,6 @@ describe('mdsite-nuxt renderer helpers', () => {
|
|
|
48
43
|
vi.clearAllMocks();
|
|
49
44
|
accessMock.mockResolvedValue(undefined);
|
|
50
45
|
statMock.mockResolvedValue({ isDirectory: () => true });
|
|
51
|
-
generateMenuMock.mockResolvedValue(['generated/page']);
|
|
52
46
|
runBackgroundMock.mockResolvedValue(999);
|
|
53
47
|
});
|
|
54
48
|
it('prepareRenderer prefers the configured renderer dir, generates a menu file, and writes bridge config/env files', async () => {
|
|
@@ -58,8 +52,6 @@ describe('mdsite-nuxt renderer helpers', () => {
|
|
|
58
52
|
expect(prepared.rendererDir).toBe(rendererDir);
|
|
59
53
|
expect(prepared.rendererEnv.NUXT_CONTENT_PATH).toBe(contentDir);
|
|
60
54
|
expect(prepared.rendererEnv.MDSITE_CONFIG_PATH).toBe(path.join(contentDir, 'mdsite.yml'));
|
|
61
|
-
expect(generateMenuMock).toHaveBeenCalledWith(contentDir);
|
|
62
|
-
expect(writeFileMock).toHaveBeenCalledWith(path.join(contentDir, '_menu.yml'), '- generated/page\n', 'utf8');
|
|
63
55
|
expect(writeFileMock).toHaveBeenCalledWith(path.join(rendererDir, 'content.config.yml'), expect.stringContaining('siteName: Docs'), 'utf8');
|
|
64
56
|
expect(writeFileMock).toHaveBeenCalledWith(path.join(rendererDir, '.env'), expect.stringContaining(`NUXT_CONTENT_PATH=${JSON.stringify(contentDir)}`), 'utf8');
|
|
65
57
|
});
|
|
@@ -73,8 +65,6 @@ describe('mdsite-nuxt renderer helpers', () => {
|
|
|
73
65
|
expect(prepared.rendererEnv.NUXT_CONTENT_PATH).toBe(contentDir);
|
|
74
66
|
expect(prepared.rendererEnv.CONTENT_DIR).toBe(contentDir);
|
|
75
67
|
expect(prepared.rendererEnv.MDSITE_CONFIG_PATH).toBe(configPath);
|
|
76
|
-
expect(generateMenuMock).toHaveBeenCalledWith(contentDir);
|
|
77
|
-
expect(writeFileMock).toHaveBeenCalledWith(path.join(contentDir, '_menu.yml'), '- generated/page\n', 'utf8');
|
|
78
68
|
});
|
|
79
69
|
it('falls back to the checked-in renderer when the configured renderer dir is absent', async () => {
|
|
80
70
|
const contentDir = '/workspace/content';
|
|
@@ -87,7 +77,6 @@ describe('mdsite-nuxt renderer helpers', () => {
|
|
|
87
77
|
});
|
|
88
78
|
const prepared = await prepareRenderer(contentDir, { ...baseConfig, menu: ['docs/getting-started'] });
|
|
89
79
|
expect(prepared.rendererDir).toBe(checkedInRendererDir);
|
|
90
|
-
expect(writeFileMock).toHaveBeenCalledWith(path.join(contentDir, '_menu.yml'), '- docs/getting-started\n', 'utf8');
|
|
91
80
|
});
|
|
92
81
|
it('prepareConfiguredRenderer resolves the configured renderer dir without checking the repo fallback', async () => {
|
|
93
82
|
const contentDir = '/workspace/content';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mdsite-nuxt.test.js","sourceRoot":"","sources":["../../src/renderer/mdsite-nuxt.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mdsite-nuxt.test.js","sourceRoot":"","sources":["../../src/renderer/mdsite-nuxt.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,4 +54,184 @@ describe('generated content indices', () => {
|
|
|
54
54
|
}),
|
|
55
55
|
])
|
|
56
56
|
})
|
|
57
|
+
|
|
58
|
+
describe('index path normalization in navigation', () => {
|
|
59
|
+
async function readNavigation() {
|
|
60
|
+
return JSON.parse(await fs.readFile(path.join(publicDir, '_navigation.json'), 'utf8'))
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
it('normalizes top-level string "index" to path "/"', async () => {
|
|
64
|
+
await fs.writeFile(path.join(contentDir, 'index.md'), '# Home\n\nWelcome.', 'utf8')
|
|
65
|
+
await fs.writeFile(path.join(contentDir, '_menu.yml'), '- index\n- guide\n', 'utf8')
|
|
66
|
+
await fs.writeFile(path.join(contentDir, 'guide.md'), '# Guide\n\nContent.', 'utf8')
|
|
67
|
+
|
|
68
|
+
await generateNavigationJson()
|
|
69
|
+
|
|
70
|
+
const navigation = await readNavigation()
|
|
71
|
+
const home = navigation.find((n: { path: string }) => n.path === '/')
|
|
72
|
+
expect(home).toBeDefined()
|
|
73
|
+
expect(home).toEqual(expect.objectContaining({ path: '/', title: 'Home' }))
|
|
74
|
+
// No node should still have /index after normalization
|
|
75
|
+
const leaked = navigation.find((n: { path: string }) => n.path === '/index')
|
|
76
|
+
expect(leaked).toBeUndefined()
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
it('preserves non-index paths', async () => {
|
|
80
|
+
await fs.writeFile(path.join(contentDir, 'guide.md'), '# Guide\n\nContent.', 'utf8')
|
|
81
|
+
await fs.writeFile(path.join(contentDir, '_menu.yml'), '- guide\n', 'utf8')
|
|
82
|
+
|
|
83
|
+
await generateNavigationJson()
|
|
84
|
+
|
|
85
|
+
const navigation = await readNavigation()
|
|
86
|
+
expect(navigation).toEqual([
|
|
87
|
+
expect.objectContaining({ path: '/guide', title: 'Guide' }),
|
|
88
|
+
])
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
it('normalizes submenu key "index" to path "/"', async () => {
|
|
92
|
+
await fs.mkdir(path.join(contentDir, 'features'), { recursive: true })
|
|
93
|
+
await fs.writeFile(path.join(contentDir, 'index.md'), '# Home\n\nWelcome.', 'utf8')
|
|
94
|
+
await fs.writeFile(path.join(contentDir, 'features', 'index.md'), '# Features Landing\n\nOverview.', 'utf8')
|
|
95
|
+
await fs.writeFile(path.join(contentDir, '_menu.yml'), [
|
|
96
|
+
'- index:',
|
|
97
|
+
' - features/bible-tooltips',
|
|
98
|
+
'- features:',
|
|
99
|
+
' - index',
|
|
100
|
+
' - features/source-edit',
|
|
101
|
+
'',
|
|
102
|
+
].join('\n'), 'utf8')
|
|
103
|
+
await fs.writeFile(path.join(contentDir, 'features', 'bible-tooltips.md'), '# Bible Tooltips\n\nContent.', 'utf8')
|
|
104
|
+
await fs.writeFile(path.join(contentDir, 'features', 'source-edit.md'), '# Source Edit\n\nContent.', 'utf8')
|
|
105
|
+
|
|
106
|
+
await generateNavigationJson()
|
|
107
|
+
|
|
108
|
+
const navigation = await readNavigation()
|
|
109
|
+
// Top-level "index:" submenu key -> "/"
|
|
110
|
+
const topIndex = navigation.find((n: { path: string, children?: unknown[] }) => n.path === '/')
|
|
111
|
+
expect(topIndex).toBeDefined()
|
|
112
|
+
expect(Array.isArray(topIndex!.children)).toBe(true)
|
|
113
|
+
// Nested "index" under features submenu -> "/features"
|
|
114
|
+
const featuresNode = navigation.find((n: { path: string, children?: unknown[] }) => n.path === '/features')
|
|
115
|
+
expect(featuresNode).toBeDefined()
|
|
116
|
+
const nestedIndex = featuresNode!.children!.find((c: { path: string }) => c.path === '/features')
|
|
117
|
+
expect(nestedIndex).toBeDefined()
|
|
118
|
+
})
|
|
119
|
+
|
|
120
|
+
it('normalizes alias (custom title) targeting "index" to path "/"', async () => {
|
|
121
|
+
await fs.writeFile(path.join(contentDir, 'index.md'), '# Home\n\nWelcome.', 'utf8')
|
|
122
|
+
await fs.writeFile(path.join(contentDir, '_menu.yml'), '- Homepage: index\n', 'utf8')
|
|
123
|
+
|
|
124
|
+
await generateNavigationJson()
|
|
125
|
+
|
|
126
|
+
const navigation = await readNavigation()
|
|
127
|
+
const alias = navigation.find((n: { title: string, path: string }) => n.title === 'Homepage')
|
|
128
|
+
expect(alias).toEqual(expect.objectContaining({ path: '/', title: 'Homepage' }))
|
|
129
|
+
})
|
|
130
|
+
})
|
|
131
|
+
|
|
132
|
+
describe('mdsite.yml menu lookup', () => {
|
|
133
|
+
async function readNavigation() {
|
|
134
|
+
return JSON.parse(await fs.readFile(path.join(publicDir, '_navigation.json'), 'utf8'))
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
it('reads menu from MDSITE_CONFIG_PATH when it points to a mdsite.yml', async () => {
|
|
138
|
+
await fs.writeFile(path.join(contentDir, 'index.md'), '# Home\n\nWelcome home.', 'utf8')
|
|
139
|
+
await fs.writeFile(path.join(contentDir, 'guide.md'), '# Guide\n\nUseful guide.', 'utf8')
|
|
140
|
+
await fs.writeFile(path.join(contentDir, 'about.md'), '# About\n\nAbout us.', 'utf8')
|
|
141
|
+
|
|
142
|
+
const mdsitePath = path.join(tempDir, 'mdsite.yml')
|
|
143
|
+
await fs.writeFile(mdsitePath, [
|
|
144
|
+
'site:',
|
|
145
|
+
' name: Test Site',
|
|
146
|
+
'menu:',
|
|
147
|
+
' - index',
|
|
148
|
+
' - guide',
|
|
149
|
+
'',
|
|
150
|
+
].join('\n'), 'utf8')
|
|
151
|
+
process.env.MDSITE_CONFIG_PATH = mdsitePath
|
|
152
|
+
|
|
153
|
+
await generateNavigationJson()
|
|
154
|
+
|
|
155
|
+
const navigation = await readNavigation()
|
|
156
|
+
expect(navigation).toEqual([
|
|
157
|
+
expect.objectContaining({ path: '/', title: 'Home' }),
|
|
158
|
+
expect.objectContaining({ path: '/guide', title: 'Guide' }),
|
|
159
|
+
])
|
|
160
|
+
// about.md exists but is not in the menu
|
|
161
|
+
expect(navigation.find((n: { path: string }) => n.path === '/about')).toBeUndefined()
|
|
162
|
+
})
|
|
163
|
+
|
|
164
|
+
it('reads menu from ../mdsite.yml relative to content dir when MDSITE_CONFIG_PATH is unset', async () => {
|
|
165
|
+
await fs.writeFile(path.join(contentDir, 'index.md'), '# Home\n\nWelcome home.', 'utf8')
|
|
166
|
+
await fs.writeFile(path.join(contentDir, 'guide.md'), '# Guide\n\nUseful guide.', 'utf8')
|
|
167
|
+
|
|
168
|
+
// mdsite.yml lives one level up from contentDir (e.g. sibling of the content dir)
|
|
169
|
+
const mdsitePath = path.join(tempDir, 'mdsite.yml')
|
|
170
|
+
await fs.writeFile(mdsitePath, [
|
|
171
|
+
'menu:',
|
|
172
|
+
' - guide',
|
|
173
|
+
'',
|
|
174
|
+
].join('\n'), 'utf8')
|
|
175
|
+
delete process.env.MDSITE_CONFIG_PATH
|
|
176
|
+
|
|
177
|
+
await generateNavigationJson()
|
|
178
|
+
|
|
179
|
+
const navigation = await readNavigation()
|
|
180
|
+
expect(navigation).toEqual([
|
|
181
|
+
expect.objectContaining({ path: '/guide', title: 'Guide' }),
|
|
182
|
+
])
|
|
183
|
+
})
|
|
184
|
+
|
|
185
|
+
it('prefers _menu.yml over mdsite.yml when both exist (legacy precedence)', async () => {
|
|
186
|
+
await fs.writeFile(path.join(contentDir, 'index.md'), '# Home\n\nWelcome.', 'utf8')
|
|
187
|
+
await fs.writeFile(path.join(contentDir, 'guide.md'), '# Guide\n\nContent.', 'utf8')
|
|
188
|
+
await fs.writeFile(path.join(contentDir, 'about.md'), '# About\n\nAbout.', 'utf8')
|
|
189
|
+
|
|
190
|
+
// Legacy _menu.yml lists only index + guide
|
|
191
|
+
await fs.writeFile(path.join(contentDir, '_menu.yml'), '- index\n- guide\n', 'utf8')
|
|
192
|
+
// mdsite.yml in same content dir would otherwise list index + about
|
|
193
|
+
await fs.writeFile(path.join(contentDir, 'mdsite.yml'), [
|
|
194
|
+
'menu:',
|
|
195
|
+
' - index',
|
|
196
|
+
' - about',
|
|
197
|
+
'',
|
|
198
|
+
].join('\n'), 'utf8')
|
|
199
|
+
delete process.env.MDSITE_CONFIG_PATH
|
|
200
|
+
|
|
201
|
+
await generateNavigationJson()
|
|
202
|
+
|
|
203
|
+
const navigation = await readNavigation()
|
|
204
|
+
const paths = navigation.map((n: { path: string }) => n.path)
|
|
205
|
+
expect(paths).toEqual(['/', '/guide'])
|
|
206
|
+
// about.md is not in the legacy menu, so it should not appear
|
|
207
|
+
expect(navigation.find((n: { path: string }) => n.path === '/about')).toBeUndefined()
|
|
208
|
+
})
|
|
209
|
+
|
|
210
|
+
it('skips mdsite.yml candidates that have no menu key and falls through to a later candidate', async () => {
|
|
211
|
+
await fs.writeFile(path.join(contentDir, 'index.md'), '# Home\n\nWelcome.', 'utf8')
|
|
212
|
+
await fs.writeFile(path.join(contentDir, 'guide.md'), '# Guide\n\nContent.', 'utf8')
|
|
213
|
+
|
|
214
|
+
// ../mdsite.yml exists but has no menu key - should not be used
|
|
215
|
+
const parentMdsite = path.join(tempDir, 'mdsite.yml')
|
|
216
|
+
await fs.writeFile(parentMdsite, [
|
|
217
|
+
'site:',
|
|
218
|
+
' name: Test Site',
|
|
219
|
+
'',
|
|
220
|
+
].join('\n'), 'utf8')
|
|
221
|
+
// contentDir/mdsite.yml has a real menu - should win as the next candidate
|
|
222
|
+
await fs.writeFile(path.join(contentDir, 'mdsite.yml'), [
|
|
223
|
+
'menu:',
|
|
224
|
+
' - guide',
|
|
225
|
+
'',
|
|
226
|
+
].join('\n'), 'utf8')
|
|
227
|
+
delete process.env.MDSITE_CONFIG_PATH
|
|
228
|
+
|
|
229
|
+
await generateNavigationJson()
|
|
230
|
+
|
|
231
|
+
const navigation = await readNavigation()
|
|
232
|
+
expect(navigation).toEqual([
|
|
233
|
+
expect.objectContaining({ path: '/guide', title: 'Guide' }),
|
|
234
|
+
])
|
|
235
|
+
})
|
|
236
|
+
})
|
|
57
237
|
})
|
|
@@ -110,6 +110,24 @@ export interface MinimalTreeNode {
|
|
|
110
110
|
|
|
111
111
|
type MenuItemType = string | { [key: string]: string | null | MenuItemType[] } | null
|
|
112
112
|
|
|
113
|
+
/**
|
|
114
|
+
* Normalize URL path so a trailing /index resolves to its parent.
|
|
115
|
+
* Mirrors filePathToUrlPath behavior so menu paths match content routes.
|
|
116
|
+
*
|
|
117
|
+
* Examples:
|
|
118
|
+
* /index -> /
|
|
119
|
+
* /features/index -> /features
|
|
120
|
+
* / -> /
|
|
121
|
+
* /architecture -> /architecture
|
|
122
|
+
*/
|
|
123
|
+
function normalizeIndexPath(resolvedPath: string): string {
|
|
124
|
+
if (resolvedPath === '/index') return '/'
|
|
125
|
+
if (resolvedPath.endsWith('/index')) {
|
|
126
|
+
return resolvedPath.slice(0, -('/index'.length))
|
|
127
|
+
}
|
|
128
|
+
return resolvedPath
|
|
129
|
+
}
|
|
130
|
+
|
|
113
131
|
/**
|
|
114
132
|
* Resolve relative/absolute paths in menu
|
|
115
133
|
*/
|
|
@@ -197,7 +215,7 @@ async function processMenuItems(
|
|
|
197
215
|
nodes.push({
|
|
198
216
|
id: `${resolvedPath.split('/').filter(Boolean).pop() || 'home'}-${order}`,
|
|
199
217
|
title: title || item,
|
|
200
|
-
path: resolvedPath,
|
|
218
|
+
path: normalizeIndexPath(resolvedPath),
|
|
201
219
|
type: 'link',
|
|
202
220
|
description,
|
|
203
221
|
isPrimary: true
|
|
@@ -270,7 +288,7 @@ async function processMenuItems(
|
|
|
270
288
|
nodes.push({
|
|
271
289
|
id: `${submenuPath.split('/').filter(Boolean).pop() || 'home'}-${order}`,
|
|
272
290
|
title: title || key,
|
|
273
|
-
path: submenuPath,
|
|
291
|
+
path: normalizeIndexPath(submenuPath),
|
|
274
292
|
type: 'link',
|
|
275
293
|
description,
|
|
276
294
|
isPrimary: true,
|
|
@@ -299,7 +317,7 @@ async function processMenuItems(
|
|
|
299
317
|
nodes.push({
|
|
300
318
|
id: `link-${key.replace(/\s+/g, '-').toLowerCase()}-${order}`,
|
|
301
319
|
title: key,
|
|
302
|
-
path: resolvedPath,
|
|
320
|
+
path: normalizeIndexPath(resolvedPath),
|
|
303
321
|
type: 'link',
|
|
304
322
|
description,
|
|
305
323
|
isPrimary: false // Aliases are NOT primary
|
|
@@ -349,6 +367,84 @@ async function buildFallbackNavigationTree(sourceDir: string): Promise<MinimalTr
|
|
|
349
367
|
return nodes
|
|
350
368
|
}
|
|
351
369
|
|
|
370
|
+
/**
|
|
371
|
+
* Load the menu array from a candidate config file (legacy _menu.yml/yaml or mdsite.yml).
|
|
372
|
+
* Returns null if the file is missing, unreadable, has no menu key, or has an empty menu.
|
|
373
|
+
*/
|
|
374
|
+
async function tryReadMenuFromConfig(configPath: string): Promise<MenuItemType[] | null> {
|
|
375
|
+
if (!await fs.pathExists(configPath)) {
|
|
376
|
+
return null
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
try {
|
|
380
|
+
const content = await fs.readFile(configPath, 'utf-8')
|
|
381
|
+
const parsed = parseYaml(content) as { menu?: MenuItemType[] } | null
|
|
382
|
+
if (parsed && Array.isArray(parsed.menu) && parsed.menu.length > 0) {
|
|
383
|
+
return parsed.menu
|
|
384
|
+
}
|
|
385
|
+
} catch (e) {
|
|
386
|
+
// Ignore parse errors - they shouldn't abort the whole lookup chain
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
return null
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
/**
|
|
393
|
+
* Try to read menu items from a plain (non-wrapped) legacy _menu.yml/yaml file.
|
|
394
|
+
* Returns null if the file is missing, unreadable, or doesn't contain a non-empty array.
|
|
395
|
+
*/
|
|
396
|
+
async function tryReadLegacyMenuFile(menuPath: string): Promise<MenuItemType[] | null> {
|
|
397
|
+
if (!await fs.pathExists(menuPath)) {
|
|
398
|
+
return null
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
try {
|
|
402
|
+
const content = await fs.readFile(menuPath, 'utf-8')
|
|
403
|
+
const parsed = parseYaml(content) as MenuItemType[] | null
|
|
404
|
+
if (Array.isArray(parsed) && parsed.length > 0) {
|
|
405
|
+
return parsed
|
|
406
|
+
}
|
|
407
|
+
} catch (e) {
|
|
408
|
+
// Ignore parse errors
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
return null
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
/**
|
|
415
|
+
* Layered menu lookup. Tries, in order:
|
|
416
|
+
* 1. <sourceDir>/_menu.yml
|
|
417
|
+
* 2. <sourceDir>/_menu.yaml
|
|
418
|
+
* 3. MDSITE_CONFIG_PATH env var (parsed as wrapped { menu: [...] })
|
|
419
|
+
* 4. <sourceDir>/../mdsite.yml
|
|
420
|
+
* 5. <sourceDir>/mdsite.yml
|
|
421
|
+
* Returns the first non-empty menu array, or null if none resolve to a menu.
|
|
422
|
+
*/
|
|
423
|
+
async function loadMenuConfig(sourceDir: string): Promise<MenuItemType[] | null> {
|
|
424
|
+
const candidates: { path: string, isLegacy: boolean }[] = [
|
|
425
|
+
{ path: path.join(sourceDir, '_menu.yml'), isLegacy: true },
|
|
426
|
+
{ path: path.join(sourceDir, '_menu.yaml'), isLegacy: true }
|
|
427
|
+
]
|
|
428
|
+
|
|
429
|
+
if (process.env.MDSITE_CONFIG_PATH) {
|
|
430
|
+
candidates.push({ path: process.env.MDSITE_CONFIG_PATH, isLegacy: false })
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
candidates.push({ path: path.join(sourceDir, '..', 'mdsite.yml'), isLegacy: false })
|
|
434
|
+
candidates.push({ path: path.join(sourceDir, 'mdsite.yml'), isLegacy: false })
|
|
435
|
+
|
|
436
|
+
for (const candidate of candidates) {
|
|
437
|
+
const menu = candidate.isLegacy
|
|
438
|
+
? await tryReadLegacyMenuFile(candidate.path)
|
|
439
|
+
: await tryReadMenuFromConfig(candidate.path)
|
|
440
|
+
if (menu) {
|
|
441
|
+
return menu
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
return null
|
|
446
|
+
}
|
|
447
|
+
|
|
352
448
|
/**
|
|
353
449
|
* Generate navigation JSON file
|
|
354
450
|
*/
|
|
@@ -357,23 +453,14 @@ export async function generateNavigationJson() {
|
|
|
357
453
|
console.log(`📋 Building navigation tree for: ${domain}`)
|
|
358
454
|
|
|
359
455
|
const sourceDir = getSourceDir()
|
|
360
|
-
let menuPath = path.join(sourceDir, '_menu.yml')
|
|
361
|
-
|
|
362
|
-
if (!await fs.pathExists(menuPath)) {
|
|
363
|
-
menuPath = path.join(sourceDir, '_menu.yaml')
|
|
364
|
-
}
|
|
365
|
-
|
|
366
456
|
let tree: MinimalTreeNode[] = []
|
|
367
457
|
try {
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
const
|
|
371
|
-
|
|
372
|
-
const result = await processMenuItems(menuItems, '/')
|
|
373
|
-
tree = result.nodes
|
|
374
|
-
}
|
|
458
|
+
const menuItems = await loadMenuConfig(sourceDir)
|
|
459
|
+
if (menuItems) {
|
|
460
|
+
const result = await processMenuItems(menuItems, '/')
|
|
461
|
+
tree = result.nodes
|
|
375
462
|
} else {
|
|
376
|
-
console.warn('⚠️ No _menu.yml
|
|
463
|
+
console.warn('⚠️ No menu found in _menu.yml, _menu.yaml, MDSITE_CONFIG_PATH, or mdsite.yml (source: ' + sourceDir + ')')
|
|
377
464
|
}
|
|
378
465
|
} catch (error) {
|
|
379
466
|
console.error('Error building navigation tree:', error)
|
|
@@ -18,7 +18,6 @@ const STATIC_FILES = [
|
|
|
18
18
|
'site.webmanifest',
|
|
19
19
|
'robots.txt'
|
|
20
20
|
]
|
|
21
|
-
const MENU_FILES = ['_menu.yml', '_menu.yaml']
|
|
22
21
|
const LOGO_FILE = 'logo.svg'
|
|
23
22
|
const FAVICON_DIR = 'favicon'
|
|
24
23
|
const FAVICON_FILES = [
|
|
@@ -119,13 +118,13 @@ export async function generateJsonFiles() {
|
|
|
119
118
|
}
|
|
120
119
|
|
|
121
120
|
/**
|
|
122
|
-
* Copy all images
|
|
121
|
+
* Copy all images and favicons from content to public directory (one-time)
|
|
123
122
|
*/
|
|
124
123
|
export async function copyAllImages() {
|
|
125
124
|
const sourceDir = getSourceDir()
|
|
126
125
|
const targetDir = getTargetDir()
|
|
127
126
|
|
|
128
|
-
console.log(`📦 Copying images
|
|
127
|
+
console.log(`📦 Copying images and favicons from: ${sourceDir}`)
|
|
129
128
|
console.log(`📦 Target directory: ${targetDir}`)
|
|
130
129
|
|
|
131
130
|
let copiedCount = 0
|
|
@@ -146,15 +145,6 @@ export async function copyAllImages() {
|
|
|
146
145
|
}
|
|
147
146
|
}
|
|
148
147
|
|
|
149
|
-
// Copy root menu file (check all supported names)
|
|
150
|
-
for (const menuFile of MENU_FILES) {
|
|
151
|
-
const rootMenuPath = path.join(sourceDir, menuFile)
|
|
152
|
-
if (await fs.pathExists(rootMenuPath)) {
|
|
153
|
-
await copyMenuFile(rootMenuPath, false)
|
|
154
|
-
copiedCount++
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
|
|
158
148
|
// Copy favicon files
|
|
159
149
|
const faviconDir = path.join(sourceDir, FAVICON_DIR)
|
|
160
150
|
if (await fs.pathExists(faviconDir)) {
|
|
@@ -196,7 +186,7 @@ export async function cleanPublicDirectory() {
|
|
|
196
186
|
}
|
|
197
187
|
|
|
198
188
|
/**
|
|
199
|
-
* Watch images
|
|
189
|
+
* Watch images and markdown files in content directory
|
|
200
190
|
*/
|
|
201
191
|
export async function startWatcher() {
|
|
202
192
|
const sourceDir = getSourceDir()
|
|
@@ -211,13 +201,12 @@ export async function startWatcher() {
|
|
|
211
201
|
// Generate navigation and search JSON files
|
|
212
202
|
await generateJsonFiles()
|
|
213
203
|
|
|
214
|
-
console.log(`👀 Watching images
|
|
204
|
+
console.log(`👀 Watching images and markdown in: ${sourceDir}`)
|
|
215
205
|
console.log(`👀 Target directory: ${targetDir}\n`)
|
|
216
206
|
|
|
217
207
|
const patterns = [
|
|
218
208
|
...IMAGE_EXTS.map(ext => `${sourceDir}/**/*.${ext}`),
|
|
219
|
-
`${sourceDir}/**/*.md
|
|
220
|
-
...MENU_FILES.map(f => `${sourceDir}/${f}`) // Watch root menu files
|
|
209
|
+
`${sourceDir}/**/*.md` // Watch all markdown files
|
|
221
210
|
]
|
|
222
211
|
|
|
223
212
|
const watcher = chokidar.watch(patterns, {
|
|
@@ -232,10 +221,7 @@ export async function startWatcher() {
|
|
|
232
221
|
watcher
|
|
233
222
|
.on('add', (filePath) => {
|
|
234
223
|
const fileName = path.basename(filePath)
|
|
235
|
-
if (
|
|
236
|
-
copyMenuFile(filePath, true, 'added')
|
|
237
|
-
regenerateNavigation() // Menu change affects navigation
|
|
238
|
-
} else if (fileName === LOGO_FILE) {
|
|
224
|
+
if (fileName === LOGO_FILE) {
|
|
239
225
|
handleLogoChange(filePath, 'added')
|
|
240
226
|
} else if (fileName.endsWith('.md')) {
|
|
241
227
|
// Markdown file added - regenerate both navigation and search
|
|
@@ -248,10 +234,7 @@ export async function startWatcher() {
|
|
|
248
234
|
})
|
|
249
235
|
.on('change', (filePath) => {
|
|
250
236
|
const fileName = path.basename(filePath)
|
|
251
|
-
if (
|
|
252
|
-
copyMenuFile(filePath, true, 'updated')
|
|
253
|
-
regenerateNavigation() // Menu change affects navigation
|
|
254
|
-
} else if (fileName === LOGO_FILE) {
|
|
237
|
+
if (fileName === LOGO_FILE) {
|
|
255
238
|
handleLogoChange(filePath, 'updated')
|
|
256
239
|
} else if (fileName.endsWith('.md')) {
|
|
257
240
|
// Markdown file changed - regenerate both navigation and search
|
|
@@ -264,10 +247,7 @@ export async function startWatcher() {
|
|
|
264
247
|
})
|
|
265
248
|
.on('unlink', (filePath) => {
|
|
266
249
|
const fileName = path.basename(filePath)
|
|
267
|
-
if (
|
|
268
|
-
deleteMenuFile(filePath)
|
|
269
|
-
regenerateNavigation() // Menu deletion affects navigation
|
|
270
|
-
} else if (fileName === LOGO_FILE) {
|
|
250
|
+
if (fileName === LOGO_FILE) {
|
|
271
251
|
console.log(`🗑️ Logo removed: ${fileName}`)
|
|
272
252
|
} else if (fileName.endsWith('.md')) {
|
|
273
253
|
// Markdown file deleted - regenerate both navigation and search
|
|
@@ -307,17 +287,11 @@ function getPublicPath(sourcePath: string): { relativePath: string, targetPath:
|
|
|
307
287
|
}
|
|
308
288
|
|
|
309
289
|
/**
|
|
310
|
-
* Copy a single
|
|
290
|
+
* Copy a single image from content to public
|
|
311
291
|
*/
|
|
312
|
-
async function
|
|
313
|
-
sourcePath: string,
|
|
314
|
-
fileType: 'Image' | 'Menu',
|
|
315
|
-
log: boolean = true,
|
|
316
|
-
action: string = 'copied'
|
|
317
|
-
) {
|
|
292
|
+
async function copyImage(sourcePath: string, log: boolean = true, action: string = 'copied') {
|
|
318
293
|
try {
|
|
319
|
-
|
|
320
|
-
if (fileType === 'Image' && await isDraftOnlyImage(sourcePath)) {
|
|
294
|
+
if (await isDraftOnlyImage(sourcePath)) {
|
|
321
295
|
if (log) {
|
|
322
296
|
const fileName = path.basename(sourcePath)
|
|
323
297
|
console.log(`⊗ Skipped draft image: ${fileName}`)
|
|
@@ -331,7 +305,7 @@ async function copyFile(
|
|
|
331
305
|
await fs.copy(sourcePath, targetPath)
|
|
332
306
|
|
|
333
307
|
if (log) {
|
|
334
|
-
console.log(`✓
|
|
308
|
+
console.log(`✓ Image ${action}: ${relativePath}`)
|
|
335
309
|
}
|
|
336
310
|
} catch (error) {
|
|
337
311
|
console.error(`❌ Failed to copy ${sourcePath}:`, error)
|
|
@@ -339,12 +313,11 @@ async function copyFile(
|
|
|
339
313
|
}
|
|
340
314
|
|
|
341
315
|
/**
|
|
342
|
-
* Delete
|
|
316
|
+
* Delete image from public directory
|
|
343
317
|
*/
|
|
344
|
-
async function
|
|
318
|
+
async function deleteImage(sourcePath: string) {
|
|
345
319
|
try {
|
|
346
|
-
|
|
347
|
-
if (fileType === 'Image' && await isDraftOnlyImage(sourcePath)) {
|
|
320
|
+
if (await isDraftOnlyImage(sourcePath)) {
|
|
348
321
|
const fileName = path.basename(sourcePath)
|
|
349
322
|
console.log(`⊗ Draft image removed from content: ${fileName}`)
|
|
350
323
|
return
|
|
@@ -354,41 +327,13 @@ async function deleteFile(sourcePath: string, fileType: 'Image' | 'Menu') {
|
|
|
354
327
|
|
|
355
328
|
if (await fs.pathExists(targetPath)) {
|
|
356
329
|
await fs.remove(targetPath)
|
|
357
|
-
console.log(`✗
|
|
330
|
+
console.log(`✗ Image deleted: ${relativePath}`)
|
|
358
331
|
}
|
|
359
332
|
} catch (error) {
|
|
360
333
|
console.error(`❌ Failed to delete ${sourcePath}:`, error)
|
|
361
334
|
}
|
|
362
335
|
}
|
|
363
336
|
|
|
364
|
-
/**
|
|
365
|
-
* Copy a single image from content to public
|
|
366
|
-
*/
|
|
367
|
-
async function copyImage(sourcePath: string, log: boolean = true, action: string = 'copied') {
|
|
368
|
-
return copyFile(sourcePath, 'Image', log, action)
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
/**
|
|
372
|
-
* Delete image from public directory
|
|
373
|
-
*/
|
|
374
|
-
async function deleteImage(sourcePath: string) {
|
|
375
|
-
return deleteFile(sourcePath, 'Image')
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
/**
|
|
379
|
-
* Copy a single _menu.yml file from content to public
|
|
380
|
-
*/
|
|
381
|
-
async function copyMenuFile(sourcePath: string, log: boolean = true, action: string = 'copied') {
|
|
382
|
-
return copyFile(sourcePath, 'Menu', log, action)
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
/**
|
|
386
|
-
* Delete _menu.yml file from public directory
|
|
387
|
-
*/
|
|
388
|
-
async function deleteMenuFile(sourcePath: string) {
|
|
389
|
-
return deleteFile(sourcePath, 'Menu')
|
|
390
|
-
}
|
|
391
|
-
|
|
392
337
|
/**
|
|
393
338
|
* Check if an image belongs to a draft-only page (no published .md exists)
|
|
394
339
|
*/
|