1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
| #!/usr/bin/env node
| import { readFileSync } from 'fs'
| import yargs from 'yargs'
| import { hideBin } from 'yargs/helpers'
| import esbuild from 'esbuild'
| import chalk from 'chalk'
| import requireFromString from 'require-from-string'
|
| const fp = "./quartz.config.ts"
| const { version } = JSON.parse(readFileSync("./package.json").toString())
|
| export const BuildArgv = {
| output: {
| string: true,
| alias: ['o'],
| default: 'public',
| describe: 'output folder for files'
| },
| clean: {
| boolean: true,
| default: false,
| describe: 'clean the output folder before building'
| },
| serve: {
| boolean: true,
| default: false,
| describe: 'run a local server to preview your Quartz'
| },
| port: {
| number: true,
| default: 8080,
| describe: 'port to serve Quartz on'
| },
| directory: {
| string: true,
| alias: ['d'],
| default: 'content',
| describe: 'directory to look for content files'
| },
| verbose: {
| boolean: true,
| alias: ['v'],
| default: false,
| describe: 'print out extra logging information'
| }
| }
|
| yargs(hideBin(process.argv))
| .scriptName("quartz")
| .version(version)
| .usage('$0 <cmd> [args]')
| .command('build', 'Build Quartz into a bundle of static HTML files', BuildArgv, async (argv) => {
| const out = await esbuild.build({
| entryPoints: [fp],
| write: false,
| minifySyntax: true,
| minifyWhitespace: true,
| bundle: true,
| keepNames: true,
| platform: "node",
| format: "cjs",
| jsx: "automatic",
| jsxImportSource: "preact",
| external: ["@napi-rs/simple-git"]
| }).catch(err => {
| console.error(`${chalk.red("Couldn't parse Quartz configuration:")} ${fp}`)
| console.log(`Reason: ${chalk.grey(err)}`)
| console.log("hint: make sure all the required dependencies are installed (run `npm install`)")
| process.exit(1)
| })
|
| const mod = out.outputFiles[0].text
| const init = requireFromString(mod, fp).default
| init(argv, version)
| })
| .showHelpOnFail(false)
| .help()
| .strict()
| .demandCommand()
| .argv
|
|