create-docusaurus 2.0.0-beta.14 → 2.0.0-beta.17
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/bin/index.js +31 -20
- package/lib/index.d.ts +10 -1
- package/lib/index.js +169 -93
- package/package.json +14 -15
- package/templates/classic/package.json +4 -4
- package/templates/classic/src/components/{HomepageFeatures.js → HomepageFeatures/index.js} +5 -5
- package/templates/classic/src/components/{HomepageFeatures.module.css → HomepageFeatures/styles.module.css} +0 -0
- package/templates/classic/src/css/custom.css +19 -8
- package/templates/classic/src/pages/index.js +1 -1
- package/templates/classic/src/pages/index.module.css +1 -1
- package/templates/classic-typescript/package.json +6 -6
- package/templates/classic-typescript/src/components/{HomepageFeatures.tsx → HomepageFeatures/index.tsx} +7 -7
- package/templates/classic-typescript/src/pages/index.tsx +1 -1
- package/templates/facebook/.eslintrc.js +0 -1
- package/templates/facebook/.prettierrc +1 -1
- package/templates/facebook/package.json +9 -9
- package/templates/facebook/src/css/custom.css +18 -7
- package/templates/facebook/src/pages/styles.module.css +1 -1
- package/templates/shared/docs/intro.md +19 -7
- package/templates/shared/static/img/undraw_docusaurus_mountain.svg +1 -0
- package/templates/shared/static/img/undraw_docusaurus_react.svg +1 -0
- package/templates/shared/static/img/undraw_docusaurus_tree.svg +40 -1
package/bin/index.js
CHANGED
|
@@ -8,12 +8,15 @@
|
|
|
8
8
|
|
|
9
9
|
// @ts-check
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
import logger from '@docusaurus/logger';
|
|
12
|
+
import semver from 'semver';
|
|
13
|
+
import path from 'path';
|
|
14
|
+
import {program} from 'commander';
|
|
15
|
+
import {createRequire} from 'module';
|
|
16
|
+
import init from '../lib/index.js';
|
|
17
|
+
|
|
18
|
+
const packageJson = createRequire(import.meta.url)('../package.json');
|
|
19
|
+
const requiredVersion = packageJson.engines.node;
|
|
17
20
|
|
|
18
21
|
if (!semver.satisfies(process.version, requiredVersion)) {
|
|
19
22
|
logger.error('Minimum Node.js version not met :(');
|
|
@@ -29,36 +32,44 @@ function wrapCommand(fn) {
|
|
|
29
32
|
});
|
|
30
33
|
}
|
|
31
34
|
|
|
32
|
-
program
|
|
33
|
-
.version(require('../package.json').version)
|
|
34
|
-
.usage('<command> [options]');
|
|
35
|
+
program.version(packageJson.version);
|
|
35
36
|
|
|
36
37
|
program
|
|
37
|
-
.
|
|
38
|
-
.option(
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
.arguments('[siteName] [template] [rootDir]')
|
|
39
|
+
.option(
|
|
40
|
+
'-p, --package-manager <manager>',
|
|
41
|
+
'The package manager used to install dependencies. One of yarn, npm, and pnpm.',
|
|
42
|
+
)
|
|
43
|
+
.option(
|
|
44
|
+
'-s, --skip-install',
|
|
45
|
+
'Do not run package manager immediately after scaffolding',
|
|
46
|
+
)
|
|
47
|
+
.option('-t, --typescript', 'Use the TypeScript template variant')
|
|
48
|
+
.option(
|
|
49
|
+
'-g, --git-strategy <strategy>',
|
|
50
|
+
`Only used if the template is a git repository.
|
|
51
|
+
\`deep\`: preserve full history
|
|
52
|
+
\`shallow\`: clone with --depth=1
|
|
53
|
+
\`copy\`: do a shallow clone, but do not create a git repo
|
|
54
|
+
\`custom\`: enter your custom git clone command. We will prompt you for it.`,
|
|
55
|
+
)
|
|
41
56
|
.description('Initialize website.')
|
|
42
57
|
.action(
|
|
43
58
|
(
|
|
44
59
|
siteName,
|
|
45
60
|
template,
|
|
46
61
|
rootDir = '.',
|
|
47
|
-
{
|
|
62
|
+
{packageManager, skipInstall, typescript, gitStrategy} = {},
|
|
48
63
|
) => {
|
|
49
64
|
wrapCommand(init)(path.resolve(rootDir), siteName, template, {
|
|
50
|
-
|
|
65
|
+
packageManager,
|
|
51
66
|
skipInstall,
|
|
52
67
|
typescript,
|
|
68
|
+
gitStrategy,
|
|
53
69
|
});
|
|
54
70
|
},
|
|
55
71
|
);
|
|
56
72
|
|
|
57
|
-
program.arguments('<command>').action((cmd) => {
|
|
58
|
-
program.outputHelp();
|
|
59
|
-
logger.error`Unknown command code=${cmd}.`;
|
|
60
|
-
});
|
|
61
|
-
|
|
62
73
|
program.parse(process.argv);
|
|
63
74
|
|
|
64
75
|
if (!process.argv.slice(1).length) {
|
package/lib/index.d.ts
CHANGED
|
@@ -4,8 +4,17 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
+
declare const SupportedPackageManagers: {
|
|
8
|
+
npm: string;
|
|
9
|
+
yarn: string;
|
|
10
|
+
pnpm: string;
|
|
11
|
+
};
|
|
12
|
+
declare type SupportedPackageManager = keyof typeof SupportedPackageManagers;
|
|
13
|
+
declare const gitStrategies: readonly ["deep", "shallow", "copy", "custom"];
|
|
7
14
|
export default function init(rootDir: string, siteName?: string, reqTemplate?: string, cliOptions?: Partial<{
|
|
8
|
-
|
|
15
|
+
packageManager: SupportedPackageManager;
|
|
9
16
|
skipInstall: boolean;
|
|
10
17
|
typescript: boolean;
|
|
18
|
+
gitStrategy: typeof gitStrategies[number];
|
|
11
19
|
}>): Promise<void>;
|
|
20
|
+
export {};
|
package/lib/index.js
CHANGED
|
@@ -1,49 +1,83 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
4
3
|
*
|
|
5
4
|
* This source code is licensed under the MIT license found in the
|
|
6
5
|
* LICENSE file in the root directory of this source tree.
|
|
7
6
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const lodash_1 = require("lodash");
|
|
17
|
-
const supports_color_1 = (0, tslib_1.__importDefault)(require("supports-color"));
|
|
7
|
+
import logger from '@docusaurus/logger';
|
|
8
|
+
import fs from 'fs-extra';
|
|
9
|
+
import prompts from 'prompts';
|
|
10
|
+
import path from 'path';
|
|
11
|
+
import shell from 'shelljs';
|
|
12
|
+
import _ from 'lodash';
|
|
13
|
+
import supportsColor from 'supports-color';
|
|
14
|
+
import { fileURLToPath } from 'url';
|
|
18
15
|
const RecommendedTemplate = 'classic';
|
|
19
16
|
const TypeScriptTemplateSuffix = '-typescript';
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
// Only used in the rare, rare case of running globally installed create +
|
|
18
|
+
// using --skip-install. We need a default name to show the tip text
|
|
19
|
+
const DefaultPackageManager = 'npm';
|
|
20
|
+
const SupportedPackageManagers = {
|
|
21
|
+
npm: 'package-lock.json',
|
|
22
|
+
yarn: 'yarn.lock',
|
|
23
|
+
pnpm: 'pnpm-lock.yaml',
|
|
24
|
+
};
|
|
25
|
+
const PackageManagersList = Object.keys(SupportedPackageManagers);
|
|
26
|
+
async function findPackageManagerFromLockFile() {
|
|
27
|
+
for (const packageManager of PackageManagersList) {
|
|
28
|
+
const lockFilePath = path.resolve(process.cwd(), SupportedPackageManagers[packageManager]);
|
|
29
|
+
if (await fs.pathExists(lockFilePath)) {
|
|
30
|
+
return packageManager;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
function findPackageManagerFromUserAgent() {
|
|
36
|
+
return PackageManagersList.find((packageManager) => process.env.npm_config_user_agent?.startsWith(packageManager));
|
|
37
|
+
}
|
|
38
|
+
async function askForPackageManagerChoice() {
|
|
39
|
+
const hasYarn = shell.exec('yarn --version', { silent: true }).code === 0;
|
|
40
|
+
const hasPNPM = shell.exec('pnpm --version', { silent: true }).code === 0;
|
|
41
|
+
if (!hasYarn && !hasPNPM) {
|
|
42
|
+
return 'npm';
|
|
24
43
|
}
|
|
25
|
-
|
|
26
|
-
|
|
44
|
+
const choices = ['npm', hasYarn && 'yarn', hasPNPM && 'pnpm']
|
|
45
|
+
.filter((p) => Boolean(p))
|
|
46
|
+
.map((p) => ({ title: p, value: p }));
|
|
47
|
+
return (await prompts({
|
|
48
|
+
type: 'select',
|
|
49
|
+
name: 'packageManager',
|
|
50
|
+
message: 'Select a package manager...',
|
|
51
|
+
choices,
|
|
52
|
+
})).packageManager;
|
|
53
|
+
}
|
|
54
|
+
async function getPackageManager(packageManagerChoice, skipInstall = false) {
|
|
55
|
+
if (packageManagerChoice &&
|
|
56
|
+
!PackageManagersList.includes(packageManagerChoice)) {
|
|
57
|
+
throw new Error(`Invalid package manager choice ${packageManagerChoice}. Must be one of ${PackageManagersList.join(', ')}`);
|
|
27
58
|
}
|
|
59
|
+
return (packageManagerChoice ??
|
|
60
|
+
(await findPackageManagerFromLockFile()) ??
|
|
61
|
+
findPackageManagerFromUserAgent() ??
|
|
62
|
+
// This only happens if the user has a global installation in PATH
|
|
63
|
+
(skipInstall ? DefaultPackageManager : askForPackageManagerChoice()));
|
|
28
64
|
}
|
|
29
65
|
function isValidGitRepoUrl(gitRepoUrl) {
|
|
30
66
|
return ['https://', 'git@'].some((item) => gitRepoUrl.startsWith(item));
|
|
31
67
|
}
|
|
32
68
|
async function updatePkg(pkgPath, obj) {
|
|
33
|
-
const content = await
|
|
69
|
+
const content = await fs.readFile(pkgPath, 'utf-8');
|
|
34
70
|
const pkg = JSON.parse(content);
|
|
35
71
|
const newPkg = Object.assign(pkg, obj);
|
|
36
|
-
await
|
|
72
|
+
await fs.outputFile(pkgPath, `${JSON.stringify(newPkg, null, 2)}\n`);
|
|
37
73
|
}
|
|
38
|
-
function readTemplates(templatesDir) {
|
|
39
|
-
const templates =
|
|
40
|
-
.readdirSync(templatesDir)
|
|
41
|
-
.filter((d) => !d.startsWith('.') &&
|
|
74
|
+
async function readTemplates(templatesDir) {
|
|
75
|
+
const templates = (await fs.readdir(templatesDir)).filter((d) => !d.startsWith('.') &&
|
|
42
76
|
!d.startsWith('README') &&
|
|
43
77
|
!d.endsWith(TypeScriptTemplateSuffix) &&
|
|
44
78
|
d !== 'shared');
|
|
45
79
|
// Classic should be first in list!
|
|
46
|
-
return
|
|
80
|
+
return _.sortBy(templates, (t) => t !== RecommendedTemplate);
|
|
47
81
|
}
|
|
48
82
|
function createTemplateChoices(templates) {
|
|
49
83
|
function makeNameAndValueChoice(value) {
|
|
@@ -63,31 +97,51 @@ function getTypeScriptBaseTemplate(template) {
|
|
|
63
97
|
return undefined;
|
|
64
98
|
}
|
|
65
99
|
async function copyTemplate(templatesDir, template, dest) {
|
|
66
|
-
await
|
|
67
|
-
// TypeScript variants will copy duplicate resources like CSS & config from
|
|
100
|
+
await fs.copy(path.resolve(templatesDir, 'shared'), dest);
|
|
101
|
+
// TypeScript variants will copy duplicate resources like CSS & config from
|
|
102
|
+
// base template
|
|
68
103
|
const tsBaseTemplate = getTypeScriptBaseTemplate(template);
|
|
69
104
|
if (tsBaseTemplate) {
|
|
70
|
-
const tsBaseTemplatePath =
|
|
71
|
-
await
|
|
72
|
-
filter: (filePath) =>
|
|
73
|
-
|
|
74
|
-
|
|
105
|
+
const tsBaseTemplatePath = path.resolve(templatesDir, tsBaseTemplate);
|
|
106
|
+
await fs.copy(tsBaseTemplatePath, dest, {
|
|
107
|
+
filter: async (filePath) => (await fs.stat(filePath)).isDirectory() ||
|
|
108
|
+
path.extname(filePath) === '.css' ||
|
|
109
|
+
path.basename(filePath) === 'docusaurus.config.js',
|
|
75
110
|
});
|
|
76
111
|
}
|
|
77
|
-
await
|
|
78
|
-
// Symlinks don't exist in published NPM packages anymore, so this is only
|
|
79
|
-
|
|
112
|
+
await fs.copy(path.resolve(templatesDir, template), dest, {
|
|
113
|
+
// Symlinks don't exist in published NPM packages anymore, so this is only
|
|
114
|
+
// to prevent errors during local testing
|
|
115
|
+
filter: async (filePath) => !(await fs.lstat(filePath)).isSymbolicLink(),
|
|
80
116
|
});
|
|
81
117
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
118
|
+
const gitStrategies = ['deep', 'shallow', 'copy', 'custom'];
|
|
119
|
+
async function getGitCommand(gitStrategy) {
|
|
120
|
+
switch (gitStrategy) {
|
|
121
|
+
case 'shallow':
|
|
122
|
+
case 'copy':
|
|
123
|
+
return 'git clone --recursive --depth 1';
|
|
124
|
+
case 'custom': {
|
|
125
|
+
const { command } = await prompts({
|
|
126
|
+
type: 'text',
|
|
127
|
+
name: 'command',
|
|
128
|
+
message: 'Write your own git clone command. The repository URL and destination directory will be supplied. E.g. "git clone --depth 10"',
|
|
129
|
+
});
|
|
130
|
+
return command;
|
|
131
|
+
}
|
|
132
|
+
case 'deep':
|
|
133
|
+
default:
|
|
134
|
+
return 'git clone';
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
export default async function init(rootDir, siteName, reqTemplate, cliOptions = {}) {
|
|
138
|
+
const templatesDir = fileURLToPath(new URL('../templates', import.meta.url));
|
|
139
|
+
const templates = await readTemplates(templatesDir);
|
|
140
|
+
const hasTS = (templateName) => fs.pathExists(path.resolve(templatesDir, `${templateName}${TypeScriptTemplateSuffix}`));
|
|
87
141
|
let name = siteName;
|
|
88
142
|
// Prompt if siteName is not passed from CLI.
|
|
89
143
|
if (!name) {
|
|
90
|
-
const prompt = await (
|
|
144
|
+
const prompt = await prompts({
|
|
91
145
|
type: 'text',
|
|
92
146
|
name: 'name',
|
|
93
147
|
message: 'What should we name this site?',
|
|
@@ -96,27 +150,27 @@ async function init(rootDir, siteName, reqTemplate, cliOptions = {}) {
|
|
|
96
150
|
name = prompt.name;
|
|
97
151
|
}
|
|
98
152
|
if (!name) {
|
|
99
|
-
|
|
153
|
+
logger.error('A website name is required.');
|
|
100
154
|
process.exit(1);
|
|
101
155
|
}
|
|
102
|
-
const dest =
|
|
103
|
-
if (
|
|
104
|
-
|
|
156
|
+
const dest = path.resolve(rootDir, name);
|
|
157
|
+
if (await fs.pathExists(dest)) {
|
|
158
|
+
logger.error `Directory already exists at path=${dest}!`;
|
|
105
159
|
process.exit(1);
|
|
106
160
|
}
|
|
107
161
|
let template = reqTemplate;
|
|
108
162
|
let useTS = cliOptions.typescript;
|
|
109
163
|
// Prompt if template is not provided from CLI.
|
|
110
164
|
if (!template) {
|
|
111
|
-
const templatePrompt = await (
|
|
165
|
+
const templatePrompt = await prompts({
|
|
112
166
|
type: 'select',
|
|
113
167
|
name: 'template',
|
|
114
168
|
message: 'Select a template below...',
|
|
115
169
|
choices: createTemplateChoices(templates),
|
|
116
170
|
});
|
|
117
171
|
template = templatePrompt.template;
|
|
118
|
-
if (template && !useTS && hasTS(template)) {
|
|
119
|
-
const tsPrompt = await (
|
|
172
|
+
if (template && !useTS && (await hasTS(template))) {
|
|
173
|
+
const tsPrompt = await prompts({
|
|
120
174
|
type: 'confirm',
|
|
121
175
|
name: 'useTS',
|
|
122
176
|
message: 'This template is available in TypeScript. Do you want to use the TS variant?',
|
|
@@ -125,58 +179,80 @@ async function init(rootDir, siteName, reqTemplate, cliOptions = {}) {
|
|
|
125
179
|
useTS = tsPrompt.useTS;
|
|
126
180
|
}
|
|
127
181
|
}
|
|
182
|
+
let gitStrategy = cliOptions.gitStrategy ?? 'deep';
|
|
128
183
|
// If user choose Git repository, we'll prompt for the url.
|
|
129
184
|
if (template === 'Git repository') {
|
|
130
|
-
const repoPrompt = await (
|
|
185
|
+
const repoPrompt = await prompts({
|
|
131
186
|
type: 'text',
|
|
132
187
|
name: 'gitRepoUrl',
|
|
133
188
|
validate: (url) => {
|
|
134
189
|
if (url && isValidGitRepoUrl(url)) {
|
|
135
190
|
return true;
|
|
136
191
|
}
|
|
137
|
-
return
|
|
192
|
+
return logger.red('Invalid repository URL');
|
|
138
193
|
},
|
|
139
|
-
message:
|
|
194
|
+
message: logger.interpolate `Enter a repository URL from GitHub, Bitbucket, GitLab, or any other public repo.
|
|
140
195
|
(e.g: path=${'https://github.com/ownerName/repoName.git'})`,
|
|
141
196
|
});
|
|
197
|
+
({ gitStrategy } = await prompts({
|
|
198
|
+
type: 'select',
|
|
199
|
+
name: 'gitStrategy',
|
|
200
|
+
message: 'How should we clone this repo?',
|
|
201
|
+
choices: [
|
|
202
|
+
{ title: 'Deep clone: preserve full history', value: 'deep' },
|
|
203
|
+
{ title: 'Shallow clone: clone with --depth=1', value: 'shallow' },
|
|
204
|
+
{
|
|
205
|
+
title: 'Copy: do a shallow clone, but do not create a git repo',
|
|
206
|
+
value: 'copy',
|
|
207
|
+
},
|
|
208
|
+
{ title: 'Custom: enter your custom git clone command', value: 'custom' },
|
|
209
|
+
],
|
|
210
|
+
}));
|
|
142
211
|
template = repoPrompt.gitRepoUrl;
|
|
143
212
|
}
|
|
144
213
|
else if (template === 'Local template') {
|
|
145
|
-
const dirPrompt = await (
|
|
214
|
+
const dirPrompt = await prompts({
|
|
146
215
|
type: 'text',
|
|
147
216
|
name: 'templateDir',
|
|
148
|
-
validate: (dir) => {
|
|
217
|
+
validate: async (dir) => {
|
|
149
218
|
if (dir) {
|
|
150
|
-
const fullDir =
|
|
151
|
-
if (
|
|
219
|
+
const fullDir = path.resolve(process.cwd(), dir);
|
|
220
|
+
if (await fs.pathExists(fullDir)) {
|
|
152
221
|
return true;
|
|
153
222
|
}
|
|
154
|
-
return
|
|
223
|
+
return logger.red(logger.interpolate `path=${fullDir} does not exist.`);
|
|
155
224
|
}
|
|
156
|
-
return
|
|
225
|
+
return logger.red('Please enter a valid path.');
|
|
157
226
|
},
|
|
158
227
|
message: 'Enter a local folder path, relative to the current working directory.',
|
|
159
228
|
});
|
|
160
229
|
template = dirPrompt.templateDir;
|
|
161
230
|
}
|
|
162
231
|
if (!template) {
|
|
163
|
-
|
|
232
|
+
logger.error('Template should not be empty');
|
|
164
233
|
process.exit(1);
|
|
165
234
|
}
|
|
166
|
-
|
|
235
|
+
logger.info('Creating new Docusaurus project...');
|
|
167
236
|
if (isValidGitRepoUrl(template)) {
|
|
168
|
-
|
|
169
|
-
if (
|
|
170
|
-
.
|
|
171
|
-
logger_1.default.error `Cloning Git template name=${template} failed!`;
|
|
237
|
+
logger.info `Cloning Git template path=${template}...`;
|
|
238
|
+
if (!gitStrategies.includes(gitStrategy)) {
|
|
239
|
+
logger.error `Invalid git strategy: name=${gitStrategy}. Value must be one of ${gitStrategies.join(', ')}.`;
|
|
172
240
|
process.exit(1);
|
|
173
241
|
}
|
|
242
|
+
const command = await getGitCommand(gitStrategy);
|
|
243
|
+
if (shell.exec(`${command} ${template} ${dest}`).code !== 0) {
|
|
244
|
+
logger.error `Cloning Git template name=${template} failed!`;
|
|
245
|
+
process.exit(1);
|
|
246
|
+
}
|
|
247
|
+
if (gitStrategy === 'copy') {
|
|
248
|
+
await fs.remove(path.join(dest, '.git'));
|
|
249
|
+
}
|
|
174
250
|
}
|
|
175
251
|
else if (templates.includes(template)) {
|
|
176
252
|
// Docusaurus templates.
|
|
177
253
|
if (useTS) {
|
|
178
|
-
if (!hasTS(template)) {
|
|
179
|
-
|
|
254
|
+
if (!(await hasTS(template))) {
|
|
255
|
+
logger.error `Template name=${template} doesn't provide the Typescript variant.`;
|
|
180
256
|
process.exit(1);
|
|
181
257
|
}
|
|
182
258
|
template = `${template}${TypeScriptTemplateSuffix}`;
|
|
@@ -185,76 +261,77 @@ async function init(rootDir, siteName, reqTemplate, cliOptions = {}) {
|
|
|
185
261
|
await copyTemplate(templatesDir, template, dest);
|
|
186
262
|
}
|
|
187
263
|
catch (err) {
|
|
188
|
-
|
|
264
|
+
logger.error `Copying Docusaurus template name=${template} failed!`;
|
|
189
265
|
throw err;
|
|
190
266
|
}
|
|
191
267
|
}
|
|
192
|
-
else if (
|
|
193
|
-
const templateDir =
|
|
268
|
+
else if (await fs.pathExists(path.resolve(process.cwd(), template))) {
|
|
269
|
+
const templateDir = path.resolve(process.cwd(), template);
|
|
194
270
|
try {
|
|
195
|
-
await
|
|
271
|
+
await fs.copy(templateDir, dest);
|
|
196
272
|
}
|
|
197
273
|
catch (err) {
|
|
198
|
-
|
|
274
|
+
logger.error `Copying local template path=${templateDir} failed!`;
|
|
199
275
|
throw err;
|
|
200
276
|
}
|
|
201
277
|
}
|
|
202
278
|
else {
|
|
203
|
-
|
|
279
|
+
logger.error('Invalid template.');
|
|
204
280
|
process.exit(1);
|
|
205
281
|
}
|
|
206
282
|
// Update package.json info.
|
|
207
283
|
try {
|
|
208
|
-
await updatePkg(
|
|
209
|
-
name:
|
|
284
|
+
await updatePkg(path.join(dest, 'package.json'), {
|
|
285
|
+
name: _.kebabCase(name),
|
|
210
286
|
version: '0.0.0',
|
|
211
287
|
private: true,
|
|
212
288
|
});
|
|
213
289
|
}
|
|
214
290
|
catch (err) {
|
|
215
|
-
|
|
291
|
+
logger.error('Failed to update package.json.');
|
|
216
292
|
throw err;
|
|
217
293
|
}
|
|
218
294
|
// We need to rename the gitignore file to .gitignore
|
|
219
|
-
if (!
|
|
220
|
-
|
|
221
|
-
await
|
|
295
|
+
if (!(await fs.pathExists(path.join(dest, '.gitignore'))) &&
|
|
296
|
+
(await fs.pathExists(path.join(dest, 'gitignore')))) {
|
|
297
|
+
await fs.move(path.join(dest, 'gitignore'), path.join(dest, '.gitignore'));
|
|
222
298
|
}
|
|
223
|
-
if (
|
|
224
|
-
|
|
299
|
+
if (await fs.pathExists(path.join(dest, 'gitignore'))) {
|
|
300
|
+
await fs.remove(path.join(dest, 'gitignore'));
|
|
225
301
|
}
|
|
226
|
-
const pkgManager = useYarn ? 'yarn' : 'npm';
|
|
227
302
|
// Display the most elegant way to cd.
|
|
228
|
-
const cdpath =
|
|
229
|
-
|
|
230
|
-
: path_1.default.relative(process.cwd(), name);
|
|
303
|
+
const cdpath = path.relative('.', dest);
|
|
304
|
+
const pkgManager = await getPackageManager(cliOptions.packageManager, cliOptions.skipInstall);
|
|
231
305
|
if (!cliOptions.skipInstall) {
|
|
232
|
-
|
|
233
|
-
|
|
306
|
+
shell.cd(dest);
|
|
307
|
+
logger.info `Installing dependencies with name=${pkgManager}...`;
|
|
308
|
+
if (shell.exec(pkgManager === 'yarn' ? 'yarn' : `${pkgManager} install --color always`, {
|
|
234
309
|
env: {
|
|
235
310
|
...process.env,
|
|
236
|
-
// Force coloring the output, since the command is invoked
|
|
237
|
-
|
|
311
|
+
// Force coloring the output, since the command is invoked,
|
|
312
|
+
// by shelljs which is not the interactive shell
|
|
313
|
+
...(supportsColor.stdout ? { FORCE_COLOR: '1' } : {}),
|
|
238
314
|
},
|
|
239
315
|
}).code !== 0) {
|
|
240
|
-
|
|
241
|
-
|
|
316
|
+
logger.error('Dependency installation failed.');
|
|
317
|
+
logger.info `The site directory has already been created, and you can retry by typing:
|
|
242
318
|
|
|
243
319
|
code=${`cd ${cdpath}`}
|
|
244
320
|
code=${`${pkgManager} install`}`;
|
|
245
321
|
process.exit(0);
|
|
246
322
|
}
|
|
247
323
|
}
|
|
248
|
-
|
|
249
|
-
|
|
324
|
+
const useNpm = pkgManager === 'npm';
|
|
325
|
+
logger.success `Created path=${cdpath}.`;
|
|
326
|
+
logger.info `Inside that directory, you can run several commands:
|
|
250
327
|
|
|
251
328
|
code=${`${pkgManager} start`}
|
|
252
329
|
Starts the development server.
|
|
253
330
|
|
|
254
|
-
code=${`${pkgManager} ${
|
|
331
|
+
code=${`${pkgManager} ${useNpm ? 'run ' : ''}build`}
|
|
255
332
|
Bundles your website into static files for production.
|
|
256
333
|
|
|
257
|
-
code=${`${pkgManager} ${
|
|
334
|
+
code=${`${pkgManager} ${useNpm ? 'run ' : ''}serve`}
|
|
258
335
|
Serves the built website locally.
|
|
259
336
|
|
|
260
337
|
code=${`${pkgManager} deploy`}
|
|
@@ -268,4 +345,3 @@ We recommend that you begin by typing:
|
|
|
268
345
|
Happy building awesome websites!
|
|
269
346
|
`;
|
|
270
347
|
}
|
|
271
|
-
exports.default = init;
|
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-docusaurus",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.17",
|
|
4
4
|
"description": "Create Docusaurus apps easily.",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"repository": {
|
|
6
7
|
"type": "git",
|
|
7
8
|
"url": "https://github.com/facebook/docusaurus.git",
|
|
@@ -15,29 +16,27 @@
|
|
|
15
16
|
"build": "tsc",
|
|
16
17
|
"watch": "tsc --watch"
|
|
17
18
|
},
|
|
18
|
-
"bin":
|
|
19
|
-
"create-docusaurus": "bin/index.js"
|
|
20
|
-
},
|
|
19
|
+
"bin": "bin/index.js",
|
|
21
20
|
"publishConfig": {
|
|
22
21
|
"access": "public"
|
|
23
22
|
},
|
|
24
23
|
"license": "MIT",
|
|
25
24
|
"dependencies": {
|
|
26
|
-
"@docusaurus/logger": "2.0.0-beta.
|
|
25
|
+
"@docusaurus/logger": "2.0.0-beta.17",
|
|
27
26
|
"commander": "^5.1.0",
|
|
28
|
-
"fs-extra": "^10.0.
|
|
29
|
-
"lodash": "^4.17.
|
|
30
|
-
"prompts": "^2.4.
|
|
31
|
-
"semver": "^7.3.
|
|
32
|
-
"shelljs": "^0.8.
|
|
33
|
-
"supports-color": "^
|
|
27
|
+
"fs-extra": "^10.0.1",
|
|
28
|
+
"lodash": "^4.17.21",
|
|
29
|
+
"prompts": "^2.4.2",
|
|
30
|
+
"semver": "^7.3.5",
|
|
31
|
+
"shelljs": "^0.8.5",
|
|
32
|
+
"supports-color": "^9.2.1",
|
|
34
33
|
"tslib": "^2.3.1"
|
|
35
34
|
},
|
|
36
|
-
"engines": {
|
|
37
|
-
"node": ">=14"
|
|
38
|
-
},
|
|
39
35
|
"devDependencies": {
|
|
40
36
|
"@types/supports-color": "^8.1.1"
|
|
41
37
|
},
|
|
42
|
-
"
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=14"
|
|
40
|
+
},
|
|
41
|
+
"gitHead": "0032c0b0480083227af2e1b4da2d3ee6ce992403"
|
|
43
42
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "docusaurus-2-classic-template",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.17",
|
|
4
4
|
"private": true,
|
|
5
5
|
"scripts": {
|
|
6
6
|
"docusaurus": "docusaurus",
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
"write-heading-ids": "docusaurus write-heading-ids"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@docusaurus/core": "2.0.0-beta.
|
|
18
|
-
"@docusaurus/preset-classic": "2.0.0-beta.
|
|
19
|
-
"@mdx-js/react": "^1.6.
|
|
17
|
+
"@docusaurus/core": "2.0.0-beta.17",
|
|
18
|
+
"@docusaurus/preset-classic": "2.0.0-beta.17",
|
|
19
|
+
"@mdx-js/react": "^1.6.22",
|
|
20
20
|
"clsx": "^1.1.1",
|
|
21
21
|
"prism-react-renderer": "^1.2.1",
|
|
22
22
|
"react": "^17.0.1",
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import clsx from 'clsx';
|
|
3
|
-
import styles from './
|
|
3
|
+
import styles from './styles.module.css';
|
|
4
4
|
|
|
5
5
|
const FeatureList = [
|
|
6
6
|
{
|
|
7
7
|
title: 'Easy to Use',
|
|
8
|
-
Svg: require('
|
|
8
|
+
Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default,
|
|
9
9
|
description: (
|
|
10
10
|
<>
|
|
11
11
|
Docusaurus was designed from the ground up to be easily installed and
|
|
@@ -15,7 +15,7 @@ const FeatureList = [
|
|
|
15
15
|
},
|
|
16
16
|
{
|
|
17
17
|
title: 'Focus on What Matters',
|
|
18
|
-
Svg: require('
|
|
18
|
+
Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default,
|
|
19
19
|
description: (
|
|
20
20
|
<>
|
|
21
21
|
Docusaurus lets you focus on your docs, and we'll do the chores. Go
|
|
@@ -25,7 +25,7 @@ const FeatureList = [
|
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
title: 'Powered by React',
|
|
28
|
-
Svg: require('
|
|
28
|
+
Svg: require('@site/static/img/undraw_docusaurus_react.svg').default,
|
|
29
29
|
description: (
|
|
30
30
|
<>
|
|
31
31
|
Extend or customize your website layout by reusing React. Docusaurus can
|
|
@@ -39,7 +39,7 @@ function Feature({Svg, title, description}) {
|
|
|
39
39
|
return (
|
|
40
40
|
<div className={clsx('col col--4')}>
|
|
41
41
|
<div className="text--center">
|
|
42
|
-
<Svg className={styles.featureSvg}
|
|
42
|
+
<Svg className={styles.featureSvg} role="img" />
|
|
43
43
|
</div>
|
|
44
44
|
<div className="text--center padding-horiz--md">
|
|
45
45
|
<h3>{title}</h3>
|
|
File without changes
|
|
@@ -6,16 +6,27 @@
|
|
|
6
6
|
|
|
7
7
|
/* You can override the default Infima variables here. */
|
|
8
8
|
:root {
|
|
9
|
-
--ifm-color-primary: #
|
|
10
|
-
--ifm-color-primary-dark:
|
|
11
|
-
--ifm-color-primary-darker:
|
|
12
|
-
--ifm-color-primary-darkest:
|
|
13
|
-
--ifm-color-primary-light:
|
|
14
|
-
--ifm-color-primary-lighter:
|
|
15
|
-
--ifm-color-primary-lightest:
|
|
9
|
+
--ifm-color-primary: #2e8555;
|
|
10
|
+
--ifm-color-primary-dark: #29784c;
|
|
11
|
+
--ifm-color-primary-darker: #277148;
|
|
12
|
+
--ifm-color-primary-darkest: #205d3b;
|
|
13
|
+
--ifm-color-primary-light: #33925d;
|
|
14
|
+
--ifm-color-primary-lighter: #359962;
|
|
15
|
+
--ifm-color-primary-lightest: #3cad6e;
|
|
16
16
|
--ifm-code-font-size: 95%;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
/* For readability concerns, you should choose a lighter palette in dark mode. */
|
|
20
|
+
[data-theme='dark'] {
|
|
21
|
+
--ifm-color-primary: #25c2a0;
|
|
22
|
+
--ifm-color-primary-dark: #21af90;
|
|
23
|
+
--ifm-color-primary-darker: #1fa588;
|
|
24
|
+
--ifm-color-primary-darkest: #1a8870;
|
|
25
|
+
--ifm-color-primary-light: #29d5b0;
|
|
26
|
+
--ifm-color-primary-lighter: #32d8b4;
|
|
27
|
+
--ifm-color-primary-lightest: #4fddbf;
|
|
28
|
+
}
|
|
29
|
+
|
|
19
30
|
.docusaurus-highlight-code-line {
|
|
20
31
|
background-color: rgba(0, 0, 0, 0.1);
|
|
21
32
|
display: block;
|
|
@@ -23,6 +34,6 @@
|
|
|
23
34
|
padding: 0 var(--ifm-pre-padding);
|
|
24
35
|
}
|
|
25
36
|
|
|
26
|
-
|
|
37
|
+
[data-theme='dark'] .docusaurus-highlight-code-line {
|
|
27
38
|
background-color: rgba(0, 0, 0, 0.3);
|
|
28
39
|
}
|
|
@@ -4,7 +4,7 @@ import Layout from '@theme/Layout';
|
|
|
4
4
|
import Link from '@docusaurus/Link';
|
|
5
5
|
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
6
6
|
import styles from './index.module.css';
|
|
7
|
-
import HomepageFeatures from '
|
|
7
|
+
import HomepageFeatures from '@site/src/components/HomepageFeatures';
|
|
8
8
|
|
|
9
9
|
function HomepageHeader() {
|
|
10
10
|
const {siteConfig} = useDocusaurusContext();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "docusaurus-2-classic-typescript-template",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.17",
|
|
4
4
|
"private": true,
|
|
5
5
|
"scripts": {
|
|
6
6
|
"docusaurus": "docusaurus",
|
|
@@ -15,18 +15,18 @@
|
|
|
15
15
|
"typecheck": "tsc"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@docusaurus/core": "2.0.0-beta.
|
|
19
|
-
"@docusaurus/preset-classic": "2.0.0-beta.
|
|
20
|
-
"@mdx-js/react": "^1.6.
|
|
18
|
+
"@docusaurus/core": "2.0.0-beta.17",
|
|
19
|
+
"@docusaurus/preset-classic": "2.0.0-beta.17",
|
|
20
|
+
"@mdx-js/react": "^1.6.22",
|
|
21
21
|
"clsx": "^1.1.1",
|
|
22
22
|
"prism-react-renderer": "^1.2.1",
|
|
23
23
|
"react": "^17.0.1",
|
|
24
24
|
"react-dom": "^17.0.1"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@docusaurus/module-type-aliases": "2.0.0-beta.
|
|
27
|
+
"@docusaurus/module-type-aliases": "2.0.0-beta.17",
|
|
28
28
|
"@tsconfig/docusaurus": "^1.0.4",
|
|
29
|
-
"typescript": "^4.
|
|
29
|
+
"typescript": "^4.6.2"
|
|
30
30
|
},
|
|
31
31
|
"browserslist": {
|
|
32
32
|
"production": [
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import clsx from 'clsx';
|
|
3
|
-
import styles from './
|
|
3
|
+
import styles from './styles.module.css';
|
|
4
4
|
|
|
5
5
|
type FeatureItem = {
|
|
6
6
|
title: string;
|
|
7
|
-
|
|
7
|
+
Svg: React.ComponentType<React.ComponentProps<'svg'>>;
|
|
8
8
|
description: JSX.Element;
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
const FeatureList: FeatureItem[] = [
|
|
12
12
|
{
|
|
13
13
|
title: 'Easy to Use',
|
|
14
|
-
|
|
14
|
+
Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default,
|
|
15
15
|
description: (
|
|
16
16
|
<>
|
|
17
17
|
Docusaurus was designed from the ground up to be easily installed and
|
|
@@ -21,7 +21,7 @@ const FeatureList: FeatureItem[] = [
|
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
title: 'Focus on What Matters',
|
|
24
|
-
|
|
24
|
+
Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default,
|
|
25
25
|
description: (
|
|
26
26
|
<>
|
|
27
27
|
Docusaurus lets you focus on your docs, and we'll do the chores. Go
|
|
@@ -31,7 +31,7 @@ const FeatureList: FeatureItem[] = [
|
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
title: 'Powered by React',
|
|
34
|
-
|
|
34
|
+
Svg: require('@site/static/img/undraw_docusaurus_react.svg').default,
|
|
35
35
|
description: (
|
|
36
36
|
<>
|
|
37
37
|
Extend or customize your website layout by reusing React. Docusaurus can
|
|
@@ -41,11 +41,11 @@ const FeatureList: FeatureItem[] = [
|
|
|
41
41
|
},
|
|
42
42
|
];
|
|
43
43
|
|
|
44
|
-
function Feature({title,
|
|
44
|
+
function Feature({title, Svg, description}: FeatureItem) {
|
|
45
45
|
return (
|
|
46
46
|
<div className={clsx('col col--4')}>
|
|
47
47
|
<div className="text--center">
|
|
48
|
-
<
|
|
48
|
+
<Svg className={styles.featureSvg} role="img" />
|
|
49
49
|
</div>
|
|
50
50
|
<div className="text--center padding-horiz--md">
|
|
51
51
|
<h3>{title}</h3>
|
|
@@ -4,7 +4,7 @@ import Layout from '@theme/Layout';
|
|
|
4
4
|
import Link from '@docusaurus/Link';
|
|
5
5
|
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
6
6
|
import styles from './index.module.css';
|
|
7
|
-
import HomepageFeatures from '
|
|
7
|
+
import HomepageFeatures from '@site/src/components/HomepageFeatures';
|
|
8
8
|
|
|
9
9
|
function HomepageHeader() {
|
|
10
10
|
const {siteConfig} = useDocusaurusContext();
|
|
@@ -52,7 +52,6 @@ module.exports = {
|
|
|
52
52
|
' ',
|
|
53
53
|
],
|
|
54
54
|
],
|
|
55
|
-
'react/jsx-closing-bracket-location': OFF, // Conflicts with Prettier.
|
|
56
55
|
'react/jsx-filename-extension': OFF,
|
|
57
56
|
'react-hooks/rules-of-hooks': ERROR,
|
|
58
57
|
'react/prop-types': OFF, // PropTypes aren't used much these days.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "docusaurus-2-facebook-template",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.17",
|
|
4
4
|
"private": true,
|
|
5
5
|
"scripts": {
|
|
6
6
|
"docusaurus": "docusaurus",
|
|
@@ -18,25 +18,25 @@
|
|
|
18
18
|
"format:diff": "prettier --config .prettierrc --list-different \"**/*.{js,jsx,ts,tsx,md,mdx}\""
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@docusaurus/core": "2.0.0-beta.
|
|
22
|
-
"@docusaurus/preset-classic": "2.0.0-beta.
|
|
23
|
-
"@mdx-js/react": "^1.6.
|
|
21
|
+
"@docusaurus/core": "2.0.0-beta.17",
|
|
22
|
+
"@docusaurus/preset-classic": "2.0.0-beta.17",
|
|
23
|
+
"@mdx-js/react": "^1.6.22",
|
|
24
24
|
"clsx": "^1.1.1",
|
|
25
25
|
"react": "^17.0.1",
|
|
26
26
|
"react-dom": "^17.0.1"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@babel/eslint-parser": "^7.16.3",
|
|
30
|
-
"eslint": "^8.
|
|
30
|
+
"eslint": "^8.8.0",
|
|
31
31
|
"eslint-config-airbnb": "^19.0.0",
|
|
32
|
-
"eslint-config-prettier": "^8.
|
|
32
|
+
"eslint-config-prettier": "^8.4.0",
|
|
33
33
|
"eslint-plugin-header": "^3.1.1",
|
|
34
34
|
"eslint-plugin-import": "^2.25.3",
|
|
35
35
|
"eslint-plugin-jsx-a11y": "^6.5.1",
|
|
36
|
-
"eslint-plugin-react": "^7.
|
|
36
|
+
"eslint-plugin-react": "^7.29.2",
|
|
37
37
|
"eslint-plugin-react-hooks": "^4.3.0",
|
|
38
|
-
"prettier": "^2.5.
|
|
39
|
-
"stylelint": "^
|
|
38
|
+
"prettier": "^2.5.1",
|
|
39
|
+
"stylelint": "^14.5.3"
|
|
40
40
|
},
|
|
41
41
|
"browserslist": {
|
|
42
42
|
"production": [
|
|
@@ -15,16 +15,27 @@
|
|
|
15
15
|
|
|
16
16
|
/* You can override the default Infima variables here. */
|
|
17
17
|
:root {
|
|
18
|
-
--ifm-color-primary: #
|
|
19
|
-
--ifm-color-primary-dark:
|
|
20
|
-
--ifm-color-primary-darker:
|
|
21
|
-
--ifm-color-primary-darkest:
|
|
22
|
-
--ifm-color-primary-light:
|
|
23
|
-
--ifm-color-primary-lighter:
|
|
24
|
-
--ifm-color-primary-lightest:
|
|
18
|
+
--ifm-color-primary: #2e8555;
|
|
19
|
+
--ifm-color-primary-dark: #29784c;
|
|
20
|
+
--ifm-color-primary-darker: #277148;
|
|
21
|
+
--ifm-color-primary-darkest: #205d3b;
|
|
22
|
+
--ifm-color-primary-light: #33925d;
|
|
23
|
+
--ifm-color-primary-lighter: #359962;
|
|
24
|
+
--ifm-color-primary-lightest: #3cad6e;
|
|
25
25
|
--ifm-code-font-size: 95%;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
/* For readability concerns, you should choose a lighter palette in dark mode. */
|
|
29
|
+
[data-theme='dark'] {
|
|
30
|
+
--ifm-color-primary: #25c2a0;
|
|
31
|
+
--ifm-color-primary-dark: #21af90;
|
|
32
|
+
--ifm-color-primary-darker: #1fa588;
|
|
33
|
+
--ifm-color-primary-darkest: #1a8870;
|
|
34
|
+
--ifm-color-primary-light: #29d5b0;
|
|
35
|
+
--ifm-color-primary-lighter: #32d8b4;
|
|
36
|
+
--ifm-color-primary-lightest: #4fddbf;
|
|
37
|
+
}
|
|
38
|
+
|
|
28
39
|
.docusaurus-highlight-code-line {
|
|
29
40
|
background-color: rgb(72, 77, 91);
|
|
30
41
|
display: block;
|
|
@@ -12,24 +12,36 @@ Get started by **creating a new site**.
|
|
|
12
12
|
|
|
13
13
|
Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**.
|
|
14
14
|
|
|
15
|
+
### What you'll need
|
|
16
|
+
|
|
17
|
+
- [Node.js](https://nodejs.org/en/download/) version 14 or above:
|
|
18
|
+
- When installing Node.js, you are recommended to check all checkboxes related to dependencies.
|
|
19
|
+
|
|
15
20
|
## Generate a new site
|
|
16
21
|
|
|
17
|
-
Generate a new Docusaurus site using the **classic template
|
|
22
|
+
Generate a new Docusaurus site using the **classic template**.
|
|
18
23
|
|
|
19
|
-
|
|
24
|
+
The classic template will automatically be added to your project after you run the command:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
20
27
|
npm init docusaurus@latest my-website classic
|
|
21
28
|
```
|
|
22
29
|
|
|
30
|
+
You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor.
|
|
31
|
+
|
|
32
|
+
The command also installs all necessary dependencies you need to run Docusaurus.
|
|
33
|
+
|
|
23
34
|
## Start your site
|
|
24
35
|
|
|
25
36
|
Run the development server:
|
|
26
37
|
|
|
27
|
-
```
|
|
38
|
+
```bash
|
|
28
39
|
cd my-website
|
|
29
|
-
|
|
30
|
-
npx docusaurus start
|
|
40
|
+
npm run start
|
|
31
41
|
```
|
|
32
42
|
|
|
33
|
-
|
|
43
|
+
The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there.
|
|
44
|
+
|
|
45
|
+
The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/.
|
|
34
46
|
|
|
35
|
-
Open `docs/intro.md` and edit some lines: the site **reloads automatically** and displays your changes.
|
|
47
|
+
Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes.
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<svg xmlns="http://www.w3.org/2000/svg" width="1088" height="687.962" viewBox="0 0 1088 687.962">
|
|
2
|
+
<title>Easy to Use</title>
|
|
2
3
|
<g id="Group_12" data-name="Group 12" transform="translate(-57 -56)">
|
|
3
4
|
<g id="Group_11" data-name="Group 11" transform="translate(57 56)">
|
|
4
5
|
<path id="Path_83" data-name="Path 83" d="M1017.81,560.461c-5.27,45.15-16.22,81.4-31.25,110.31-20,38.52-54.21,54.04-84.77,70.28a193.275,193.275,0,0,1-27.46,11.94c-55.61,19.3-117.85,14.18-166.74,3.99a657.282,657.282,0,0,0-104.09-13.16q-14.97-.675-29.97-.67c-15.42.02-293.07,5.29-360.67-131.57-16.69-33.76-28.13-75-32.24-125.27-11.63-142.12,52.29-235.46,134.74-296.47,155.97-115.41,369.76-110.57,523.43,7.88C941.15,276.621,1036.99,396.031,1017.81,560.461Z" transform="translate(-56 -106.019)" fill="#3f3d56"/>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<svg xmlns="http://www.w3.org/2000/svg" width="1041.277" height="554.141" viewBox="0 0 1041.277 554.141">
|
|
2
|
+
<title>Powered by React</title>
|
|
2
3
|
<g id="Group_24" data-name="Group 24" transform="translate(-440 -263)">
|
|
3
4
|
<g id="Group_23" data-name="Group 23" transform="translate(439.989 262.965)">
|
|
4
5
|
<path id="Path_299" data-name="Path 299" d="M1040.82,611.12q-1.74,3.75-3.47,7.4-2.7,5.67-5.33,11.12c-.78,1.61-1.56,3.19-2.32,4.77-8.6,17.57-16.63,33.11-23.45,45.89A73.21,73.21,0,0,1,942.44,719l-151.65,1.65h-1.6l-13,.14-11.12.12-34.1.37h-1.38l-17.36.19h-.53l-107,1.16-95.51,1-11.11.12-69,.75H429l-44.75.48h-.48l-141.5,1.53-42.33.46a87.991,87.991,0,0,1-10.79-.54h0c-1.22-.14-2.44-.3-3.65-.49a87.38,87.38,0,0,1-51.29-27.54C116,678.37,102.75,655,93.85,629.64q-1.93-5.49-3.6-11.12C59.44,514.37,97,380,164.6,290.08q4.25-5.64,8.64-11l.07-.08c20.79-25.52,44.1-46.84,68.93-62,44-26.91,92.75-34.49,140.7-11.9,40.57,19.12,78.45,28.11,115.17,30.55,3.71.24,7.42.42,11.11.53,84.23,2.65,163.17-27.7,255.87-47.29,3.69-.78,7.39-1.55,11.12-2.28,66.13-13.16,139.49-20.1,226.73-5.51a189.089,189.089,0,0,1,26.76,6.4q5.77,1.86,11.12,4c41.64,16.94,64.35,48.24,74,87.46q1.37,5.46,2.37,11.11C1134.3,384.41,1084.19,518.23,1040.82,611.12Z" transform="translate(-79.34 -172.91)" fill="#f2f2f2"/>
|
|
@@ -1 +1,40 @@
|
|
|
1
|
-
<svg id="ac356da0-b129-4ca5-aecc-4700531dd101" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="1129" height="663" viewBox="0 0 1129 663"><title>docu_tree</title><circle cx="321" cy="321" r="321" fill="#f2f2f2"/><ellipse cx="559" cy="635.49998" rx="514" ry="27.50002" fill="#3f3d56"/><ellipse cx="558" cy="627" rx="460" ry="22" opacity="0.2"/><rect x="131" y="152.5" width="840" height="50" fill="#3f3d56"/><path d="M166.5,727.3299A21.67009,21.67009,0,0,0,188.1701,749H984.8299A21.67009,21.67009,0,0,0,1006.5,727.3299V296h-840Z" transform="translate(-35.5 -118.5)" fill="#3f3d56"/><path d="M984.8299,236H188.1701A21.67009,21.67009,0,0,0,166.5,257.6701V296h840V257.6701A21.67009,21.67009,0,0,0,984.8299,236Z" transform="translate(-35.5 -118.5)" fill="#3f3d56"/><path d="M984.8299,236H188.1701A21.67009,21.67009,0,0,0,166.5,257.6701V296h840V257.6701A21.67009,21.67009,0,0,0,984.8299,236Z" transform="translate(-35.5 -118.5)" opacity="0.2"/><circle cx="181" cy="147.5" r="13" fill="#3f3d56"/><circle cx="217" cy="147.5" r="13" fill="#3f3d56"/><circle cx="253" cy="147.5" r="13" fill="#3f3d56"/><rect x="168" y="213.5" width="337" height="386" rx="5.33505" fill="#606060"/><rect x="603" y="272.5" width="284" height="22" rx="5.47638" fill="#2e8555"/><rect x="537" y="352.5" width="416" height="15" rx="5.47638" fill="#2e8555"/><rect x="537" y="396.5" width="416" height="15" rx="5.47638" fill="#2e8555"/><rect x="537" y="440.5" width="416" height="15" rx="5.47638" fill="#2e8555"/><rect x="537" y="484.5" width="416" height="15" rx="5.47638" fill="#2e8555"/><rect x="865" y="552.5" width="88" height="26" rx="7.02756" fill="#3ecc5f"/><path d="M1088.60287,624.61594a30.11371,30.11371,0,0,0,3.98291-15.266c0-13.79652-8.54358-24.98081-19.08256-24.98081s-19.08256,11.18429-19.08256,24.98081a30.11411,30.11411,0,0,0,3.98291,15.266,31.248,31.248,0,0,0,0,30.53213,31.248,31.248,0,0,0,0,30.53208,31.248,31.248,0,0,0,0,30.53208,30.11408,30.11408,0,0,0-3.98291,15.266c0,13.79652,8.54353,24.98081,19.08256,24.98081s19.08256-11.18429,19.08256-24.98081a30.11368,30.11368,0,0,0-3.98291-15.266,31.248,31.248,0,0,0,0-30.53208,31.248,31.248,0,0,0,0-30.53208,31.248,31.248,0,0,0,0-30.53213Z" transform="translate(-35.5 -118.5)" fill="#3f3d56"/><ellipse cx="1038.00321" cy="460.31783" rx="19.08256" ry="24.9808" fill="#3f3d56"/><ellipse cx="1038.00321" cy="429.78574" rx="19.08256" ry="24.9808" fill="#3f3d56"/><path d="M1144.93871,339.34489a91.61081,91.61081,0,0,0,7.10658-10.46092l-50.141-8.23491,54.22885.4033a91.566,91.566,0,0,0,1.74556-72.42605l-72.75449,37.74139,67.09658-49.32086a91.41255,91.41255,0,1,0-150.971,102.29805,91.45842,91.45842,0,0,0-10.42451,16.66946l65.0866,33.81447-69.40046-23.292a91.46011,91.46011,0,0,0,14.73837,85.83669,91.40575,91.40575,0,1,0,143.68892,0,91.41808,91.41808,0,0,0,0-113.02862Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd"/><path d="M981.6885,395.8592a91.01343,91.01343,0,0,0,19.56129,56.51431,91.40575,91.40575,0,1,0,143.68892,0C1157.18982,436.82067,981.6885,385.60008,981.6885,395.8592Z" transform="translate(-35.5 -118.5)" opacity="0.1"/><path d="M365.62,461.43628H477.094v45.12043H365.62Z" transform="translate(-35.5 -118.5)" fill="#fff" fill-rule="evenodd"/><path d="M264.76252,608.74122a26.50931,26.50931,0,0,1-22.96231-13.27072,26.50976,26.50976,0,0,0,22.96231,39.81215H291.304V608.74122Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd"/><path d="M384.17242,468.57061l92.92155-5.80726V449.49263a26.54091,26.54091,0,0,0-26.54143-26.54143H331.1161l-3.31768-5.74622a3.83043,3.83043,0,0,0-6.63536,0l-3.31768,5.74622-3.31767-5.74622a3.83043,3.83043,0,0,0-6.63536,0l-3.31768,5.74622L301.257,417.205a3.83043,3.83043,0,0,0-6.63536,0L291.304,422.9512c-.02919,0-.05573.004-.08625.004l-5.49674-5.49541a3.8293,3.8293,0,0,0-6.4071,1.71723l-1.81676,6.77338L270.607,424.1031a3.82993,3.82993,0,0,0-4.6912,4.69253l1.84463,6.89148-6.77072,1.81411a3.8315,3.8315,0,0,0-1.71988,6.40975l5.49673,5.49673c0,.02787-.004.05574-.004.08493l-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74621,3.31768L259.0163,466.081a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31767a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31767a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768L259.0163,558.976a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768A26.54091,26.54091,0,0,0,291.304,635.28265H450.55254A26.5409,26.5409,0,0,0,477.094,608.74122V502.5755l-92.92155-5.80727a14.12639,14.12639,0,0,1,0-28.19762" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd"/><path d="M424.01111,635.28265h39.81214V582.19979H424.01111Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd"/><path d="M490.36468,602.10586a6.60242,6.60242,0,0,0-.848.08493c-.05042-.19906-.09821-.39945-.15393-.59852A6.62668,6.62668,0,1,0,482.80568,590.21q-.2203-.22491-.44457-.44589a6.62391,6.62391,0,1,0-11.39689-6.56369c-.1964-.05575-.39414-.10218-.59056-.15262a6.63957,6.63957,0,1,0-13.10086,0c-.1964.05042-.39414.09687-.59056.15262a6.62767,6.62767,0,1,0-11.39688,6.56369,26.52754,26.52754,0,1,0,44.23127,25.52756,6.6211,6.6211,0,1,0,.848-13.18579" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd"/><path d="M437.28182,555.65836H477.094V529.11693H437.28182Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd"/><path d="M490.36468,545.70532a3.31768,3.31768,0,0,0,0-6.63536,3.41133,3.41133,0,0,0-.42333.04247c-.02655-.09953-.04911-.19907-.077-.29859a3.319,3.319,0,0,0-1.278-6.37923,3.28174,3.28174,0,0,0-2.00122.68742q-.10947-.11346-.22294-.22295a3.282,3.282,0,0,0,.67149-1.98265,3.31768,3.31768,0,0,0-6.37-1.2992,13.27078,13.27078,0,1,0,0,25.54082,3.31768,3.31768,0,0,0,6.37-1.2992,3.282,3.282,0,0,0-.67149-1.98265q.11347-.10947.22294-.22294a3.28174,3.28174,0,0,0,2.00122.68742,3.31768,3.31768,0,0,0,1.278-6.37923c.02786-.0982.05042-.19907.077-.29859a3.41325,3.41325,0,0,0,.42333.04246" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd"/><path d="M317.84538,466.081a3.31768,3.31768,0,0,1-3.31767-3.31768,9.953,9.953,0,1,0-19.90608,0,3.31768,3.31768,0,1,1-6.63535,0,16.58839,16.58839,0,1,1,33.17678,0,3.31768,3.31768,0,0,1-3.31768,3.31768" transform="translate(-35.5 -118.5)" fill-rule="evenodd"/><path d="M370.92825,635.28265h79.62429A26.5409,26.5409,0,0,0,477.094,608.74122v-92.895H397.46968a26.54091,26.54091,0,0,0-26.54143,26.54143Z" transform="translate(-35.5 -118.5)" fill="#ffff50" fill-rule="evenodd"/><path d="M457.21444,556.98543H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,1,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,1,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0-66.10674H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.29459H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414M477.094,474.19076c-.01592,0-.0292-.008-.04512-.00663-4.10064.13934-6.04083,4.24132-7.75274,7.86024-1.78623,3.78215-3.16771,6.24122-5.43171,6.16691-2.50685-.09024-3.94007-2.92222-5.45825-5.91874-1.74377-3.44243-3.73438-7.34667-7.91333-7.20069-4.04227.138-5.98907,3.70784-7.70631,6.857-1.82738,3.35484-3.07084,5.39455-5.46887,5.30033-2.55727-.09289-3.91619-2.39536-5.48877-5.06013-1.75306-2.96733-3.77951-6.30359-7.8775-6.18946-3.97326.13669-5.92537,3.16507-7.64791,5.83912-1.82207,2.82666-3.09872,4.5492-5.52725,4.447-2.61832-.09289-3.9706-2.00388-5.53522-4.21611-1.757-2.4856-3.737-5.299-7.82308-5.16231-3.88567.13271-5.83779,2.61434-7.559,4.80135-1.635,2.07555-2.9116,3.71846-5.61218,3.615a1.32793,1.32793,0,1,0-.09555,2.65414c4.00377.134,6.03154-2.38873,7.79257-4.6275,1.562-1.9853,2.91027-3.69855,5.56441-3.78879,2.55594-.10882,3.75429,1.47968,5.56707,4.04093,1.7212,2.43385,3.67465,5.19416,7.60545,5.33616,4.11789.138,6.09921-2.93946,7.8536-5.66261,1.56861-2.43385,2.92221-4.53461,5.50734-4.62352,2.37944-.08892,3.67466,1.79154,5.50072,4.885,1.72121,2.91557,3.67069,6.21865,7.67977,6.36463,4.14709.14332,6.14965-3.47693,7.89475-6.68181,1.51155-2.77092,2.93814-5.38791,5.46621-5.4755,2.37944-.05573,3.62025,2.11668,5.45558,5.74622,1.71459,3.388,3.65875,7.22591,7.73019,7.37321l.22429.004c4.06614,0,5.99571-4.08074,7.70364-7.68905,1.51154-3.19825,2.94211-6.21069,5.3972-6.33411Z" transform="translate(-35.5 -118.5)" fill-rule="evenodd"/><path d="M344.38682,635.28265h53.08286V582.19979H344.38682Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd"/><path d="M424.01111,602.10586a6.60242,6.60242,0,0,0-.848.08493c-.05042-.19906-.09821-.39945-.15394-.59852A6.62667,6.62667,0,1,0,416.45211,590.21q-.2203-.22491-.44458-.44589a6.62391,6.62391,0,1,0-11.39689-6.56369c-.1964-.05575-.39413-.10218-.59054-.15262a6.63957,6.63957,0,1,0-13.10084,0c-.19641.05042-.39414.09687-.59055.15262a6.62767,6.62767,0,1,0-11.39689,6.56369,26.52755,26.52755,0,1,0,44.2313,25.52756,6.6211,6.6211,0,1,0,.848-13.18579" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd"/><path d="M344.38682,555.65836h53.08286V529.11693H344.38682Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd"/><path d="M410.74039,545.70532a3.31768,3.31768,0,1,0,0-6.63536,3.41133,3.41133,0,0,0-.42333.04247c-.02655-.09953-.04911-.19907-.077-.29859a3.319,3.319,0,0,0-1.278-6.37923,3.28174,3.28174,0,0,0-2.00122.68742q-.10947-.11346-.22294-.22295a3.282,3.282,0,0,0,.67149-1.98265,3.31768,3.31768,0,0,0-6.37-1.2992,13.27078,13.27078,0,1,0,0,25.54082,3.31768,3.31768,0,0,0,6.37-1.2992,3.282,3.282,0,0,0-.67149-1.98265q.11347-.10947.22294-.22294a3.28174,3.28174,0,0,0,2.00122.68742,3.31768,3.31768,0,0,0,1.278-6.37923c.02786-.0982.05042-.19907.077-.29859a3.41325,3.41325,0,0,0,.42333.04246" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd"/><path d="M424.01111,447.8338a3.60349,3.60349,0,0,1-.65028-.06636,3.34415,3.34415,0,0,1-.62372-.18579,3.44679,3.44679,0,0,1-.572-.30522,5.02708,5.02708,0,0,1-.50429-.4114,3.88726,3.88726,0,0,1-.41007-.50428,3.27532,3.27532,0,0,1-.55737-1.84463,3.60248,3.60248,0,0,1,.06636-.65027,3.82638,3.82638,0,0,1,.18447-.62373,3.48858,3.48858,0,0,1,.30656-.57064,3.197,3.197,0,0,1,.91436-.91568,3.44685,3.44685,0,0,1,.572-.30523,3.344,3.344,0,0,1,.62372-.18578,3.06907,3.06907,0,0,1,1.30053,0,3.22332,3.22332,0,0,1,1.19436.491,5.02835,5.02835,0,0,1,.50429.41139,4.8801,4.8801,0,0,1,.41139.50429,3.38246,3.38246,0,0,1,.30522.57064,3.47806,3.47806,0,0,1,.25215,1.274A3.36394,3.36394,0,0,1,426.36,446.865a5.02708,5.02708,0,0,1-.50429.4114,3.3057,3.3057,0,0,1-1.84463.55737m26.54143-1.65884a3.38754,3.38754,0,0,1-2.35024-.96877,5.04185,5.04185,0,0,1-.41007-.50428,3.27532,3.27532,0,0,1-.55737-1.84463,3.38659,3.38659,0,0,1,.96744-2.34892,5.02559,5.02559,0,0,1,.50429-.41139,3.44685,3.44685,0,0,1,.572-.30523,3.3432,3.3432,0,0,1,.62373-.18579,3.06952,3.06952,0,0,1,1.30052,0,3.22356,3.22356,0,0,1,1.19436.491,5.02559,5.02559,0,0,1,.50429.41139,3.38792,3.38792,0,0,1,.96876,2.34892,3.72635,3.72635,0,0,1-.06636.65026,3.37387,3.37387,0,0,1-.18579.62373,4.71469,4.71469,0,0,1-.30522.57064,4.8801,4.8801,0,0,1-.41139.50429,5.02559,5.02559,0,0,1-.50429.41139,3.30547,3.30547,0,0,1-1.84463.55737" transform="translate(-35.5 -118.5)" fill-rule="evenodd"/></svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1129" height="663" viewBox="0 0 1129 663">
|
|
2
|
+
<title>Focus on What Matters</title>
|
|
3
|
+
<circle cx="321" cy="321" r="321" fill="#f2f2f2" />
|
|
4
|
+
<ellipse cx="559" cy="635.49998" rx="514" ry="27.50002" fill="#3f3d56" />
|
|
5
|
+
<ellipse cx="558" cy="627" rx="460" ry="22" opacity="0.2" />
|
|
6
|
+
<rect x="131" y="152.5" width="840" height="50" fill="#3f3d56" />
|
|
7
|
+
<path d="M166.5,727.3299A21.67009,21.67009,0,0,0,188.1701,749H984.8299A21.67009,21.67009,0,0,0,1006.5,727.3299V296h-840Z" transform="translate(-35.5 -118.5)" fill="#3f3d56" />
|
|
8
|
+
<path d="M984.8299,236H188.1701A21.67009,21.67009,0,0,0,166.5,257.6701V296h840V257.6701A21.67009,21.67009,0,0,0,984.8299,236Z" transform="translate(-35.5 -118.5)" fill="#3f3d56" />
|
|
9
|
+
<path d="M984.8299,236H188.1701A21.67009,21.67009,0,0,0,166.5,257.6701V296h840V257.6701A21.67009,21.67009,0,0,0,984.8299,236Z" transform="translate(-35.5 -118.5)" opacity="0.2" />
|
|
10
|
+
<circle cx="181" cy="147.5" r="13" fill="#3f3d56" />
|
|
11
|
+
<circle cx="217" cy="147.5" r="13" fill="#3f3d56" />
|
|
12
|
+
<circle cx="253" cy="147.5" r="13" fill="#3f3d56" />
|
|
13
|
+
<rect x="168" y="213.5" width="337" height="386" rx="5.33505" fill="#606060" />
|
|
14
|
+
<rect x="603" y="272.5" width="284" height="22" rx="5.47638" fill="#2e8555" />
|
|
15
|
+
<rect x="537" y="352.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
|
|
16
|
+
<rect x="537" y="396.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
|
|
17
|
+
<rect x="537" y="440.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
|
|
18
|
+
<rect x="537" y="484.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
|
|
19
|
+
<rect x="865" y="552.5" width="88" height="26" rx="7.02756" fill="#3ecc5f" />
|
|
20
|
+
<path d="M1088.60287,624.61594a30.11371,30.11371,0,0,0,3.98291-15.266c0-13.79652-8.54358-24.98081-19.08256-24.98081s-19.08256,11.18429-19.08256,24.98081a30.11411,30.11411,0,0,0,3.98291,15.266,31.248,31.248,0,0,0,0,30.53213,31.248,31.248,0,0,0,0,30.53208,31.248,31.248,0,0,0,0,30.53208,30.11408,30.11408,0,0,0-3.98291,15.266c0,13.79652,8.54353,24.98081,19.08256,24.98081s19.08256-11.18429,19.08256-24.98081a30.11368,30.11368,0,0,0-3.98291-15.266,31.248,31.248,0,0,0,0-30.53208,31.248,31.248,0,0,0,0-30.53208,31.248,31.248,0,0,0,0-30.53213Z" transform="translate(-35.5 -118.5)" fill="#3f3d56" />
|
|
21
|
+
<ellipse cx="1038.00321" cy="460.31783" rx="19.08256" ry="24.9808" fill="#3f3d56" />
|
|
22
|
+
<ellipse cx="1038.00321" cy="429.78574" rx="19.08256" ry="24.9808" fill="#3f3d56" />
|
|
23
|
+
<path d="M1144.93871,339.34489a91.61081,91.61081,0,0,0,7.10658-10.46092l-50.141-8.23491,54.22885.4033a91.566,91.566,0,0,0,1.74556-72.42605l-72.75449,37.74139,67.09658-49.32086a91.41255,91.41255,0,1,0-150.971,102.29805,91.45842,91.45842,0,0,0-10.42451,16.66946l65.0866,33.81447-69.40046-23.292a91.46011,91.46011,0,0,0,14.73837,85.83669,91.40575,91.40575,0,1,0,143.68892,0,91.41808,91.41808,0,0,0,0-113.02862Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
|
|
24
|
+
<path d="M981.6885,395.8592a91.01343,91.01343,0,0,0,19.56129,56.51431,91.40575,91.40575,0,1,0,143.68892,0C1157.18982,436.82067,981.6885,385.60008,981.6885,395.8592Z" transform="translate(-35.5 -118.5)" opacity="0.1" />
|
|
25
|
+
<path d="M365.62,461.43628H477.094v45.12043H365.62Z" transform="translate(-35.5 -118.5)" fill="#fff" fill-rule="evenodd" />
|
|
26
|
+
<path d="M264.76252,608.74122a26.50931,26.50931,0,0,1-22.96231-13.27072,26.50976,26.50976,0,0,0,22.96231,39.81215H291.304V608.74122Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
|
|
27
|
+
<path d="M384.17242,468.57061l92.92155-5.80726V449.49263a26.54091,26.54091,0,0,0-26.54143-26.54143H331.1161l-3.31768-5.74622a3.83043,3.83043,0,0,0-6.63536,0l-3.31768,5.74622-3.31767-5.74622a3.83043,3.83043,0,0,0-6.63536,0l-3.31768,5.74622L301.257,417.205a3.83043,3.83043,0,0,0-6.63536,0L291.304,422.9512c-.02919,0-.05573.004-.08625.004l-5.49674-5.49541a3.8293,3.8293,0,0,0-6.4071,1.71723l-1.81676,6.77338L270.607,424.1031a3.82993,3.82993,0,0,0-4.6912,4.69253l1.84463,6.89148-6.77072,1.81411a3.8315,3.8315,0,0,0-1.71988,6.40975l5.49673,5.49673c0,.02787-.004.05574-.004.08493l-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74621,3.31768L259.0163,466.081a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31767a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31767a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768L259.0163,558.976a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768A26.54091,26.54091,0,0,0,291.304,635.28265H450.55254A26.5409,26.5409,0,0,0,477.094,608.74122V502.5755l-92.92155-5.80727a14.12639,14.12639,0,0,1,0-28.19762" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
|
|
28
|
+
<path d="M424.01111,635.28265h39.81214V582.19979H424.01111Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
|
|
29
|
+
<path d="M490.36468,602.10586a6.60242,6.60242,0,0,0-.848.08493c-.05042-.19906-.09821-.39945-.15393-.59852A6.62668,6.62668,0,1,0,482.80568,590.21q-.2203-.22491-.44457-.44589a6.62391,6.62391,0,1,0-11.39689-6.56369c-.1964-.05575-.39414-.10218-.59056-.15262a6.63957,6.63957,0,1,0-13.10086,0c-.1964.05042-.39414.09687-.59056.15262a6.62767,6.62767,0,1,0-11.39688,6.56369,26.52754,26.52754,0,1,0,44.23127,25.52756,6.6211,6.6211,0,1,0,.848-13.18579" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
|
|
30
|
+
<path d="M437.28182,555.65836H477.094V529.11693H437.28182Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
|
|
31
|
+
<path d="M490.36468,545.70532a3.31768,3.31768,0,0,0,0-6.63536,3.41133,3.41133,0,0,0-.42333.04247c-.02655-.09953-.04911-.19907-.077-.29859a3.319,3.319,0,0,0-1.278-6.37923,3.28174,3.28174,0,0,0-2.00122.68742q-.10947-.11346-.22294-.22295a3.282,3.282,0,0,0,.67149-1.98265,3.31768,3.31768,0,0,0-6.37-1.2992,13.27078,13.27078,0,1,0,0,25.54082,3.31768,3.31768,0,0,0,6.37-1.2992,3.282,3.282,0,0,0-.67149-1.98265q.11347-.10947.22294-.22294a3.28174,3.28174,0,0,0,2.00122.68742,3.31768,3.31768,0,0,0,1.278-6.37923c.02786-.0982.05042-.19907.077-.29859a3.41325,3.41325,0,0,0,.42333.04246" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
|
|
32
|
+
<path d="M317.84538,466.081a3.31768,3.31768,0,0,1-3.31767-3.31768,9.953,9.953,0,1,0-19.90608,0,3.31768,3.31768,0,1,1-6.63535,0,16.58839,16.58839,0,1,1,33.17678,0,3.31768,3.31768,0,0,1-3.31768,3.31768" transform="translate(-35.5 -118.5)" fill-rule="evenodd" />
|
|
33
|
+
<path d="M370.92825,635.28265h79.62429A26.5409,26.5409,0,0,0,477.094,608.74122v-92.895H397.46968a26.54091,26.54091,0,0,0-26.54143,26.54143Z" transform="translate(-35.5 -118.5)" fill="#ffff50" fill-rule="evenodd" />
|
|
34
|
+
<path d="M457.21444,556.98543H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,1,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,1,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0-66.10674H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.29459H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414M477.094,474.19076c-.01592,0-.0292-.008-.04512-.00663-4.10064.13934-6.04083,4.24132-7.75274,7.86024-1.78623,3.78215-3.16771,6.24122-5.43171,6.16691-2.50685-.09024-3.94007-2.92222-5.45825-5.91874-1.74377-3.44243-3.73438-7.34667-7.91333-7.20069-4.04227.138-5.98907,3.70784-7.70631,6.857-1.82738,3.35484-3.07084,5.39455-5.46887,5.30033-2.55727-.09289-3.91619-2.39536-5.48877-5.06013-1.75306-2.96733-3.77951-6.30359-7.8775-6.18946-3.97326.13669-5.92537,3.16507-7.64791,5.83912-1.82207,2.82666-3.09872,4.5492-5.52725,4.447-2.61832-.09289-3.9706-2.00388-5.53522-4.21611-1.757-2.4856-3.737-5.299-7.82308-5.16231-3.88567.13271-5.83779,2.61434-7.559,4.80135-1.635,2.07555-2.9116,3.71846-5.61218,3.615a1.32793,1.32793,0,1,0-.09555,2.65414c4.00377.134,6.03154-2.38873,7.79257-4.6275,1.562-1.9853,2.91027-3.69855,5.56441-3.78879,2.55594-.10882,3.75429,1.47968,5.56707,4.04093,1.7212,2.43385,3.67465,5.19416,7.60545,5.33616,4.11789.138,6.09921-2.93946,7.8536-5.66261,1.56861-2.43385,2.92221-4.53461,5.50734-4.62352,2.37944-.08892,3.67466,1.79154,5.50072,4.885,1.72121,2.91557,3.67069,6.21865,7.67977,6.36463,4.14709.14332,6.14965-3.47693,7.89475-6.68181,1.51155-2.77092,2.93814-5.38791,5.46621-5.4755,2.37944-.05573,3.62025,2.11668,5.45558,5.74622,1.71459,3.388,3.65875,7.22591,7.73019,7.37321l.22429.004c4.06614,0,5.99571-4.08074,7.70364-7.68905,1.51154-3.19825,2.94211-6.21069,5.3972-6.33411Z" transform="translate(-35.5 -118.5)" fill-rule="evenodd" />
|
|
35
|
+
<path d="M344.38682,635.28265h53.08286V582.19979H344.38682Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
|
|
36
|
+
<path d="M424.01111,602.10586a6.60242,6.60242,0,0,0-.848.08493c-.05042-.19906-.09821-.39945-.15394-.59852A6.62667,6.62667,0,1,0,416.45211,590.21q-.2203-.22491-.44458-.44589a6.62391,6.62391,0,1,0-11.39689-6.56369c-.1964-.05575-.39413-.10218-.59054-.15262a6.63957,6.63957,0,1,0-13.10084,0c-.19641.05042-.39414.09687-.59055.15262a6.62767,6.62767,0,1,0-11.39689,6.56369,26.52755,26.52755,0,1,0,44.2313,25.52756,6.6211,6.6211,0,1,0,.848-13.18579" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
|
|
37
|
+
<path d="M344.38682,555.65836h53.08286V529.11693H344.38682Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
|
|
38
|
+
<path d="M410.74039,545.70532a3.31768,3.31768,0,1,0,0-6.63536,3.41133,3.41133,0,0,0-.42333.04247c-.02655-.09953-.04911-.19907-.077-.29859a3.319,3.319,0,0,0-1.278-6.37923,3.28174,3.28174,0,0,0-2.00122.68742q-.10947-.11346-.22294-.22295a3.282,3.282,0,0,0,.67149-1.98265,3.31768,3.31768,0,0,0-6.37-1.2992,13.27078,13.27078,0,1,0,0,25.54082,3.31768,3.31768,0,0,0,6.37-1.2992,3.282,3.282,0,0,0-.67149-1.98265q.11347-.10947.22294-.22294a3.28174,3.28174,0,0,0,2.00122.68742,3.31768,3.31768,0,0,0,1.278-6.37923c.02786-.0982.05042-.19907.077-.29859a3.41325,3.41325,0,0,0,.42333.04246" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
|
|
39
|
+
<path d="M424.01111,447.8338a3.60349,3.60349,0,0,1-.65028-.06636,3.34415,3.34415,0,0,1-.62372-.18579,3.44679,3.44679,0,0,1-.572-.30522,5.02708,5.02708,0,0,1-.50429-.4114,3.88726,3.88726,0,0,1-.41007-.50428,3.27532,3.27532,0,0,1-.55737-1.84463,3.60248,3.60248,0,0,1,.06636-.65027,3.82638,3.82638,0,0,1,.18447-.62373,3.48858,3.48858,0,0,1,.30656-.57064,3.197,3.197,0,0,1,.91436-.91568,3.44685,3.44685,0,0,1,.572-.30523,3.344,3.344,0,0,1,.62372-.18578,3.06907,3.06907,0,0,1,1.30053,0,3.22332,3.22332,0,0,1,1.19436.491,5.02835,5.02835,0,0,1,.50429.41139,4.8801,4.8801,0,0,1,.41139.50429,3.38246,3.38246,0,0,1,.30522.57064,3.47806,3.47806,0,0,1,.25215,1.274A3.36394,3.36394,0,0,1,426.36,446.865a5.02708,5.02708,0,0,1-.50429.4114,3.3057,3.3057,0,0,1-1.84463.55737m26.54143-1.65884a3.38754,3.38754,0,0,1-2.35024-.96877,5.04185,5.04185,0,0,1-.41007-.50428,3.27532,3.27532,0,0,1-.55737-1.84463,3.38659,3.38659,0,0,1,.96744-2.34892,5.02559,5.02559,0,0,1,.50429-.41139,3.44685,3.44685,0,0,1,.572-.30523,3.3432,3.3432,0,0,1,.62373-.18579,3.06952,3.06952,0,0,1,1.30052,0,3.22356,3.22356,0,0,1,1.19436.491,5.02559,5.02559,0,0,1,.50429.41139,3.38792,3.38792,0,0,1,.96876,2.34892,3.72635,3.72635,0,0,1-.06636.65026,3.37387,3.37387,0,0,1-.18579.62373,4.71469,4.71469,0,0,1-.30522.57064,4.8801,4.8801,0,0,1-.41139.50429,5.02559,5.02559,0,0,1-.50429.41139,3.30547,3.30547,0,0,1-1.84463.55737" transform="translate(-35.5 -118.5)" fill-rule="evenodd" />
|
|
40
|
+
</svg>
|