@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 +341 -0
- package/man/quire.1.md +232 -0
- package/package.json +5 -4
- package/src/lib/11ty/api.js +36 -12
- package/src/lib/11ty/cli.js +21 -0
- package/src/lib/logger/index.js +1 -1
- package/src/main.js +5 -0
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.
|
|
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": "^
|
|
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
|
-
|
|
91
|
+
|
|
91
92
|
"memfs": "^4.51.1",
|
|
92
93
|
"sinon": "^17.0.1"
|
|
93
94
|
},
|
package/src/lib/11ty/api.js
CHANGED
|
@@ -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 ||
|
|
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',
|
|
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
|
-
|
|
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',
|
|
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
|
-
|
|
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
|
package/src/lib/11ty/cli.js
CHANGED
|
@@ -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 }
|
package/src/lib/logger/index.js
CHANGED
|
@@ -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
|
/**
|