@thegetty/quire-cli 1.0.0-rc.43 → 1.0.0-rc.45

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/man/quire.1 ADDED
@@ -0,0 +1,341 @@
1
+ .TH "QUIRE" "1" "January 2026" "1.0.0-rc.38"
2
+ .SH "NAME"
3
+ \fBquire\fR \- Quire command\-line interface
4
+ .SH SYNOPSIS
5
+ .P
6
+ \fBquire\fP [options] <command> [command\-options]
7
+ .SH DESCRIPTION
8
+ .P
9
+ Quire is a command\-line tool for creating and publishing digital books\.
10
+ .br
11
+ It generates static websites, PDFs, and EPUBs from a Quire project
12
+ .br
13
+ containing Markdown content and YAML data files\.
14
+ .P
15
+ A typical workflow starts with \fBquire new\fP to scaffold a project, \fBquire preview\fP to develop locally, and \fBquire build\fP, \fBquire pdf\fP, or \fBquire epub\fP to produce publication outputs\.
16
+ .SH COMMANDS
17
+ .SS Project Creation
18
+
19
+ .RS 1
20
+ .IP \(bu 2
21
+ \fBnew\fP [projectPath] [starter]:
22
+ .br
23
+ Create a new Quire project from a template\. If \fIprojectPath\fR is
24
+ .br
25
+ omitted, the current directory is used\. An optional \fIstarter\fR argument
26
+ .br
27
+ specifies a repository URL or local path for a starter project\.
28
+ .P
29
+ \fB\-\-quire\-version\fP \fIversion\fR pins the quire\-11ty version to install\.
30
+ .br
31
+ \fB\-\-quire\-path\fP \fIpath\fR uses a local quire\-11ty package instead of a
32
+ .br
33
+ published version\.
34
+
35
+ .RE
36
+ .SS Development
37
+
38
+ .RS 1
39
+ .IP \(bu 2
40
+ \fBpreview\fP:
41
+ .br
42
+ Start a local development server with live reload\. Changes to source
43
+ .br
44
+ files are rebuilt automatically\.
45
+ .P
46
+ \fB\-p\fP, \fB\-\-port\fP \fIport\fR sets the server port (default: 8080)\.
47
+ .br
48
+ \fB\-\-open\fP opens the browser when the server starts\.
49
+ .IP \(bu 2
50
+ \fBbuild\fP:
51
+ .br
52
+ Run the Eleventy build to generate static HTML output\. Build outputs
53
+ .br
54
+ are written to the project's output directory\.
55
+ .P
56
+ \fB\-d\fP, \fB\-\-dry\-run\fP runs the build without writing files\.
57
+ .IP \(bu 2
58
+ \fBclean\fP:
59
+ .br
60
+ Remove build outputs (HTML, PDF, and EPUB files)\.
61
+ .P
62
+ \fB\-d\fP, \fB\-\-dry\-run\fP shows paths that would be deleted without removing them\.
63
+ .br
64
+ \fB\-\-status\fP also clears stored build status for the project\.
65
+
66
+ .RE
67
+ .SS Output Generation
68
+
69
+ .RS 1
70
+ .IP \(bu 2
71
+ \fBpdf\fP:
72
+ .br
73
+ Generate a print\-ready PDF from build output\.
74
+ .P
75
+ \fB\-\-engine\fP \fIname\fR selects the PDF engine (\fBpagedjs\fP or \fBprince\fP; default:
76
+ .br
77
+ from config or \fBpagedjs\fP)\.
78
+ .br
79
+ \fB\-\-build\fP runs the site build first if output is missing\.
80
+ .br
81
+ \fB\-\-open\fP opens the PDF in the default application after generation\.
82
+ .br
83
+ \fB\-o\fP, \fB\-\-output\fP \fIpath\fR sets a custom output file path\.
84
+ .IP \(bu 2
85
+ \fBepub\fP:
86
+ .br
87
+ Generate an EPUB e\-book from build output\.
88
+ .P
89
+ \fB\-\-engine\fP \fIname\fR selects the EPUB engine (\fBepubjs\fP or \fBpandoc\fP; default:
90
+ .br
91
+ from config or \fBepubjs\fP)\.
92
+ .br
93
+ \fB\-\-build\fP runs the site build first if output is missing\.
94
+ .br
95
+ \fB\-\-open\fP opens the EPUB in the default application after generation\.
96
+ .br
97
+ \fB\-o\fP, \fB\-\-output\fP \fIpath\fR sets a custom output file path\.
98
+
99
+ .RE
100
+ .SS Information and Diagnostics
101
+
102
+ .RS 1
103
+ .IP \(bu 2
104
+ \fBdoctor\fP [checks\.\.\.]:
105
+ .br
106
+ Run diagnostic checks on the Quire environment and project\. Checks are
107
+ .br
108
+ organized into four sections: Environment (os, cli, node, runtime, npm,
109
+ .br
110
+ git), Tools (prince, pandoc), Project (project, deps, 11ty, data), and
111
+ .br
112
+ Outputs (build, pdf, epub)\.
113
+ .P
114
+ Without arguments, all checks are run\. Pass section names or individual
115
+ .br
116
+ check IDs to run a subset (e\.g\., \fBquire doctor environment\fP or
117
+ .br
118
+ \fBquire doctor node git\fP)\.
119
+ .P
120
+ \fB\-e\fP, \fB\-\-errors\fP shows only failed checks\.
121
+ .br
122
+ \fB\-w\fP, \fB\-\-warnings\fP shows only warnings\.
123
+ .br
124
+ \fB\-\-json\fP [\fIfile\fR] outputs results as JSON to stdout or a file\.
125
+ .br
126
+ \fB\-\-reset\fP clears stored build status for the current project\.
127
+ .P
128
+ Aliases: \fBcheckup\fP, \fBcheck\fP, \fBdiagnostic\fP, \fBhealth\fP\|\.
129
+ .IP \(bu 2
130
+ \fBinfo\fP:
131
+ .br
132
+ Display version information for the current project, including
133
+ .br
134
+ quire\-cli, quire\-11ty, and starter template versions\.
135
+ .P
136
+ \fB\-\-debug\fP includes installation paths\.
137
+ .br
138
+ \fB\-\-json\fP outputs version information as JSON\.
139
+ .IP \(bu 2
140
+ \fBvalidate\fP:
141
+ .br
142
+ Check YAML files in the project's \fBcontent/_data/\fP directory for
143
+ .br
144
+ syntax errors\.
145
+ .P
146
+ \fB\-\-json\fP outputs validation results as JSON\.
147
+ .IP \(bu 2
148
+ \fBsettings\fP [operation] [key] [value]:
149
+ .br
150
+ View and modify CLI settings\. Without arguments, displays all current
151
+ .br
152
+ settings\.
153
+ .P
154
+ Operations: \fBget\fP, \fBset\fP, \fBdelete\fP, \fBreset\fP, \fBpath\fP\|\.
155
+ .P
156
+ \fB\-\-json\fP outputs raw JSON\.
157
+ .br
158
+ \fB\-\-debug\fP enables debug output for troubleshooting\.
159
+ .P
160
+ Aliases: \fBprefs\fP, \fBpreferences\fP, \fBconf\fP, \fBconfig\fP, \fBconfigure\fP\|\.
161
+ .IP \(bu 2
162
+ \fBhelp\fP [topic]:
163
+ .br
164
+ Display help for a topic or list available topics\. Topics include
165
+ .br
166
+ individual commands, workflows, and configuration guides\.
167
+ .P
168
+ \fB\-\-list\fP lists all available topics\.
169
+ .P
170
+ Alias: \fBh\fP\|\.
171
+
172
+ .RE
173
+ .SH GLOBAL OPTIONS
174
+
175
+ .RS 1
176
+ .IP \(bu 2
177
+ \fB\-q\fP, \fB\-\-quiet\fP:
178
+ .br
179
+ Suppress progress output\. Hides spinner messages, quire\-11ty log
180
+ .br
181
+ output, Vite log output, and the Eleventy directory listing\. Exit
182
+ .br
183
+ codes still indicate success or failure\. Useful for CI pipelines
184
+ .br
185
+ and scripts\.
186
+ .IP \(bu 2
187
+ \fB\-v\fP, \fB\-\-verbose\fP:
188
+ .br
189
+ Show detailed progress\. Enables quire\-11ty informational log output,
190
+ .br
191
+ the Eleventy directory listing (file\-by\-file build table), and Vite
192
+ .br
193
+ info\-level output in addition to spinner messages\.
194
+ .IP \(bu 2
195
+ \fB\-\-debug\fP:
196
+ .br
197
+ Enable debug output for troubleshooting\. Activates the \fBquire:*\fP debug
198
+ .br
199
+ namespace, Eleventy's \fBDEBUG=Eleventy*\fP tracing, and quire\-11ty debug\-
200
+ .br
201
+ level log output\. Can be combined with \fB\-\-verbose\fP\.
202
+ .IP \(bu 2
203
+ \fB\-\-reduced\-motion\fP:
204
+ .br
205
+ Disable spinner animation and line overwriting\. Each build phase prints
206
+ .br
207
+ on a new line with a static status symbol\. Compatible with screen
208
+ .br
209
+ readers and terminals that do not support ANSI escape sequences\. Can
210
+ .br
211
+ also be enabled via the \fBREDUCED_MOTION\fP environment variable or the
212
+ .br
213
+ \fBreducedMotion\fP config setting\.
214
+ .IP \(bu 2
215
+ \fB\-\-color\fP:
216
+ .br
217
+ Force colored output, overriding the \fBNO_COLOR\fP environment variable\.
218
+ .IP \(bu 2
219
+ \fB\-\-no\-color\fP:
220
+ .br
221
+ Disable colored output\.
222
+ .IP \(bu 2
223
+ \fB\-\-no\-pager\fP:
224
+ .br
225
+ Disable paging for long output (e\.g\., help topics)\.
226
+ .IP \(bu 2
227
+ \fB\-V\fP, \fB\-\-version\fP:
228
+ .br
229
+ Output the quire version number\.
230
+ .IP \(bu 2
231
+ \fB\-h\fP, \fB\-\-help\fP:
232
+ .br
233
+ Display help for quire or a subcommand\.
234
+
235
+ .RE
236
+ .SH ENVIRONMENT
237
+
238
+ .RS 1
239
+ .IP \(bu 2
240
+ \fBQUIRE_LOG_LEVEL\fP=\fIlevel\fR:
241
+ .br
242
+ Override the log verbosity for quire\-11ty output\. Valid values are
243
+ .br
244
+ \fBtrace\fP, \fBdebug\fP, \fBinfo\fP, \fBwarn\fP, \fBerror\fP, and \fBsilent\fP\. This is
245
+ .br
246
+ normally set automatically by the CLI based on \fB\-\-quiet\fP, \fB\-\-verbose\fP,
247
+ .br
248
+ and \fB\-\-debug\fP flags\. Setting it manually is useful when running
249
+ .br
250
+ quire\-11ty outside the CLI\.
251
+ .IP \(bu 2
252
+ \fBREDUCED_MOTION\fP=\fI1\fR:
253
+ .br
254
+ Disable spinner animation, equivalent to \fB\-\-reduced\-motion\fP\.
255
+ .IP \(bu 2
256
+ \fBNO_COLOR\fP=\fI1\fR:
257
+ .br
258
+ Disable colored output (respected by chalk)\. Overridden by \fB\-\-color\fP\.
259
+ .IP \(bu 2
260
+ \fBNO_PAGER\fP=\fI1\fR:
261
+ .br
262
+ Disable paging for long output, equivalent to \fB\-\-no\-pager\fP\.
263
+ .IP \(bu 2
264
+ \fBPAGER\fP=\fIprogram\fR:
265
+ .br
266
+ Set the pager program for long output (default: \fBless\fP)\.
267
+ .IP \(bu 2
268
+ \fBDEBUG\fP=\fIpattern\fR:
269
+ .br
270
+ Enable debug output for matching namespaces\. Examples:
271
+ .P
272
+ \fBDEBUG=quire:*\fP enables all Quire CLI debug output\.
273
+ .br
274
+ \fBDEBUG=quire:lib:pdf\fP enables only PDF module debug output\.
275
+ .br
276
+ \fBDEBUG=quire:lib:*\fP enables all library module debug output\.
277
+ .br
278
+ \fBDEBUG=Eleventy*\fP enables Eleventy internal debug output\.
279
+
280
+ .RE
281
+ .SH COMMON WORKFLOWS
282
+ .P
283
+ Start a new project and preview it locally:
284
+ .RS 2
285
+ .nf
286
+ quire new my\-book && cd my\-book && quire preview
287
+ .fi
288
+ .RE
289
+ .P
290
+ Build the site for web deployment:
291
+ .RS 2
292
+ .nf
293
+ quire clean && quire build
294
+ .fi
295
+ .RE
296
+ .P
297
+ Generate all publication formats:
298
+ .RS 2
299
+ .nf
300
+ quire clean && quire build && quire pdf && quire epub
301
+ .fi
302
+ .RE
303
+ .P
304
+ Build and open a PDF in one step:
305
+ .RS 2
306
+ .nf
307
+ quire pdf \-\-build \-\-open
308
+ .fi
309
+ .RE
310
+ .SH CONFIGURATION
311
+ .P
312
+ Persistent settings are managed with the \fBquire settings\fP command\. Common
313
+ .br
314
+ settings include:
315
+ .RS 2
316
+ .nf
317
+ quire settings set verbose true
318
+ quire settings set pdfEngine prince
319
+ quire settings set updateChannel rc
320
+ .fi
321
+ .RE
322
+ .P
323
+ Run \fBquire settings\fP to see all available settings and their current values\.
324
+ .br
325
+ Run \fBquire settings path\fP to show the configuration file location\.
326
+ .SH EXIT STATUS
327
+
328
+ .RS 1
329
+ .IP \(bu 2
330
+ \fB0\fP: Success
331
+ .IP \(bu 2
332
+ \fB1\fP: Command failed (build error, validation error, missing output, etc\.)
333
+
334
+ .RE
335
+ .SH SEE ALSO
336
+ .P
337
+ Full documentation: https://quire.getty.edu/docs-v1
338
+ .P
339
+ Report bugs: https://github.com/thegetty/quire/issues
340
+ .P
341
+ Source code: https://github.com/thegetty/quire
package/man/quire.1.md ADDED
@@ -0,0 +1,232 @@
1
+ # quire(1) -- Quire command-line interface
2
+
3
+ ## SYNOPSIS
4
+
5
+ `quire` \[options\] <command> \[command-options\]
6
+
7
+ ## DESCRIPTION
8
+
9
+ Quire is a command-line tool for creating and publishing digital books.
10
+ It generates static websites, PDFs, and EPUBs from a Quire project
11
+ containing Markdown content and YAML data files.
12
+
13
+ A typical workflow starts with `quire new` to scaffold a project, `quire
14
+ preview` to develop locally, and `quire build`, `quire pdf`, or `quire
15
+ epub` to produce publication outputs.
16
+
17
+ ## COMMANDS
18
+
19
+ ### Project Creation
20
+
21
+ * `new` \[projectPath\] \[starter\]:
22
+ Create a new Quire project from a template. If _projectPath_ is
23
+ omitted, the current directory is used. An optional _starter_ argument
24
+ specifies a repository URL or local path for a starter project.
25
+
26
+ `--quire-version` _version_ pins the quire-11ty version to install.
27
+ `--quire-path` _path_ uses a local quire-11ty package instead of a
28
+ published version.
29
+
30
+ ### Development
31
+
32
+ * `preview`:
33
+ Start a local development server with live reload. Changes to source
34
+ files are rebuilt automatically.
35
+
36
+ `-p`, `--port` _port_ sets the server port (default: 8080).
37
+ `--open` opens the browser when the server starts.
38
+
39
+ * `build`:
40
+ Run the Eleventy build to generate static HTML output. Build outputs
41
+ are written to the project's output directory.
42
+
43
+ `-d`, `--dry-run` runs the build without writing files.
44
+
45
+ * `clean`:
46
+ Remove build outputs (HTML, PDF, and EPUB files).
47
+
48
+ `-d`, `--dry-run` shows paths that would be deleted without removing them.
49
+ `--status` also clears stored build status for the project.
50
+
51
+ ### Output Generation
52
+
53
+ * `pdf`:
54
+ Generate a print-ready PDF from build output.
55
+
56
+ `--engine` _name_ selects the PDF engine (`pagedjs` or `prince`; default:
57
+ from config or `pagedjs`).
58
+ `--build` runs the site build first if output is missing.
59
+ `--open` opens the PDF in the default application after generation.
60
+ `-o`, `--output` _path_ sets a custom output file path.
61
+
62
+ * `epub`:
63
+ Generate an EPUB e-book from build output.
64
+
65
+ `--engine` _name_ selects the EPUB engine (`epubjs` or `pandoc`; default:
66
+ from config or `epubjs`).
67
+ `--build` runs the site build first if output is missing.
68
+ `--open` opens the EPUB in the default application after generation.
69
+ `-o`, `--output` _path_ sets a custom output file path.
70
+
71
+ ### Information and Diagnostics
72
+
73
+ * `doctor` \[checks...\]:
74
+ Run diagnostic checks on the Quire environment and project. Checks are
75
+ organized into four sections: Environment (os, cli, node, runtime, npm,
76
+ git), Tools (prince, pandoc), Project (project, deps, 11ty, data), and
77
+ Outputs (build, pdf, epub).
78
+
79
+ Without arguments, all checks are run. Pass section names or individual
80
+ check IDs to run a subset (e.g., `quire doctor environment` or
81
+ `quire doctor node git`).
82
+
83
+ `-e`, `--errors` shows only failed checks.
84
+ `-w`, `--warnings` shows only warnings.
85
+ `--json` \[_file_\] outputs results as JSON to stdout or a file.
86
+ `--reset` clears stored build status for the current project.
87
+
88
+ Aliases: `checkup`, `check`, `diagnostic`, `health`.
89
+
90
+ * `info`:
91
+ Display version information for the current project, including
92
+ quire-cli, quire-11ty, and starter template versions.
93
+
94
+ `--debug` includes installation paths.
95
+ `--json` outputs version information as JSON.
96
+
97
+ * `validate`:
98
+ Check YAML files in the project's `content/_data/` directory for
99
+ syntax errors.
100
+
101
+ `--json` outputs validation results as JSON.
102
+
103
+ * `settings` \[operation\] \[key\] \[value\]:
104
+ View and modify CLI settings. Without arguments, displays all current
105
+ settings.
106
+
107
+ Operations: `get`, `set`, `delete`, `reset`, `path`.
108
+
109
+ `--json` outputs raw JSON.
110
+ `--debug` enables debug output for troubleshooting.
111
+
112
+ Aliases: `prefs`, `preferences`, `conf`, `config`, `configure`.
113
+
114
+ * `help` \[topic\]:
115
+ Display help for a topic or list available topics. Topics include
116
+ individual commands, workflows, and configuration guides.
117
+
118
+ `--list` lists all available topics.
119
+
120
+ Alias: `h`.
121
+
122
+ ## GLOBAL OPTIONS
123
+
124
+ * `-q`, `--quiet`:
125
+ Suppress progress output. Hides spinner messages, quire-11ty log
126
+ output, Vite log output, and the Eleventy directory listing. Exit
127
+ codes still indicate success or failure. Useful for CI pipelines
128
+ and scripts.
129
+
130
+ * `-v`, `--verbose`:
131
+ Show detailed progress. Enables quire-11ty informational log output,
132
+ the Eleventy directory listing (file-by-file build table), and Vite
133
+ info-level output in addition to spinner messages.
134
+
135
+ * `--debug`:
136
+ Enable debug output for troubleshooting. Activates the `quire:*` debug
137
+ namespace, Eleventy's `DEBUG=Eleventy*` tracing, and quire-11ty debug-
138
+ level log output. Can be combined with `--verbose`.
139
+
140
+ * `--reduced-motion`:
141
+ Disable spinner animation and line overwriting. Each build phase prints
142
+ on a new line with a static status symbol. Compatible with screen
143
+ readers and terminals that do not support ANSI escape sequences. Can
144
+ also be enabled via the `REDUCED_MOTION` environment variable or the
145
+ `reducedMotion` config setting.
146
+
147
+ * `--color`:
148
+ Force colored output, overriding the `NO_COLOR` environment variable.
149
+
150
+ * `--no-color`:
151
+ Disable colored output.
152
+
153
+ * `--no-pager`:
154
+ Disable paging for long output (e.g., help topics).
155
+
156
+ * `-V`, `--version`:
157
+ Output the quire version number.
158
+
159
+ * `-h`, `--help`:
160
+ Display help for quire or a subcommand.
161
+
162
+ ## ENVIRONMENT
163
+
164
+ * `QUIRE_LOG_LEVEL`=_level_:
165
+ Override the log verbosity for quire-11ty output. Valid values are
166
+ `trace`, `debug`, `info`, `warn`, `error`, and `silent`. This is
167
+ normally set automatically by the CLI based on `--quiet`, `--verbose`,
168
+ and `--debug` flags. Setting it manually is useful when running
169
+ quire-11ty outside the CLI.
170
+
171
+ * `REDUCED_MOTION`=_1_:
172
+ Disable spinner animation, equivalent to `--reduced-motion`.
173
+
174
+ * `NO_COLOR`=_1_:
175
+ Disable colored output (respected by chalk). Overridden by `--color`.
176
+
177
+ * `NO_PAGER`=_1_:
178
+ Disable paging for long output, equivalent to `--no-pager`.
179
+
180
+ * `PAGER`=_program_:
181
+ Set the pager program for long output (default: `less`).
182
+
183
+ * `DEBUG`=_pattern_:
184
+ Enable debug output for matching namespaces. Examples:
185
+
186
+ `DEBUG=quire:*` enables all Quire CLI debug output.
187
+ `DEBUG=quire:lib:pdf` enables only PDF module debug output.
188
+ `DEBUG=quire:lib:*` enables all library module debug output.
189
+ `DEBUG=Eleventy*` enables Eleventy internal debug output.
190
+
191
+ ## COMMON WORKFLOWS
192
+
193
+ Start a new project and preview it locally:
194
+
195
+ quire new my-book && cd my-book && quire preview
196
+
197
+ Build the site for web deployment:
198
+
199
+ quire clean && quire build
200
+
201
+ Generate all publication formats:
202
+
203
+ quire clean && quire build && quire pdf && quire epub
204
+
205
+ Build and open a PDF in one step:
206
+
207
+ quire pdf --build --open
208
+
209
+ ## CONFIGURATION
210
+
211
+ Persistent settings are managed with the `quire settings` command. Common
212
+ settings include:
213
+
214
+ quire settings set verbose true
215
+ quire settings set pdfEngine prince
216
+ quire settings set updateChannel rc
217
+
218
+ Run `quire settings` to see all available settings and their current values.
219
+ Run `quire settings path` to show the configuration file location.
220
+
221
+ ## EXIT STATUS
222
+
223
+ * `0`: Success
224
+ * `1`: Command failed (build error, validation error, missing output, etc.)
225
+
226
+ ## SEE ALSO
227
+
228
+ Full documentation: <https://quire.getty.edu/docs-v1>
229
+
230
+ Report bugs: <https://github.com/thegetty/quire/issues>
231
+
232
+ Source code: <https://github.com/thegetty/quire>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@thegetty/quire-cli",
3
3
  "description": "Quire command-line interface",
4
- "version": "1.0.0-rc.43",
4
+ "version": "1.0.0-rc.45",
5
5
  "author": "Getty Digital",
6
6
  "license": "SEE LICENSE IN https://github.com/thegetty/quire/blob/main/LICENSE",
7
7
  "bugs": {
@@ -16,9 +16,11 @@
16
16
  "quire": "./bin/cli.js"
17
17
  },
18
18
  "exports": "./bin/cli.js",
19
+ "man": "./man/quire.1",
19
20
  "type": "module",
20
21
  "files": [
21
22
  "bin/",
23
+ "man/",
22
24
  "patches/",
23
25
  "schemas/",
24
26
  "scripts/",
@@ -36,7 +38,6 @@
36
38
  "directory": "packages/cli"
37
39
  },
38
40
  "scripts": {
39
- "docs": "jsdoc2md --configure jsdoc.json --files src/**/*.js > docs/cli.md",
40
41
  "lint": "eslint src --ext .js",
41
42
  "lint:fix": "npm run lint -- --fix",
42
43
  "test": "ava",
@@ -74,7 +75,7 @@
74
75
  "marked-terminal": "^7.3.0",
75
76
  "node-fetch": "^3.3.2",
76
77
  "open": "^8.4.0",
77
- "ora": "^6.1.2",
78
+ "ora": "^9.1.0",
78
79
  "pagedjs-cli": "^0.4.3",
79
80
  "pdf-lib": "^1.17.1",
80
81
  "read-package-up": "^11.0.0",
@@ -87,7 +88,7 @@
87
88
  "ava": "^6.2.0",
88
89
  "eslint": "^8.32.0",
89
90
  "esmock": "^2.7.3",
90
- "jsdoc-to-markdown": "^9.1.1",
91
+
91
92
  "memfs": "^4.51.1",
92
93
  "sinon": "^17.0.1"
93
94
  },
@@ -44,13 +44,27 @@ const debug = createDebug('lib:11ty:api')
44
44
  * These must be set before the Eleventy instance is created and the
45
45
  * `.eleventy.js` configuration file is parsed.
46
46
  *
47
+ * Sets QUIRE_LOG_LEVEL to control output from multiple systems:
48
+ * - quire-11ty chalk logger (_lib/chalk) — reads env var as level ceiling
49
+ * - Vite bundler (_plugins/vite) — maps env var to Vite's logLevel option
50
+ * - Directory output plugin (.eleventy.js) — conditionally registered
51
+ *
52
+ * CLI flag mapping:
53
+ * (default) → 'warn' — spinner + warn/error only
54
+ * --verbose → 'info' — adds chalk info output, directory listing, Vite info
55
+ * --debug → 'debug' — adds chalk debug output, Eleventy DEBUG traces
56
+ * --quiet → 'silent' — suppresses all chalk/Vite/directory output
57
+ *
47
58
  * @see https://github.com/11ty/eleventy/issues/2655
59
+ * @see packages/cli/docs/cli-output-modes.md
48
60
  *
49
61
  * @param {Object} options
50
62
  * @param {'production'|'development'} options.mode - Build mode
51
63
  * @param {boolean} options.debug - Enable Eleventy debug output
64
+ * @param {boolean} options.verbose - Enable verbose output
65
+ * @param {boolean} options.quiet - Suppress output
52
66
  */
53
- const configureEleventyEnv = ({ mode = 'production', debug = false } = {}) => {
67
+ const configureEleventyEnv = ({ mode = 'production', debug = false, verbose = false, quiet = false } = {}) => {
54
68
  // Path configuration for decoupling quire-11ty from project input directory
55
69
  process.env.ELEVENTY_DATA = paths.getDataDir()
56
70
  process.env.ELEVENTY_INCLUDES = paths.getIncludesDir()
@@ -59,6 +73,21 @@ const configureEleventyEnv = ({ mode = 'production', debug = false } = {}) => {
59
73
  // Build mode
60
74
  process.env.ELEVENTY_ENV = mode
61
75
 
76
+ // Log level for quire-11ty's chalk logger
77
+ if (quiet) {
78
+ process.env.QUIRE_LOG_LEVEL = 'silent'
79
+ } else if (debug) {
80
+ process.env.QUIRE_LOG_LEVEL = 'debug'
81
+ } else if (verbose) {
82
+ process.env.QUIRE_LOG_LEVEL = 'info'
83
+ } else {
84
+ process.env.QUIRE_LOG_LEVEL = 'warn'
85
+ }
86
+
87
+ // QUIRE_LOG_PREFIX and QUIRE_LOG_SHOW_LEVEL are set by the preAction hook
88
+ // in main.js from config values. No action needed here — they are already
89
+ // in process.env and will be read by the chalk logger at instantiation time.
90
+
62
91
  // Debug output
63
92
  if (debug) {
64
93
  process.env.DEBUG = 'Eleventy*'
@@ -102,7 +131,7 @@ const createEleventyInstance = async (options = {}) => {
102
131
  return eleventyConfig
103
132
  },
104
133
  configPath: options.config || config,
105
- quietMode: options.quiet || false,
134
+ quietMode: options.quiet || !options.verbose,
106
135
  runMode: options.runMode || 'build',
107
136
  })
108
137
 
@@ -172,16 +201,13 @@ class Quire11ty {
172
201
  const projectRoot = this.paths.getProjectRoot()
173
202
  process.chdir(projectRoot)
174
203
 
175
- configureEleventyEnv({ mode: 'production', debug: options.debug })
204
+ configureEleventyEnv({ mode: 'production', ...options })
176
205
 
177
206
  const eleventy = await createEleventyInstance(options)
178
207
 
179
208
  eleventy.setDryRun(options.dryRun)
180
209
 
181
- // Print a static info line before Eleventy's build output begins.
182
- // A spinner is not used here because write() writes directly to stdout
183
- // and would overwrite the spinner line.
184
- reporter.info('Building site...')
210
+ reporter.start('Building site...', { showElapsed: true })
185
211
 
186
212
  try {
187
213
  await eleventy.write()
@@ -205,7 +231,7 @@ class Quire11ty {
205
231
  const projectRoot = this.paths.getProjectRoot()
206
232
  process.chdir(projectRoot)
207
233
 
208
- configureEleventyEnv({ mode: 'development', debug: options.debug })
234
+ configureEleventyEnv({ mode: 'development', ...options })
209
235
 
210
236
  const eleventy =
211
237
  await createEleventyInstance({ ...options, runMode: 'serve' })
@@ -216,10 +242,7 @@ class Quire11ty {
216
242
  // Initialize Eleventy (required before watch/serve)
217
243
  await eleventy.init()
218
244
 
219
- // Print a static info line before Eleventy's build output begins.
220
- // A spinner is not used here because watch() writes directly to stdout
221
- // and would overwrite the spinner line.
222
- reporter.info('Building site...')
245
+ reporter.start('Building site...', { showElapsed: true })
223
246
 
224
247
  // Build the site and start file watchers.
225
248
  // watch() performs the initial build via write(), then sets up chokidar
@@ -228,6 +251,7 @@ class Quire11ty {
228
251
  // @see https://github.com/11ty/eleventy/blob/main/cmd.cjs
229
252
  await eleventy.watch()
230
253
 
254
+ reporter.succeed('Build complete')
231
255
  reporter.start('Starting development server...')
232
256
 
233
257
  // Register a ready callback to resolve the spinner when the server is listening
@@ -93,6 +93,27 @@ const factory = (options = {}) => {
93
93
  ELEVENTY_LAYOUTS: paths.getLayoutsDir(),
94
94
  }
95
95
 
96
+ // QUIRE_LOG_LEVEL controls output from the quire-11ty chalk logger,
97
+ // the Vite plugin logLevel, and the directory output plugin registration.
98
+ // @see packages/cli/docs/cli-output-modes.md
99
+ if (options.quiet) {
100
+ env.QUIRE_LOG_LEVEL = 'silent'
101
+ } else if (options.debug) {
102
+ env.QUIRE_LOG_LEVEL = 'debug'
103
+ } else if (options.verbose) {
104
+ env.QUIRE_LOG_LEVEL = 'info'
105
+ } else {
106
+ env.QUIRE_LOG_LEVEL = 'warn'
107
+ }
108
+
109
+ // Forward CLI log prefix and show-level settings (set by configureLogEnv)
110
+ if (process.env.QUIRE_LOG_PREFIX !== undefined) {
111
+ env.QUIRE_LOG_PREFIX = process.env.QUIRE_LOG_PREFIX
112
+ }
113
+ if (process.env.QUIRE_LOG_SHOW_LEVEL !== undefined) {
114
+ env.QUIRE_LOG_SHOW_LEVEL = process.env.QUIRE_LOG_SHOW_LEVEL
115
+ }
116
+
96
117
  if (options.debug) env.DEBUG = 'Eleventy*'
97
118
 
98
119
  return { command, env, projectRoot }
@@ -88,7 +88,7 @@ export const LOG_LEVEL_ENV_VAR = 'QUIRE_LOG_LEVEL'
88
88
  * @param {string} text - Prefix text
89
89
  * @returns {string} Formatted prefix
90
90
  */
91
- function formatPrefix(style, text) {
91
+ export function formatPrefix(style, text) {
92
92
  switch (style) {
93
93
  case 'bracket':
94
94
  return `[${text}]`
package/src/main.js CHANGED
@@ -16,6 +16,7 @@ import reporter from '#lib/reporter/index.js'
16
16
  import { docsUrl, DOCS_BASE } from '#helpers/docs-url.js'
17
17
  import packageConfig from '#src/packageConfig.js'
18
18
  import { enableDebug } from '#lib/logger/debug.js'
19
+ import { formatPrefix } from '#lib/logger/index.js'
19
20
 
20
21
  const { version } = packageConfig
21
22
 
@@ -151,6 +152,10 @@ program.hook('preAction', (thisCommand) => {
151
152
  if (opts.pager === false) {
152
153
  process.env.NO_PAGER = '1'
153
154
  }
155
+
156
+ // Log prefix and level label visibility for quire-11ty's chalk logger
157
+ process.env.QUIRE_LOG_PREFIX = formatPrefix(config.get('logPrefixStyle'), config.get('logPrefix'))
158
+ process.env.QUIRE_LOG_SHOW_LEVEL = String(config.get('logShowLevel'))
154
159
  })
155
160
 
156
161
  /**