-
-
Notifications
You must be signed in to change notification settings - Fork 8.8k
/
Copy pathdocusaurus.js
executable file
·123 lines (109 loc) · 3.33 KB
/
docusaurus.js
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#!/usr/bin/env node
/**
* Copyright (c) 2017-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
const chalk = require('chalk');
const envinfo = require('envinfo');
const semver = require('semver');
const path = require('path');
const program = require('commander');
const {build, swizzle, init, deploy, start} = require('../src');
const requiredVersion = require('../package.json').engines.node;
if (!semver.satisfies(process.version, requiredVersion)) {
console.log(
chalk.red(`\nMinimum node version not met :)`) +
chalk.yellow(
`\nYou are using Node ${
process.version
}, Requirement: Node ${requiredVersion}.\n`,
),
);
process.exit(1);
}
function wrapCommand(fn) {
return (...args) =>
fn(...args).catch(err => {
console.error(chalk.red(err.stack));
process.exitCode = 1;
});
}
program
.version(require('../package.json').version)
.usage('<command> [options]');
program
.command('build [siteDir]')
.description('Build website')
.option(
'--bundle-analyzer',
'Visualize size of webpack output files with an interactive zoomable treemap (default = false)',
)
.option('--no-cache-loader', 'Do not use cache-loader')
.action((siteDir = '.', {bundleAnalyzer, cacheLoader}) => {
wrapCommand(build)(path.resolve(siteDir), {
bundleAnalyzer,
cacheLoader,
});
});
program
.command('swizzle <themeName> [componentName] [siteDir]')
.description('Copy the theme files into website folder for customization.')
.action((themeName, componentName, siteDir = '.') => {
wrapCommand(swizzle)(path.resolve(siteDir), themeName, componentName);
});
program
.command('init [projectDir]')
.description('Initialize website')
.action((projectDir = '.') => {
wrapCommand(init)(path.resolve(projectDir));
});
program
.command('deploy [siteDir]')
.description('deploy website')
.action((siteDir = '.') => {
wrapCommand(deploy)(path.resolve(siteDir));
});
program
.command('start [siteDir]')
.description('Start development server')
.option('-p, --port <port>', 'use specified port (default: 3000)')
.option('-h, --host <host>', 'use specified host (default: localhost')
.option(
'--hot-only',
'Do not fallback to page refresh if hot reload fails (default: false)',
)
.option('--no-cache-loader', 'Do not use cache-loader')
.action((siteDir = '.', {port, host, hotOnly, cacheLoader}) => {
wrapCommand(start)(path.resolve(siteDir), {
port,
host,
hotOnly,
cacheLoader,
});
});
program
.command('info')
.description('Shows debugging information about the local environment')
.action(() => {
console.log(chalk.bold('\nEnvironment Info:'));
envinfo
.run({
System: ['OS', 'CPU'],
Binaries: ['Node', 'Yarn', 'npm'],
Browsers: ['Chrome', 'Edge', 'Firefox', 'Safari'],
npmPackages: '?(@)docusaurus{*,*/**}',
npmGlobalPackages: '?(@)docusaurus{*,*/**}',
})
.then(console.log);
});
program.arguments('<command>').action(cmd => {
program.outputHelp();
console.log(` ${chalk.red(`\n Unknown command ${chalk.yellow(cmd)}.`)}`);
console.log();
});
program.parse(process.argv);
if (!process.argv.slice(2).length) {
program.outputHelp();
}