@life-and-dev/mdsite 0.1.1 → 0.2.1
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 +39 -21
- package/dist/commands/commands.test.js +91 -30
- package/dist/commands/commands.test.js.map +1 -1
- package/dist/commands/init.js +54 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/prepare.js +22 -14
- package/dist/commands/prepare.js.map +1 -1
- package/dist/commands/prepare.test.js +33 -39
- package/dist/commands/prepare.test.js.map +1 -1
- package/dist/commands/preview.d.ts +1 -0
- package/dist/commands/preview.js +11 -10
- package/dist/commands/preview.js.map +1 -1
- package/dist/commands/start.d.ts +1 -0
- package/dist/commands/start.js +23 -10
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/stop.js +6 -3
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/workflows.test.js +76 -19
- package/dist/commands/workflows.test.js.map +1 -1
- package/dist/config/mdsite-config.js +1 -1
- package/dist/config/mdsite-config.js.map +1 -1
- package/dist/config/mdsite-config.test.js +1 -1
- package/dist/config/mdsite-config.test.js.map +1 -1
- package/dist/config/menu.js +0 -1
- package/dist/config/menu.js.map +1 -1
- package/dist/index.js +42 -7
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +40 -0
- package/dist/index.test.js.map +1 -1
- package/dist/process/child-process.test.js +3 -3
- package/dist/process/child-process.test.js.map +1 -1
- package/dist/process/runtime-state.d.ts +6 -5
- package/dist/process/runtime-state.js +13 -17
- package/dist/process/runtime-state.js.map +1 -1
- package/dist/process/runtime-state.test.js +21 -13
- package/dist/process/runtime-state.test.js.map +1 -1
- package/dist/renderer/mdsite-nuxt.d.ts +2 -0
- package/dist/renderer/mdsite-nuxt.js +29 -32
- package/dist/renderer/mdsite-nuxt.js.map +1 -1
- package/dist/renderer/mdsite-nuxt.test.js +37 -48
- package/dist/renderer/mdsite-nuxt.test.js.map +1 -1
- package/mdsite-nuxt/app/composables/useAppTheme.ts +22 -3
- package/mdsite-nuxt/app/config/themes.ts +38 -0
- package/mdsite-nuxt/nuxt.config.ts +11 -1
- package/mdsite-nuxt/scripts/generate-favicons.ts +24 -55
- package/mdsite-nuxt/scripts/renderer-hooks.test.ts +0 -8
- package/mdsite-nuxt/scripts/renderer-hooks.ts +1 -2
- package/mdsite-nuxt/scripts/sync-content.ts +5 -79
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ mdsite stop
|
|
|
39
39
|
mdsite prepare github
|
|
40
40
|
```
|
|
41
41
|
|
|
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.
|
|
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. `start` and `preview` also accept `-d`/`--detached` to run a tracked background server, and `--host` (or `--host <addr>`) to expose the server on the network — see the start and preview sections below.
|
|
43
43
|
|
|
44
44
|
## Supported CLI flow
|
|
45
45
|
|
|
@@ -67,7 +67,9 @@ mdsite start
|
|
|
67
67
|
|
|
68
68
|
`start` requires `mdsite.yml`, prepares renderer compatibility files, installs renderer dependencies when `node_modules` is missing, and runs the renderer in the foreground with terminal output. Closing the terminal or interrupting the command stops the foreground process.
|
|
69
69
|
|
|
70
|
-
Use `mdsite start -d` or `mdsite start --detached` to run a tracked background renderer instead. Detached start logs to `.mdsite
|
|
70
|
+
Use `mdsite start -d` or `mdsite start --detached` to run a tracked background renderer instead. Detached start logs to `<server.path>/start.log` (e.g. `.mdsite/start.log`) in the content directory and opens the browser automatically after the server is ready.
|
|
71
|
+
|
|
72
|
+
Add `--host` (or `--host <addr>`) to expose the dev server on the network, e.g. `mdsite start --host` binds `0.0.0.0` so other devices on your LAN can reach it; `mdsite start --host 192.168.1.10` binds a specific address. Combine with detached mode as in `mdsite start -d --host`.
|
|
71
73
|
|
|
72
74
|
### 3. Generate static output
|
|
73
75
|
|
|
@@ -85,7 +87,9 @@ mdsite preview
|
|
|
85
87
|
|
|
86
88
|
`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.
|
|
87
89
|
|
|
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
|
|
90
|
+
Use `mdsite preview -d` or `mdsite preview --detached` to run a tracked background preview instead. Detached preview logs to `<server.path>/preview.log` (e.g. `.mdsite/preview.log`) in the content directory and writes runtime state under `<server.path>/` (e.g. `.mdsite/`).
|
|
91
|
+
|
|
92
|
+
Add `--host` (or `--host <addr>`) to expose the preview server on the network, the same way as `mdsite start`, e.g. `mdsite preview --host` binds `0.0.0.0`.
|
|
89
93
|
|
|
90
94
|
### 5. Stop background processes
|
|
91
95
|
|
|
@@ -101,18 +105,23 @@ mdsite stop
|
|
|
101
105
|
mdsite prepare github
|
|
102
106
|
```
|
|
103
107
|
|
|
104
|
-
`prepare github` requires `mdsite.yml
|
|
108
|
+
`prepare github` requires `mdsite.yml` and writes a **self-adapting** `.github/workflows/deploy.yml` in the current content directory. The workflow checks out with `submodules: true`, then detects `bin/mdsite.js` to choose how to build:
|
|
109
|
+
|
|
110
|
+
- **Source build** (when `bin/mdsite.js` is present — the source repo): `npm install && npm run build && node bin/mdsite.js generate`.
|
|
111
|
+
- **End-user build** (otherwise): `npx -y @life-and-dev/mdsite generate`.
|
|
112
|
+
|
|
113
|
+
Either way it uploads the root `.output/public/`, runs on Node 24 (pinned via `.nvmrc`), and caches dependencies keyed on `.mdsite/package-lock.json`. No committed renderer tree is required for end users.
|
|
105
114
|
|
|
106
115
|
For production deployments, see the [Deployment guide](https://life-and-dev.github.io/mdsite/deploy).
|
|
107
116
|
|
|
108
117
|
## Renderer resolution
|
|
109
118
|
|
|
110
|
-
|
|
119
|
+
The CLI is **dev-aware** about where it runs the renderer:
|
|
111
120
|
|
|
112
|
-
-
|
|
113
|
-
-
|
|
114
|
-
- If the renderer
|
|
115
|
-
- `prepare github`
|
|
121
|
+
- **Bundled renderer as the local submodule (this repo / contributors)** — when the bundled renderer is the checked-out `mdsite-nuxt/` submodule and is NOT inside `node_modules`, the CLI runs it **in place**, so live-editing of `mdsite-nuxt/` keeps working.
|
|
122
|
+
- **Bundled renderer inside `node_modules` (end users / `npm install` / `npx` / CI)** — the CLI copies the bundled renderer into `<server.path>` (default `.mdsite`) under your content directory and runs it there. The copy preserves any committed `<server.path>/package.json` and `<server.path>/package-lock.json` so the lockfile pair can be version-controlled.
|
|
123
|
+
- If the resolved renderer directory has no `node_modules`, the CLI runs `npm install` in it.
|
|
124
|
+
- `mdsite prepare github` generates a **self-adapting** workflow (see below) and never clones or pulls the renderer itself.
|
|
116
125
|
|
|
117
126
|
## Expected content project layout
|
|
118
127
|
|
|
@@ -128,15 +137,24 @@ After `mdsite init`, `mdsite generate`, and optional tracked background commands
|
|
|
128
137
|
|
|
129
138
|
```text
|
|
130
139
|
your-content/
|
|
131
|
-
├── mdsite.yml
|
|
132
|
-
├──
|
|
133
|
-
├── .
|
|
134
|
-
├── .
|
|
140
|
+
├── mdsite.yml # your site config (written by init)
|
|
141
|
+
├── .nvmrc # Node 24 (written by init)
|
|
142
|
+
├── .gitignore # managed by init (ignores .mdsite/* and .output/)
|
|
143
|
+
├── .mdsite/ # renderer working dir (<server.path>)
|
|
144
|
+
│ ├── package.json # committed lockfile pair (written by init)
|
|
145
|
+
│ ├── package-lock.json # committed lockfile pair (written by init)
|
|
146
|
+
│ ├── start.json # tracked-detached runtime state (when used)
|
|
147
|
+
│ ├── preview.json # tracked-detached runtime state (when used)
|
|
148
|
+
│ ├── start.log # detached start log (when used)
|
|
149
|
+
│ ├── preview.log # detached preview log (when used)
|
|
150
|
+
│ └── public/ # generated favicons + site.webmanifest
|
|
151
|
+
├── .output/ # deployable static site (server.output)
|
|
152
|
+
│ └── public/
|
|
135
153
|
├── index.md
|
|
136
154
|
└── other-pages.md
|
|
137
155
|
```
|
|
138
156
|
|
|
139
|
-
The
|
|
157
|
+
The content directory holds only your own files (`*.md`, `mdsite.yml`, `.nvmrc`, `.gitignore`, your favicon source). Everything the renderer needs at runtime — materialized source, `node_modules`, compatibility files (`.env`, `content.config.yml`), generated favicons, and detached-process state — lives inside the `.mdsite/` renderer working dir. Only `.mdsite/package.json` and `.mdsite/package-lock.json` are meant to be committed; everything else under `.mdsite/` and `.output/` is gitignored.
|
|
140
158
|
|
|
141
159
|
## Troubleshooting
|
|
142
160
|
|
|
@@ -150,10 +168,10 @@ mdsite init
|
|
|
150
168
|
|
|
151
169
|
### Renderer directory issues
|
|
152
170
|
|
|
153
|
-
-
|
|
154
|
-
-
|
|
155
|
-
- If
|
|
156
|
-
-
|
|
171
|
+
- In this repo (dev), the bundled `mdsite-nuxt/` submodule runs in place; make sure it is checked out (`git submodule update --init --recursive`).
|
|
172
|
+
- For end users (`npm install` / `npx`), the CLI materializes the bundled renderer into `<server.path>` (default `.mdsite`) under your content directory; no manual renderer checkout is needed.
|
|
173
|
+
- If the resolved renderer directory has no `node_modules`, the CLI runs `npm install` in it automatically.
|
|
174
|
+
- `mdsite prepare github` generates a self-adapting workflow and never clones or pulls the renderer itself.
|
|
157
175
|
|
|
158
176
|
### Renderer dependencies missing
|
|
159
177
|
|
|
@@ -178,12 +196,12 @@ For more, see the user guides on [Markdown](https://life-and-dev.github.io/mdsit
|
|
|
178
196
|
|
|
179
197
|
| Key | Default | Description |
|
|
180
198
|
| ------------------------ | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
181
|
-
| `favicon` | empty string |
|
|
199
|
+
| `favicon` | empty string | Source image path relative to the content directory (any format `sharp` supports). The renderer generates derived favicons into the renderer's `public/` dir. |
|
|
182
200
|
| `features.bibleTooltips` | `true` | Enables renderer Bible tooltip support. |
|
|
183
201
|
| `features.sourceEdit` | `true` | Enables renderer source-edit support. |
|
|
184
|
-
| `menu` | derived from markdown files | Menu structure
|
|
202
|
+
| `menu` | derived from markdown files | Menu structure for the sidebar navigation. |
|
|
185
203
|
| `server.output` | `.output` | Static output path under the content directory. |
|
|
186
|
-
| `server.path` | `.mdsite` |
|
|
204
|
+
| `server.path` | `.mdsite` | The renderer working directory, relative to the content directory. End-user runs materialize the bundled renderer here; in the dev repo the bundled submodule runs in place. |
|
|
187
205
|
| `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. |
|
|
188
206
|
| `site.canonical` | empty string | Canonical site URL passed to the renderer. |
|
|
189
207
|
| `site.name` | derived from `index.md` or directory | Site name passed to the renderer. |
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
2
|
vi.mock('node:fs/promises', () => ({
|
|
3
3
|
access: vi.fn(),
|
|
4
|
+
copyFile: vi.fn(),
|
|
4
5
|
cp: vi.fn(),
|
|
6
|
+
mkdir: vi.fn(),
|
|
7
|
+
readFile: vi.fn(),
|
|
5
8
|
rm: vi.fn(),
|
|
6
9
|
writeFile: vi.fn()
|
|
7
10
|
}));
|
|
@@ -27,6 +30,7 @@ vi.mock('../renderer/mdsite-nuxt.js', () => ({
|
|
|
27
30
|
ensurePreviewArtifacts: vi.fn(),
|
|
28
31
|
ensureRendererDependencies: vi.fn(),
|
|
29
32
|
generateRenderer: vi.fn(),
|
|
33
|
+
getBundledRendererDir: vi.fn(),
|
|
30
34
|
getRendererGeneratedOutputPath: vi.fn(),
|
|
31
35
|
prepareRenderer: vi.fn(),
|
|
32
36
|
previewRendererForeground: vi.fn(),
|
|
@@ -34,11 +38,12 @@ vi.mock('../renderer/mdsite-nuxt.js', () => ({
|
|
|
34
38
|
startRendererForeground: vi.fn(),
|
|
35
39
|
startRendererInBackground: vi.fn()
|
|
36
40
|
}));
|
|
37
|
-
import
|
|
41
|
+
import path from 'node:path';
|
|
42
|
+
import { access, copyFile, cp, mkdir, readFile, rm, writeFile } from 'node:fs/promises';
|
|
38
43
|
import { buildDefaultMdsiteConfig, loadMdsiteConfig, resolveContentOutputPath, serializeMdsiteConfig } from '../config/mdsite-config.js';
|
|
39
44
|
import { openUrlInBrowser, stopProcess, waitForTcpPort } from '../process/child-process.js';
|
|
40
45
|
import { clearRuntimeState, getRuntimeLogPath, isProcessRunning, readRuntimeState, writeRuntimeState } from '../process/runtime-state.js';
|
|
41
|
-
import { ensurePreviewArtifacts, ensureRendererDependencies, generateRenderer, getRendererGeneratedOutputPath, prepareRenderer, previewRendererForeground, previewRendererInBackground, startRendererForeground, startRendererInBackground } from '../renderer/mdsite-nuxt.js';
|
|
46
|
+
import { ensurePreviewArtifacts, ensureRendererDependencies, generateRenderer, getBundledRendererDir, getRendererGeneratedOutputPath, prepareRenderer, previewRendererForeground, previewRendererInBackground, startRendererForeground, startRendererInBackground } from '../renderer/mdsite-nuxt.js';
|
|
42
47
|
import { runGenerateCommand } from './generate.js';
|
|
43
48
|
import { runInitCommand } from './init.js';
|
|
44
49
|
import { runPreviewCommand } from './preview.js';
|
|
@@ -48,6 +53,10 @@ const accessMock = vi.mocked(access);
|
|
|
48
53
|
const cpMock = vi.mocked(cp);
|
|
49
54
|
const rmMock = vi.mocked(rm);
|
|
50
55
|
const writeFileMock = vi.mocked(writeFile);
|
|
56
|
+
const copyFileMock = vi.mocked(copyFile);
|
|
57
|
+
const mkdirMock = vi.mocked(mkdir);
|
|
58
|
+
const readFileMock = vi.mocked(readFile);
|
|
59
|
+
const getBundledRendererDirMock = vi.mocked(getBundledRendererDir);
|
|
51
60
|
const buildDefaultConfigMock = vi.mocked(buildDefaultMdsiteConfig);
|
|
52
61
|
const loadConfigMock = vi.mocked(loadMdsiteConfig);
|
|
53
62
|
const resolveOutputMock = vi.mocked(resolveContentOutputPath);
|
|
@@ -88,14 +97,12 @@ describe('command helpers', () => {
|
|
|
88
97
|
vi.useRealTimers();
|
|
89
98
|
loadConfigMock.mockResolvedValue(loadedConfig);
|
|
90
99
|
prepareRendererMock.mockResolvedValue({ rendererDir: '/renderer', rendererEnv: { TEST: '1' } });
|
|
91
|
-
getRuntimeLogPathMock.mockImplementation((
|
|
92
|
-
|
|
93
|
-
return `${contentDir}/mdsite.log`;
|
|
94
|
-
}
|
|
95
|
-
return `${contentDir}/.mdsite-runtime/${kind}.log`;
|
|
100
|
+
getRuntimeLogPathMock.mockImplementation((configDir, config, kind) => {
|
|
101
|
+
return `${configDir}/${config.server.path}/${kind}.log`;
|
|
96
102
|
});
|
|
97
|
-
resolveOutputMock.mockReturnValue('/content/public');
|
|
103
|
+
resolveOutputMock.mockReturnValue('/content/.output/public');
|
|
98
104
|
getRendererGeneratedOutputPathMock.mockReturnValue('/renderer/.output/public');
|
|
105
|
+
getBundledRendererDirMock.mockReturnValue('/home/gizbar/git/mdsite/mdsite-nuxt');
|
|
99
106
|
openUrlInBrowserMock.mockResolvedValue(true);
|
|
100
107
|
waitForTcpPortMock.mockResolvedValue(true);
|
|
101
108
|
});
|
|
@@ -108,6 +115,13 @@ describe('command helpers', () => {
|
|
|
108
115
|
expect(buildDefaultConfigMock).toHaveBeenCalledWith('/content');
|
|
109
116
|
expect(writeFileMock).toHaveBeenCalledWith('/content/mdsite.yml', 'serialized-config', 'utf8');
|
|
110
117
|
expect(writeFileMock).toHaveBeenCalledWith('/content/.nvmrc', '24\n', 'utf8');
|
|
118
|
+
expect(mkdirMock).toHaveBeenCalledWith(path.join('/content', '.renderer'), { recursive: true });
|
|
119
|
+
expect(copyFileMock).toHaveBeenCalledWith(expect.stringContaining('mdsite-nuxt/package.json'), path.join('/content', '.renderer', 'package.json'));
|
|
120
|
+
expect(copyFileMock).toHaveBeenCalledWith(expect.stringContaining('mdsite-nuxt/package-lock.json'), path.join('/content', '.renderer', 'package-lock.json'));
|
|
121
|
+
expect(writeFileMock).toHaveBeenCalledWith('/content/.gitignore', expect.stringContaining('.renderer/*'), 'utf8');
|
|
122
|
+
expect(writeFileMock).toHaveBeenCalledWith('/content/.gitignore', expect.stringContaining('!.renderer/package.json'), 'utf8');
|
|
123
|
+
expect(writeFileMock).toHaveBeenCalledWith('/content/.gitignore', expect.stringContaining('!.renderer/package-lock.json'), 'utf8');
|
|
124
|
+
expect(writeFileMock).toHaveBeenCalledWith('/content/.gitignore', expect.stringContaining('.output/'), 'utf8');
|
|
111
125
|
accessMock.mockResolvedValueOnce(undefined);
|
|
112
126
|
await expect(runInitCommand('/content')).rejects.toThrow('mdsite.yml already exists at /content/mdsite.yml.');
|
|
113
127
|
});
|
|
@@ -119,6 +133,9 @@ describe('command helpers', () => {
|
|
|
119
133
|
await expect(runInitCommand('/content')).resolves.toBe('Created mdsite.yml in /content (.nvmrc was already present)');
|
|
120
134
|
expect(writeFileMock).toHaveBeenCalledWith('/content/mdsite.yml', 'serialized-config', 'utf8');
|
|
121
135
|
expect(writeFileMock).not.toHaveBeenCalledWith('/content/.nvmrc', expect.anything(), expect.anything());
|
|
136
|
+
expect(mkdirMock).toHaveBeenCalledWith(path.join('/content', '.renderer'), { recursive: true });
|
|
137
|
+
expect(copyFileMock).toHaveBeenCalledWith(expect.stringContaining('mdsite-nuxt/package.json'), path.join('/content', '.renderer', 'package.json'));
|
|
138
|
+
expect(writeFileMock).toHaveBeenCalledWith('/content/.gitignore', expect.any(String), 'utf8');
|
|
122
139
|
});
|
|
123
140
|
it('runStartCommand starts the renderer in the foreground by default without runtime metadata', async () => {
|
|
124
141
|
await expect(runStartCommand('/content')).resolves.toBeUndefined();
|
|
@@ -133,7 +150,6 @@ describe('command helpers', () => {
|
|
|
133
150
|
readRuntimeStateMock.mockResolvedValueOnce({ kind: 'start', pid: 44 });
|
|
134
151
|
isProcessRunningMock.mockReturnValueOnce(true);
|
|
135
152
|
await expect(runStartCommand('/content', { detached: true })).rejects.toThrow('mdsite start is already running with PID 44.');
|
|
136
|
-
expect(loadConfigMock).not.toHaveBeenCalled();
|
|
137
153
|
});
|
|
138
154
|
it('runStartCommand starts detached renderer for stale state and persists fresh runtime metadata', async () => {
|
|
139
155
|
vi.useFakeTimers();
|
|
@@ -141,13 +157,13 @@ describe('command helpers', () => {
|
|
|
141
157
|
readRuntimeStateMock.mockResolvedValueOnce({ kind: 'start', pid: 44 });
|
|
142
158
|
isProcessRunningMock.mockReturnValueOnce(false);
|
|
143
159
|
startRendererInBackgroundMock.mockResolvedValueOnce(777);
|
|
144
|
-
await expect(runStartCommand('/content', { detached: true })).resolves.toBe('mdsite start running in background (PID 777). Log: /content/.
|
|
160
|
+
await expect(runStartCommand('/content', { detached: true })).resolves.toBe('mdsite start running in background (PID 777). Log: /content/.renderer/start.log');
|
|
145
161
|
expect(ensureRendererDependenciesMock).toHaveBeenCalledWith('/renderer');
|
|
146
162
|
expect(waitForTcpPortMock).toHaveBeenCalledWith('localhost', 3000);
|
|
147
163
|
expect(waitForTcpPortMock.mock.invocationCallOrder[0]).toBeGreaterThan(writeRuntimeStateMock.mock.invocationCallOrder[0] ?? 0);
|
|
148
164
|
expect(openUrlInBrowserMock.mock.invocationCallOrder[0]).toBeGreaterThan(waitForTcpPortMock.mock.invocationCallOrder[0] ?? 0);
|
|
149
165
|
expect(openUrlInBrowserMock).toHaveBeenCalledWith('http://localhost:3000');
|
|
150
|
-
expect(writeRuntimeStateMock).toHaveBeenCalledWith('/content', expect.objectContaining({
|
|
166
|
+
expect(writeRuntimeStateMock).toHaveBeenCalledWith('/content', loadedConfig.config, expect.objectContaining({
|
|
151
167
|
kind: 'start',
|
|
152
168
|
pid: 777,
|
|
153
169
|
rendererDir: '/renderer',
|
|
@@ -162,7 +178,7 @@ describe('command helpers', () => {
|
|
|
162
178
|
rendererEnv: { HOST: '127.0.0.1', PORT: '4173', NUXT_HOST: 'start.local', NUXT_PORT: '4321' }
|
|
163
179
|
});
|
|
164
180
|
startRendererInBackgroundMock.mockResolvedValueOnce(778);
|
|
165
|
-
await expect(runStartCommand('/content', { detached: true })).resolves.toBe('mdsite start running in background (PID 778). Log: /content/.
|
|
181
|
+
await expect(runStartCommand('/content', { detached: true })).resolves.toBe('mdsite start running in background (PID 778). Log: /content/.renderer/start.log');
|
|
166
182
|
expect(waitForTcpPortMock).toHaveBeenCalledWith('start.local', 4321);
|
|
167
183
|
expect(openUrlInBrowserMock).toHaveBeenCalledWith('http://start.local:4321');
|
|
168
184
|
});
|
|
@@ -170,7 +186,7 @@ describe('command helpers', () => {
|
|
|
170
186
|
readRuntimeStateMock.mockResolvedValueOnce(null);
|
|
171
187
|
startRendererInBackgroundMock.mockResolvedValueOnce(779);
|
|
172
188
|
waitForTcpPortMock.mockResolvedValueOnce(false);
|
|
173
|
-
await expect(runStartCommand('/content', { detached: true })).resolves.toBe('mdsite start running in background (PID 779). Log: /content/.
|
|
189
|
+
await expect(runStartCommand('/content', { detached: true })).resolves.toBe('mdsite start running in background (PID 779). Log: /content/.renderer/start.log');
|
|
174
190
|
expect(waitForTcpPortMock).toHaveBeenCalledWith('localhost', 3000);
|
|
175
191
|
expect(openUrlInBrowserMock).not.toHaveBeenCalled();
|
|
176
192
|
});
|
|
@@ -178,9 +194,30 @@ describe('command helpers', () => {
|
|
|
178
194
|
readRuntimeStateMock.mockResolvedValueOnce(null);
|
|
179
195
|
startRendererInBackgroundMock.mockResolvedValueOnce(780);
|
|
180
196
|
waitForTcpPortMock.mockRejectedValueOnce(new Error('connect failed'));
|
|
181
|
-
await expect(runStartCommand('/content', { detached: true })).resolves.toBe('mdsite start running in background (PID 780). Log: /content/.
|
|
197
|
+
await expect(runStartCommand('/content', { detached: true })).resolves.toBe('mdsite start running in background (PID 780). Log: /content/.renderer/start.log');
|
|
182
198
|
expect(openUrlInBrowserMock).not.toHaveBeenCalled();
|
|
183
199
|
});
|
|
200
|
+
it('runStartCommand exposes the foreground renderer on the network when host is set', async () => {
|
|
201
|
+
await expect(runStartCommand('/content', { host: '0.0.0.0' })).resolves.toBeUndefined();
|
|
202
|
+
expect(startRendererForegroundMock).toHaveBeenCalledWith('/renderer', expect.objectContaining({
|
|
203
|
+
TEST: '1',
|
|
204
|
+
NUXT_HOST: '0.0.0.0',
|
|
205
|
+
HOST: '0.0.0.0',
|
|
206
|
+
NITRO_HOST: '0.0.0.0'
|
|
207
|
+
}));
|
|
208
|
+
});
|
|
209
|
+
it('runStartCommand binds the detached renderer to a custom host when host is set', async () => {
|
|
210
|
+
readRuntimeStateMock.mockResolvedValueOnce(null);
|
|
211
|
+
startRendererInBackgroundMock.mockResolvedValueOnce(781);
|
|
212
|
+
await expect(runStartCommand('/content', { detached: true, host: '0.0.0.0' })).resolves.toBe('mdsite start running in background (PID 781). Log: /content/.renderer/start.log');
|
|
213
|
+
expect(startRendererInBackgroundMock).toHaveBeenCalledWith('/renderer', expect.objectContaining({
|
|
214
|
+
NUXT_HOST: '0.0.0.0',
|
|
215
|
+
HOST: '0.0.0.0',
|
|
216
|
+
NITRO_HOST: '0.0.0.0'
|
|
217
|
+
}), '/content/.renderer/start.log');
|
|
218
|
+
expect(waitForTcpPortMock).toHaveBeenCalledWith('0.0.0.0', 3000);
|
|
219
|
+
expect(openUrlInBrowserMock).toHaveBeenCalledWith('http://0.0.0.0:3000');
|
|
220
|
+
});
|
|
184
221
|
it('runPreviewCommand previews in the foreground by default without runtime metadata', async () => {
|
|
185
222
|
await expect(runPreviewCommand('/content')).resolves.toBeUndefined();
|
|
186
223
|
expect(readRuntimeStateMock).not.toHaveBeenCalled();
|
|
@@ -205,14 +242,13 @@ describe('command helpers', () => {
|
|
|
205
242
|
readRuntimeStateMock.mockResolvedValueOnce({ kind: 'preview', pid: 55 });
|
|
206
243
|
isProcessRunningMock.mockReturnValueOnce(true);
|
|
207
244
|
await expect(runPreviewCommand('/content', { detached: true })).rejects.toThrow('mdsite preview is already running with PID 55.');
|
|
208
|
-
expect(loadConfigMock).not.toHaveBeenCalled();
|
|
209
245
|
});
|
|
210
246
|
it('runPreviewCommand enforces preview artifacts and persists preview runtime state in detached mode', async () => {
|
|
211
247
|
vi.useFakeTimers();
|
|
212
248
|
vi.setSystemTime(new Date('2026-04-10T13:00:00.000Z'));
|
|
213
249
|
readRuntimeStateMock.mockResolvedValueOnce(null);
|
|
214
250
|
previewRendererInBackgroundMock.mockResolvedValueOnce(888);
|
|
215
|
-
await expect(runPreviewCommand('/content', { detached: true })).resolves.toBe('mdsite preview running in background (PID 888). URL: http://localhost:3000 Log: /content/
|
|
251
|
+
await expect(runPreviewCommand('/content', { detached: true })).resolves.toBe('mdsite preview running in background (PID 888). URL: http://localhost:3000 Log: /content/.renderer/preview.log');
|
|
216
252
|
expect(ensurePreviewArtifactsMock).toHaveBeenCalledWith('/renderer');
|
|
217
253
|
expect(ensurePreviewArtifactsMock.mock.invocationCallOrder[0]).toBeGreaterThan(ensureRendererDependenciesMock.mock.invocationCallOrder[0] ?? 0);
|
|
218
254
|
expect(previewRendererInBackgroundMock).toHaveBeenCalledWith('/renderer', expect.objectContaining({
|
|
@@ -223,12 +259,12 @@ describe('command helpers', () => {
|
|
|
223
259
|
PORT: '3000',
|
|
224
260
|
NITRO_HOST: 'localhost',
|
|
225
261
|
NITRO_PORT: '3000'
|
|
226
|
-
}), '/content/
|
|
262
|
+
}), '/content/.renderer/preview.log');
|
|
227
263
|
expect(waitForTcpPortMock).toHaveBeenCalledWith('localhost', 3000);
|
|
228
264
|
expect(waitForTcpPortMock.mock.invocationCallOrder[0]).toBeGreaterThan(writeRuntimeStateMock.mock.invocationCallOrder[0] ?? 0);
|
|
229
265
|
expect(openUrlInBrowserMock.mock.invocationCallOrder[0]).toBeGreaterThan(waitForTcpPortMock.mock.invocationCallOrder[0] ?? 0);
|
|
230
266
|
expect(openUrlInBrowserMock).toHaveBeenCalledWith('http://localhost:3000');
|
|
231
|
-
expect(writeRuntimeStateMock).toHaveBeenCalledWith('/content', expect.objectContaining({
|
|
267
|
+
expect(writeRuntimeStateMock).toHaveBeenCalledWith('/content', loadedConfig.config, expect.objectContaining({
|
|
232
268
|
kind: 'preview',
|
|
233
269
|
pid: 888,
|
|
234
270
|
command: ['npm', 'run', 'preview'],
|
|
@@ -242,7 +278,7 @@ describe('command helpers', () => {
|
|
|
242
278
|
rendererEnv: { HOST: '127.0.0.1', PORT: '4173', NUXT_HOST: 'preview.local', NUXT_PORT: '4321' }
|
|
243
279
|
});
|
|
244
280
|
previewRendererInBackgroundMock.mockResolvedValueOnce(999);
|
|
245
|
-
await expect(runPreviewCommand('/content', { detached: true })).resolves.toBe('mdsite preview running in background (PID 999). URL: http://preview.local:4321 Log: /content/
|
|
281
|
+
await expect(runPreviewCommand('/content', { detached: true })).resolves.toBe('mdsite preview running in background (PID 999). URL: http://preview.local:4321 Log: /content/.renderer/preview.log');
|
|
246
282
|
expect(previewRendererInBackgroundMock).toHaveBeenCalledWith('/renderer', expect.objectContaining({
|
|
247
283
|
HOST: 'preview.local',
|
|
248
284
|
PORT: '4321',
|
|
@@ -250,7 +286,7 @@ describe('command helpers', () => {
|
|
|
250
286
|
NUXT_PORT: '4321',
|
|
251
287
|
NITRO_HOST: 'preview.local',
|
|
252
288
|
NITRO_PORT: '4321'
|
|
253
|
-
}), '/content/
|
|
289
|
+
}), '/content/.renderer/preview.log');
|
|
254
290
|
expect(waitForTcpPortMock).toHaveBeenCalledWith('preview.local', 4321);
|
|
255
291
|
expect(openUrlInBrowserMock).toHaveBeenCalledWith('http://preview.local:4321');
|
|
256
292
|
});
|
|
@@ -261,7 +297,7 @@ describe('command helpers', () => {
|
|
|
261
297
|
rendererEnv: { HOST: '127.0.0.1', PORT: '4173' }
|
|
262
298
|
});
|
|
263
299
|
previewRendererInBackgroundMock.mockResolvedValueOnce(1000);
|
|
264
|
-
await expect(runPreviewCommand('/content', { detached: true })).resolves.toBe('mdsite preview running in background (PID 1000). URL: http://127.0.0.1:4173 Log: /content/
|
|
300
|
+
await expect(runPreviewCommand('/content', { detached: true })).resolves.toBe('mdsite preview running in background (PID 1000). URL: http://127.0.0.1:4173 Log: /content/.renderer/preview.log');
|
|
265
301
|
expect(previewRendererInBackgroundMock).toHaveBeenCalledWith('/renderer', expect.objectContaining({
|
|
266
302
|
HOST: '127.0.0.1',
|
|
267
303
|
PORT: '4173',
|
|
@@ -269,15 +305,40 @@ describe('command helpers', () => {
|
|
|
269
305
|
NUXT_PORT: '4173',
|
|
270
306
|
NITRO_HOST: '127.0.0.1',
|
|
271
307
|
NITRO_PORT: '4173'
|
|
272
|
-
}), '/content/
|
|
308
|
+
}), '/content/.renderer/preview.log');
|
|
273
309
|
expect(waitForTcpPortMock).toHaveBeenCalledWith('127.0.0.1', 4173);
|
|
274
310
|
expect(openUrlInBrowserMock).toHaveBeenCalledWith('http://127.0.0.1:4173');
|
|
275
311
|
});
|
|
312
|
+
it('runPreviewCommand exposes the foreground renderer on the network when host is set', async () => {
|
|
313
|
+
await expect(runPreviewCommand('/content', { host: '0.0.0.0' })).resolves.toBeUndefined();
|
|
314
|
+
expect(previewRendererForegroundMock).toHaveBeenCalledWith('/renderer', expect.objectContaining({
|
|
315
|
+
NUXT_HOST: '0.0.0.0',
|
|
316
|
+
HOST: '0.0.0.0',
|
|
317
|
+
NITRO_HOST: '0.0.0.0'
|
|
318
|
+
}));
|
|
319
|
+
});
|
|
320
|
+
it('runPreviewCommand overrides inherited preview host when host is set in detached mode', async () => {
|
|
321
|
+
readRuntimeStateMock.mockResolvedValueOnce(null);
|
|
322
|
+
prepareRendererMock.mockResolvedValueOnce({
|
|
323
|
+
rendererDir: '/renderer',
|
|
324
|
+
rendererEnv: { HOST: '127.0.0.1', PORT: '4173', NUXT_HOST: 'preview.local', NUXT_PORT: '4321' }
|
|
325
|
+
});
|
|
326
|
+
previewRendererInBackgroundMock.mockResolvedValueOnce(1003);
|
|
327
|
+
await expect(runPreviewCommand('/content', { detached: true, host: '0.0.0.0' })).resolves.toBe('mdsite preview running in background (PID 1003). URL: http://0.0.0.0:4321 Log: /content/.renderer/preview.log');
|
|
328
|
+
expect(previewRendererInBackgroundMock).toHaveBeenCalledWith('/renderer', expect.objectContaining({
|
|
329
|
+
NUXT_HOST: '0.0.0.0',
|
|
330
|
+
HOST: '0.0.0.0',
|
|
331
|
+
NITRO_HOST: '0.0.0.0',
|
|
332
|
+
NUXT_PORT: '4321'
|
|
333
|
+
}), '/content/.renderer/preview.log');
|
|
334
|
+
expect(waitForTcpPortMock).toHaveBeenCalledWith('0.0.0.0', 4321);
|
|
335
|
+
expect(openUrlInBrowserMock).toHaveBeenCalledWith('http://0.0.0.0:4321');
|
|
336
|
+
});
|
|
276
337
|
it('runPreviewCommand does not open the browser when detached preview readiness times out', async () => {
|
|
277
338
|
readRuntimeStateMock.mockResolvedValueOnce(null);
|
|
278
339
|
previewRendererInBackgroundMock.mockResolvedValueOnce(1001);
|
|
279
340
|
waitForTcpPortMock.mockResolvedValueOnce(false);
|
|
280
|
-
await expect(runPreviewCommand('/content', { detached: true })).resolves.toBe('mdsite preview running in background (PID 1001). URL: http://localhost:3000 Log: /content/
|
|
341
|
+
await expect(runPreviewCommand('/content', { detached: true })).resolves.toBe('mdsite preview running in background (PID 1001). URL: http://localhost:3000 Log: /content/.renderer/preview.log');
|
|
281
342
|
expect(waitForTcpPortMock).toHaveBeenCalledWith('localhost', 3000);
|
|
282
343
|
expect(openUrlInBrowserMock).not.toHaveBeenCalled();
|
|
283
344
|
});
|
|
@@ -285,18 +346,18 @@ describe('command helpers', () => {
|
|
|
285
346
|
readRuntimeStateMock.mockResolvedValueOnce(null);
|
|
286
347
|
previewRendererInBackgroundMock.mockResolvedValueOnce(1002);
|
|
287
348
|
waitForTcpPortMock.mockRejectedValueOnce(new Error('connect failed'));
|
|
288
|
-
await expect(runPreviewCommand('/content', { detached: true })).resolves.toBe('mdsite preview running in background (PID 1002). URL: http://localhost:3000 Log: /content/
|
|
349
|
+
await expect(runPreviewCommand('/content', { detached: true })).resolves.toBe('mdsite preview running in background (PID 1002). URL: http://localhost:3000 Log: /content/.renderer/preview.log');
|
|
289
350
|
expect(openUrlInBrowserMock).not.toHaveBeenCalled();
|
|
290
351
|
});
|
|
291
352
|
it('runGenerateCommand syncs renderer output to the configured destination', async () => {
|
|
292
|
-
await expect(runGenerateCommand('/content')).resolves.toBe('Generated site synced to /content/public');
|
|
353
|
+
await expect(runGenerateCommand('/content')).resolves.toBe('Generated site synced to /content/.output/public');
|
|
293
354
|
expect(generateRendererMock).toHaveBeenCalledWith('/renderer', { TEST: '1' });
|
|
294
|
-
expect(rmMock).toHaveBeenCalledWith('/content/public', { recursive: true, force: true });
|
|
295
|
-
expect(cpMock).toHaveBeenCalledWith('/renderer/.output/public', '/content/public', { recursive: true, force: true });
|
|
355
|
+
expect(rmMock).toHaveBeenCalledWith('/content/.output/public', { recursive: true, force: true });
|
|
356
|
+
expect(cpMock).toHaveBeenCalledWith('/renderer/.output/public', '/content/.output/public', { recursive: true, force: true });
|
|
296
357
|
});
|
|
297
358
|
it('runGenerateCommand surfaces sync failures with the destination path', async () => {
|
|
298
359
|
cpMock.mockRejectedValueOnce(new Error('permission denied'));
|
|
299
|
-
await expect(runGenerateCommand('/content')).rejects.toThrow('Failed to sync generated output to /content/public: permission denied');
|
|
360
|
+
await expect(runGenerateCommand('/content')).rejects.toThrow('Failed to sync generated output to /content/.output/public: permission denied');
|
|
300
361
|
});
|
|
301
362
|
it('runStopCommand handles nothing-running, stopped, and stale-state cases', async () => {
|
|
302
363
|
readRuntimeStateMock.mockResolvedValueOnce(null).mockResolvedValueOnce(null);
|
|
@@ -306,8 +367,8 @@ describe('command helpers', () => {
|
|
|
306
367
|
.mockResolvedValueOnce({ kind: 'preview', pid: 22 });
|
|
307
368
|
stopProcessMock.mockResolvedValueOnce(true).mockResolvedValueOnce(false);
|
|
308
369
|
await expect(runStopCommand('/content')).resolves.toBe('Stopped start process 11. Removed stale preview state for PID 22.');
|
|
309
|
-
expect(clearRuntimeStateMock).toHaveBeenNthCalledWith(1, '/content', 'start');
|
|
310
|
-
expect(clearRuntimeStateMock).toHaveBeenNthCalledWith(2, '/content', 'preview');
|
|
370
|
+
expect(clearRuntimeStateMock).toHaveBeenNthCalledWith(1, '/content', loadedConfig.config, 'start');
|
|
371
|
+
expect(clearRuntimeStateMock).toHaveBeenNthCalledWith(2, '/content', loadedConfig.config, 'preview');
|
|
311
372
|
});
|
|
312
373
|
});
|
|
313
374
|
//# sourceMappingURL=commands.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.test.js","sourceRoot":"","sources":["../../src/commands/commands.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"commands.test.js","sourceRoot":"","sources":["../../src/commands/commands.test.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,28 +1,78 @@
|
|
|
1
|
-
import { access, writeFile } from 'node:fs/promises';
|
|
1
|
+
import { access, copyFile, mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { buildDefaultMdsiteConfig, serializeMdsiteConfig } from '../config/mdsite-config.js';
|
|
4
|
+
import { getBundledRendererDir } from '../renderer/mdsite-nuxt.js';
|
|
4
5
|
const NVMRC_VERSION = '24';
|
|
5
6
|
function buildNvmrcContent() {
|
|
6
7
|
return `${NVMRC_VERSION}\n`;
|
|
7
8
|
}
|
|
8
9
|
export async function runInitCommand(contentDir) {
|
|
9
10
|
const configPath = path.join(contentDir, 'mdsite.yml');
|
|
10
|
-
const nvmrcPath = path.join(contentDir, '.nvmrc');
|
|
11
11
|
try {
|
|
12
12
|
await access(configPath);
|
|
13
13
|
}
|
|
14
14
|
catch {
|
|
15
15
|
const config = await buildDefaultMdsiteConfig(contentDir);
|
|
16
16
|
await writeFile(configPath, serializeMdsiteConfig(config), 'utf8');
|
|
17
|
+
await ensureCommittedRendererLockfiles(contentDir, config);
|
|
18
|
+
await ensureContentGitignore(contentDir, config);
|
|
17
19
|
try {
|
|
18
|
-
await access(
|
|
20
|
+
await access(path.join(contentDir, '.nvmrc'));
|
|
19
21
|
return `Created mdsite.yml in ${contentDir} (.nvmrc was already present)`;
|
|
20
22
|
}
|
|
21
23
|
catch {
|
|
22
|
-
await writeFile(
|
|
24
|
+
await writeFile(path.join(contentDir, '.nvmrc'), buildNvmrcContent(), 'utf8');
|
|
23
25
|
return `Created mdsite.yml and .nvmrc in ${contentDir}`;
|
|
24
26
|
}
|
|
25
27
|
}
|
|
26
28
|
throw new Error(`mdsite.yml already exists at ${configPath}.`);
|
|
27
29
|
}
|
|
30
|
+
async function ensureCommittedRendererLockfiles(contentDir, config) {
|
|
31
|
+
const serverDir = path.resolve(contentDir, config.server.path);
|
|
32
|
+
await mkdir(serverDir, { recursive: true });
|
|
33
|
+
const bundledRendererDir = getBundledRendererDir();
|
|
34
|
+
await copyFile(path.join(bundledRendererDir, 'package.json'), path.join(serverDir, 'package.json'));
|
|
35
|
+
try {
|
|
36
|
+
await copyFile(path.join(bundledRendererDir, 'package-lock.json'), path.join(serverDir, 'package-lock.json'));
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
// Bundled renderer has no lockfile; leave the target without one (npm install will generate it).
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async function ensureContentGitignore(contentDir, config) {
|
|
43
|
+
const serverPath = config.server.path.replace(/\\/g, '/');
|
|
44
|
+
const serverOutput = config.server.output.replace(/\\/g, '/');
|
|
45
|
+
const requiredPatterns = [
|
|
46
|
+
`${serverPath}/*`,
|
|
47
|
+
`!${serverPath}/package.json`,
|
|
48
|
+
`!${serverPath}/package-lock.json`,
|
|
49
|
+
`${serverOutput}/`
|
|
50
|
+
];
|
|
51
|
+
const managedBlock = [
|
|
52
|
+
'# mdsite: generated state (renderer working dir; lockfile pair committed for reproducible CI)',
|
|
53
|
+
...requiredPatterns,
|
|
54
|
+
'# end mdsite'
|
|
55
|
+
];
|
|
56
|
+
const managedMarkers = new Set(managedBlock);
|
|
57
|
+
const gitignorePath = path.join(contentDir, '.gitignore');
|
|
58
|
+
let existingLines = [];
|
|
59
|
+
try {
|
|
60
|
+
existingLines = (await readFile(gitignorePath, 'utf8')).split(/\r?\n/);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// No existing .gitignore; start fresh.
|
|
64
|
+
}
|
|
65
|
+
// Preserve user-authored lines verbatim; drop any prior managed-block lines so we can re-emit a clean block.
|
|
66
|
+
const userLines = existingLines.filter((line) => !managedMarkers.has(line));
|
|
67
|
+
// Drop trailing blank lines to keep the merge idempotent (no separator accumulation on re-runs).
|
|
68
|
+
while (userLines.length > 0 && userLines[userLines.length - 1] === '') {
|
|
69
|
+
userLines.pop();
|
|
70
|
+
}
|
|
71
|
+
const merged = [...userLines];
|
|
72
|
+
if (merged.length > 0) {
|
|
73
|
+
merged.push('');
|
|
74
|
+
}
|
|
75
|
+
merged.push(...managedBlock);
|
|
76
|
+
await writeFile(gitignorePath, `${merged.join('\n')}\n`, 'utf8');
|
|
77
|
+
}
|
|
28
78
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|