mirror of
https://github.com/facebook/docusaurus.git
synced 2025-04-29 18:27:56 +02:00
refactor: move PerfLogger from core to @docusaurus/logger (#10480)
This commit is contained in:
parent
a47e8dda2d
commit
897ebbe3ca
14 changed files with 219 additions and 208 deletions
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import {createRequire} from 'module';
|
import {createRequire} from 'module';
|
||||||
import logger from '@docusaurus/logger';
|
import {logger} from '@docusaurus/logger';
|
||||||
import semver from 'semver';
|
import semver from 'semver';
|
||||||
import {program} from 'commander';
|
import {program} from 'commander';
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ import fs from 'fs-extra';
|
||||||
import {fileURLToPath} from 'url';
|
import {fileURLToPath} from 'url';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import logger from '@docusaurus/logger';
|
import {logger} from '@docusaurus/logger';
|
||||||
import shell from 'shelljs';
|
import shell from 'shelljs';
|
||||||
import prompts, {type Choice} from 'prompts';
|
import prompts, {type Choice} from 'prompts';
|
||||||
import supportsColor from 'supports-color';
|
import supportsColor from 'supports-color';
|
||||||
|
|
|
@ -5,196 +5,14 @@
|
||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import chalk from 'chalk';
|
import OriginalLogger from './logger';
|
||||||
import type {ReportingSeverity} from '@docusaurus/types';
|
|
||||||
|
|
||||||
type InterpolatableValue = string | number | (string | number)[];
|
export default OriginalLogger;
|
||||||
|
|
||||||
const path = (msg: unknown): string => chalk.cyan.underline(`"${String(msg)}"`);
|
// Extra named export to avoid problems in ESM modules
|
||||||
const url = (msg: unknown): string => chalk.cyan.underline(msg);
|
// Notably: core .mjs CLI + create-docusaurus
|
||||||
const name = (msg: unknown): string => chalk.blue.bold(msg);
|
// See https://github.com/facebook/docusaurus/pull/6661
|
||||||
const code = (msg: unknown): string => chalk.cyan(`\`${String(msg)}\``);
|
// See https://github.com/facebook/docusaurus/pull/7295
|
||||||
const subdue = (msg: unknown): string => chalk.gray(msg);
|
export const logger = OriginalLogger;
|
||||||
const num = (msg: unknown): string => chalk.yellow(msg);
|
|
||||||
|
|
||||||
function interpolate(
|
export {PerfLogger} from './perfLogger';
|
||||||
msgs: TemplateStringsArray,
|
|
||||||
...values: InterpolatableValue[]
|
|
||||||
): string {
|
|
||||||
let res = '';
|
|
||||||
values.forEach((value, idx) => {
|
|
||||||
const flag = msgs[idx]!.match(/[a-z]+=$/);
|
|
||||||
res += msgs[idx]!.replace(/[a-z]+=$/, '');
|
|
||||||
const format = (() => {
|
|
||||||
if (!flag) {
|
|
||||||
return (a: string | number) => a;
|
|
||||||
}
|
|
||||||
switch (flag[0]) {
|
|
||||||
case 'path=':
|
|
||||||
return path;
|
|
||||||
case 'url=':
|
|
||||||
return url;
|
|
||||||
case 'number=':
|
|
||||||
return num;
|
|
||||||
case 'name=':
|
|
||||||
return name;
|
|
||||||
case 'subdue=':
|
|
||||||
return subdue;
|
|
||||||
case 'code=':
|
|
||||||
return code;
|
|
||||||
default:
|
|
||||||
throw new Error(
|
|
||||||
'Bad Docusaurus logging message. This is likely an internal bug, please report it.',
|
|
||||||
);
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
res += Array.isArray(value)
|
|
||||||
? `\n- ${value.map((v) => format(v)).join('\n- ')}`
|
|
||||||
: format(value);
|
|
||||||
});
|
|
||||||
res += msgs.slice(-1)[0];
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
function stringify(msg: unknown): string {
|
|
||||||
if (String(msg) === '[object Object]') {
|
|
||||||
return JSON.stringify(msg);
|
|
||||||
}
|
|
||||||
if (msg instanceof Date) {
|
|
||||||
return msg.toUTCString();
|
|
||||||
}
|
|
||||||
return String(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
function info(msg: unknown): void;
|
|
||||||
function info(
|
|
||||||
msg: TemplateStringsArray,
|
|
||||||
...values: [InterpolatableValue, ...InterpolatableValue[]]
|
|
||||||
): void;
|
|
||||||
function info(msg: unknown, ...values: InterpolatableValue[]): void {
|
|
||||||
console.info(
|
|
||||||
`${chalk.cyan.bold('[INFO]')} ${
|
|
||||||
values.length === 0
|
|
||||||
? stringify(msg)
|
|
||||||
: interpolate(msg as TemplateStringsArray, ...values)
|
|
||||||
}`,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
function warn(msg: unknown): void;
|
|
||||||
function warn(
|
|
||||||
msg: TemplateStringsArray,
|
|
||||||
...values: [InterpolatableValue, ...InterpolatableValue[]]
|
|
||||||
): void;
|
|
||||||
function warn(msg: unknown, ...values: InterpolatableValue[]): void {
|
|
||||||
console.warn(
|
|
||||||
chalk.yellow(
|
|
||||||
`${chalk.bold('[WARNING]')} ${
|
|
||||||
values.length === 0
|
|
||||||
? stringify(msg)
|
|
||||||
: interpolate(msg as TemplateStringsArray, ...values)
|
|
||||||
}`,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
function error(msg: unknown): void;
|
|
||||||
function error(
|
|
||||||
msg: TemplateStringsArray,
|
|
||||||
...values: [InterpolatableValue, ...InterpolatableValue[]]
|
|
||||||
): void;
|
|
||||||
function error(msg: unknown, ...values: InterpolatableValue[]): void {
|
|
||||||
console.error(
|
|
||||||
chalk.red(
|
|
||||||
`${chalk.bold('[ERROR]')} ${
|
|
||||||
values.length === 0
|
|
||||||
? stringify(msg)
|
|
||||||
: interpolate(msg as TemplateStringsArray, ...values)
|
|
||||||
}`,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
function success(msg: unknown): void;
|
|
||||||
function success(
|
|
||||||
msg: TemplateStringsArray,
|
|
||||||
...values: [InterpolatableValue, ...InterpolatableValue[]]
|
|
||||||
): void;
|
|
||||||
function success(msg: unknown, ...values: InterpolatableValue[]): void {
|
|
||||||
console.log(
|
|
||||||
`${chalk.green.bold('[SUCCESS]')} ${
|
|
||||||
values.length === 0
|
|
||||||
? stringify(msg)
|
|
||||||
: interpolate(msg as TemplateStringsArray, ...values)
|
|
||||||
}`,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
function throwError(msg: unknown): void;
|
|
||||||
function throwError(
|
|
||||||
msg: TemplateStringsArray,
|
|
||||||
...values: [InterpolatableValue, ...InterpolatableValue[]]
|
|
||||||
): void;
|
|
||||||
function throwError(msg: unknown, ...values: InterpolatableValue[]): void {
|
|
||||||
throw new Error(
|
|
||||||
values.length === 0
|
|
||||||
? stringify(msg)
|
|
||||||
: interpolate(msg as TemplateStringsArray, ...values),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function newLine(): void {
|
|
||||||
console.log();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Takes a message and reports it according to the severity that the user wants.
|
|
||||||
*
|
|
||||||
* - `ignore`: completely no-op
|
|
||||||
* - `log`: uses the `INFO` log level
|
|
||||||
* - `warn`: uses the `WARN` log level
|
|
||||||
* - `throw`: aborts the process, throws the error.
|
|
||||||
*
|
|
||||||
* Since the logger doesn't have logging level filters yet, these severities
|
|
||||||
* mostly just differ by their colors.
|
|
||||||
*
|
|
||||||
* @throws In addition to throwing when `reportingSeverity === "throw"`, this
|
|
||||||
* function also throws if `reportingSeverity` is not one of the above.
|
|
||||||
*/
|
|
||||||
function report(reportingSeverity: ReportingSeverity): typeof success {
|
|
||||||
const reportingMethods = {
|
|
||||||
ignore: () => {},
|
|
||||||
log: info,
|
|
||||||
warn,
|
|
||||||
throw: throwError,
|
|
||||||
};
|
|
||||||
if (
|
|
||||||
!Object.prototype.hasOwnProperty.call(reportingMethods, reportingSeverity)
|
|
||||||
) {
|
|
||||||
throw new Error(
|
|
||||||
`Unexpected "reportingSeverity" value: ${reportingSeverity}.`,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return reportingMethods[reportingSeverity];
|
|
||||||
}
|
|
||||||
|
|
||||||
const logger = {
|
|
||||||
red: (msg: string | number): string => chalk.red(msg),
|
|
||||||
yellow: (msg: string | number): string => chalk.yellow(msg),
|
|
||||||
green: (msg: string | number): string => chalk.green(msg),
|
|
||||||
bold: (msg: string | number): string => chalk.bold(msg),
|
|
||||||
dim: (msg: string | number): string => chalk.dim(msg),
|
|
||||||
path,
|
|
||||||
url,
|
|
||||||
name,
|
|
||||||
code,
|
|
||||||
subdue,
|
|
||||||
num,
|
|
||||||
interpolate,
|
|
||||||
info,
|
|
||||||
warn,
|
|
||||||
error,
|
|
||||||
success,
|
|
||||||
report,
|
|
||||||
newLine,
|
|
||||||
};
|
|
||||||
|
|
||||||
// TODO remove when migrating to ESM
|
|
||||||
// logger can only be default-imported in ESM with this
|
|
||||||
export = logger;
|
|
||||||
|
|
198
packages/docusaurus-logger/src/logger.ts
Normal file
198
packages/docusaurus-logger/src/logger.ts
Normal file
|
@ -0,0 +1,198 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import chalk from 'chalk';
|
||||||
|
import type {ReportingSeverity} from '@docusaurus/types';
|
||||||
|
|
||||||
|
type InterpolatableValue = string | number | (string | number)[];
|
||||||
|
|
||||||
|
const path = (msg: unknown): string => chalk.cyan.underline(`"${String(msg)}"`);
|
||||||
|
const url = (msg: unknown): string => chalk.cyan.underline(msg);
|
||||||
|
const name = (msg: unknown): string => chalk.blue.bold(msg);
|
||||||
|
const code = (msg: unknown): string => chalk.cyan(`\`${String(msg)}\``);
|
||||||
|
const subdue = (msg: unknown): string => chalk.gray(msg);
|
||||||
|
const num = (msg: unknown): string => chalk.yellow(msg);
|
||||||
|
|
||||||
|
function interpolate(
|
||||||
|
msgs: TemplateStringsArray,
|
||||||
|
...values: InterpolatableValue[]
|
||||||
|
): string {
|
||||||
|
let res = '';
|
||||||
|
values.forEach((value, idx) => {
|
||||||
|
const flag = msgs[idx]!.match(/[a-z]+=$/);
|
||||||
|
res += msgs[idx]!.replace(/[a-z]+=$/, '');
|
||||||
|
const format = (() => {
|
||||||
|
if (!flag) {
|
||||||
|
return (a: string | number) => a;
|
||||||
|
}
|
||||||
|
switch (flag[0]) {
|
||||||
|
case 'path=':
|
||||||
|
return path;
|
||||||
|
case 'url=':
|
||||||
|
return url;
|
||||||
|
case 'number=':
|
||||||
|
return num;
|
||||||
|
case 'name=':
|
||||||
|
return name;
|
||||||
|
case 'subdue=':
|
||||||
|
return subdue;
|
||||||
|
case 'code=':
|
||||||
|
return code;
|
||||||
|
default:
|
||||||
|
throw new Error(
|
||||||
|
'Bad Docusaurus logging message. This is likely an internal bug, please report it.',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
res += Array.isArray(value)
|
||||||
|
? `\n- ${value.map((v) => format(v)).join('\n- ')}`
|
||||||
|
: format(value);
|
||||||
|
});
|
||||||
|
res += msgs.slice(-1)[0];
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
function stringify(msg: unknown): string {
|
||||||
|
if (String(msg) === '[object Object]') {
|
||||||
|
return JSON.stringify(msg);
|
||||||
|
}
|
||||||
|
if (msg instanceof Date) {
|
||||||
|
return msg.toUTCString();
|
||||||
|
}
|
||||||
|
return String(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
function info(msg: unknown): void;
|
||||||
|
function info(
|
||||||
|
msg: TemplateStringsArray,
|
||||||
|
...values: [InterpolatableValue, ...InterpolatableValue[]]
|
||||||
|
): void;
|
||||||
|
function info(msg: unknown, ...values: InterpolatableValue[]): void {
|
||||||
|
console.info(
|
||||||
|
`${chalk.cyan.bold('[INFO]')} ${
|
||||||
|
values.length === 0
|
||||||
|
? stringify(msg)
|
||||||
|
: interpolate(msg as TemplateStringsArray, ...values)
|
||||||
|
}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
function warn(msg: unknown): void;
|
||||||
|
function warn(
|
||||||
|
msg: TemplateStringsArray,
|
||||||
|
...values: [InterpolatableValue, ...InterpolatableValue[]]
|
||||||
|
): void;
|
||||||
|
function warn(msg: unknown, ...values: InterpolatableValue[]): void {
|
||||||
|
console.warn(
|
||||||
|
chalk.yellow(
|
||||||
|
`${chalk.bold('[WARNING]')} ${
|
||||||
|
values.length === 0
|
||||||
|
? stringify(msg)
|
||||||
|
: interpolate(msg as TemplateStringsArray, ...values)
|
||||||
|
}`,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
function error(msg: unknown): void;
|
||||||
|
function error(
|
||||||
|
msg: TemplateStringsArray,
|
||||||
|
...values: [InterpolatableValue, ...InterpolatableValue[]]
|
||||||
|
): void;
|
||||||
|
function error(msg: unknown, ...values: InterpolatableValue[]): void {
|
||||||
|
console.error(
|
||||||
|
chalk.red(
|
||||||
|
`${chalk.bold('[ERROR]')} ${
|
||||||
|
values.length === 0
|
||||||
|
? stringify(msg)
|
||||||
|
: interpolate(msg as TemplateStringsArray, ...values)
|
||||||
|
}`,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
function success(msg: unknown): void;
|
||||||
|
function success(
|
||||||
|
msg: TemplateStringsArray,
|
||||||
|
...values: [InterpolatableValue, ...InterpolatableValue[]]
|
||||||
|
): void;
|
||||||
|
function success(msg: unknown, ...values: InterpolatableValue[]): void {
|
||||||
|
console.log(
|
||||||
|
`${chalk.green.bold('[SUCCESS]')} ${
|
||||||
|
values.length === 0
|
||||||
|
? stringify(msg)
|
||||||
|
: interpolate(msg as TemplateStringsArray, ...values)
|
||||||
|
}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
function throwError(msg: unknown): void;
|
||||||
|
function throwError(
|
||||||
|
msg: TemplateStringsArray,
|
||||||
|
...values: [InterpolatableValue, ...InterpolatableValue[]]
|
||||||
|
): void;
|
||||||
|
function throwError(msg: unknown, ...values: InterpolatableValue[]): void {
|
||||||
|
throw new Error(
|
||||||
|
values.length === 0
|
||||||
|
? stringify(msg)
|
||||||
|
: interpolate(msg as TemplateStringsArray, ...values),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function newLine(): void {
|
||||||
|
console.log();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Takes a message and reports it according to the severity that the user wants.
|
||||||
|
*
|
||||||
|
* - `ignore`: completely no-op
|
||||||
|
* - `log`: uses the `INFO` log level
|
||||||
|
* - `warn`: uses the `WARN` log level
|
||||||
|
* - `throw`: aborts the process, throws the error.
|
||||||
|
*
|
||||||
|
* Since the logger doesn't have logging level filters yet, these severities
|
||||||
|
* mostly just differ by their colors.
|
||||||
|
*
|
||||||
|
* @throws In addition to throwing when `reportingSeverity === "throw"`, this
|
||||||
|
* function also throws if `reportingSeverity` is not one of the above.
|
||||||
|
*/
|
||||||
|
function report(reportingSeverity: ReportingSeverity): typeof success {
|
||||||
|
const reportingMethods = {
|
||||||
|
ignore: () => {},
|
||||||
|
log: info,
|
||||||
|
warn,
|
||||||
|
throw: throwError,
|
||||||
|
};
|
||||||
|
if (
|
||||||
|
!Object.prototype.hasOwnProperty.call(reportingMethods, reportingSeverity)
|
||||||
|
) {
|
||||||
|
throw new Error(
|
||||||
|
`Unexpected "reportingSeverity" value: ${reportingSeverity}.`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return reportingMethods[reportingSeverity];
|
||||||
|
}
|
||||||
|
|
||||||
|
const logger = {
|
||||||
|
red: (msg: string | number): string => chalk.red(msg),
|
||||||
|
yellow: (msg: string | number): string => chalk.yellow(msg),
|
||||||
|
green: (msg: string | number): string => chalk.green(msg),
|
||||||
|
bold: (msg: string | number): string => chalk.bold(msg),
|
||||||
|
dim: (msg: string | number): string => chalk.dim(msg),
|
||||||
|
path,
|
||||||
|
url,
|
||||||
|
name,
|
||||||
|
code,
|
||||||
|
subdue,
|
||||||
|
num,
|
||||||
|
interpolate,
|
||||||
|
info,
|
||||||
|
warn,
|
||||||
|
error,
|
||||||
|
success,
|
||||||
|
report,
|
||||||
|
newLine,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default logger;
|
|
@ -5,12 +5,11 @@
|
||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*/
|
*/
|
||||||
import {AsyncLocalStorage} from 'async_hooks';
|
import {AsyncLocalStorage} from 'async_hooks';
|
||||||
import logger from '@docusaurus/logger';
|
import logger from './logger';
|
||||||
|
|
||||||
// For now this is a private env variable we use internally
|
// For now this is a private env variable we use internally
|
||||||
// But we'll want to expose this feature officially some day
|
// But we'll want to expose this feature officially some day
|
||||||
export const PerfDebuggingEnabled: boolean =
|
const PerfDebuggingEnabled: boolean = !!process.env.DOCUSAURUS_PERF_LOGGER;
|
||||||
!!process.env.DOCUSAURUS_PERF_LOGGER;
|
|
||||||
|
|
||||||
const Thresholds = {
|
const Thresholds = {
|
||||||
min: 5,
|
min: 5,
|
|
@ -11,7 +11,7 @@ import path from 'path';
|
||||||
import {fileURLToPath} from 'url';
|
import {fileURLToPath} from 'url';
|
||||||
import fs from 'fs-extra';
|
import fs from 'fs-extra';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import logger from '@docusaurus/logger';
|
import {logger} from '@docusaurus/logger';
|
||||||
import {getThemes, extractThemeCodeMessages} from './lib/utils.js';
|
import {getThemes, extractThemeCodeMessages} from './lib/utils.js';
|
||||||
|
|
||||||
const LocalesDirPath = fileURLToPath(new URL('locales', import.meta.url));
|
const LocalesDirPath = fileURLToPath(new URL('locales', import.meta.url));
|
||||||
|
|
|
@ -11,7 +11,7 @@ import fs from 'fs-extra';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import {createRequire} from 'module';
|
import {createRequire} from 'module';
|
||||||
import shell from 'shelljs';
|
import shell from 'shelljs';
|
||||||
import logger from '@docusaurus/logger';
|
import {logger} from '@docusaurus/logger';
|
||||||
import semver from 'semver';
|
import semver from 'semver';
|
||||||
import updateNotifier from 'update-notifier';
|
import updateNotifier from 'update-notifier';
|
||||||
import boxen from 'boxen';
|
import boxen from 'boxen';
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
// @ts-check
|
// @ts-check
|
||||||
|
|
||||||
import {inspect} from 'node:util';
|
import {inspect} from 'node:util';
|
||||||
import logger from '@docusaurus/logger';
|
import {logger} from '@docusaurus/logger';
|
||||||
import cli from 'commander';
|
import cli from 'commander';
|
||||||
import {DOCUSAURUS_VERSION} from '@docusaurus/utils';
|
import {DOCUSAURUS_VERSION} from '@docusaurus/utils';
|
||||||
import {
|
import {
|
||||||
|
|
|
@ -8,11 +8,10 @@
|
||||||
import fs from 'fs-extra';
|
import fs from 'fs-extra';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import logger from '@docusaurus/logger';
|
import logger, {PerfLogger} from '@docusaurus/logger';
|
||||||
import {DOCUSAURUS_VERSION, mapAsyncSequential} from '@docusaurus/utils';
|
import {DOCUSAURUS_VERSION, mapAsyncSequential} from '@docusaurus/utils';
|
||||||
import {loadSite, loadContext, type LoadContextParams} from '../server/site';
|
import {loadSite, loadContext, type LoadContextParams} from '../server/site';
|
||||||
import {handleBrokenLinks} from '../server/brokenLinks';
|
import {handleBrokenLinks} from '../server/brokenLinks';
|
||||||
|
|
||||||
import {createBuildClientConfig} from '../webpack/client';
|
import {createBuildClientConfig} from '../webpack/client';
|
||||||
import createServerConfig from '../webpack/server';
|
import createServerConfig from '../webpack/server';
|
||||||
import {
|
import {
|
||||||
|
@ -20,7 +19,6 @@ import {
|
||||||
executePluginsConfigureWebpack,
|
executePluginsConfigureWebpack,
|
||||||
} from '../webpack/configure';
|
} from '../webpack/configure';
|
||||||
import {compile} from '../webpack/utils';
|
import {compile} from '../webpack/utils';
|
||||||
import {PerfLogger} from '../utils';
|
|
||||||
|
|
||||||
import {loadI18n} from '../server/i18n';
|
import {loadI18n} from '../server/i18n';
|
||||||
import {
|
import {
|
||||||
|
|
|
@ -9,9 +9,8 @@ import fs from 'fs-extra';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import {prepareUrls} from 'react-dev-utils/WebpackDevServerUtils';
|
import {prepareUrls} from 'react-dev-utils/WebpackDevServerUtils';
|
||||||
import {normalizeUrl} from '@docusaurus/utils';
|
import {normalizeUrl} from '@docusaurus/utils';
|
||||||
import logger from '@docusaurus/logger';
|
import logger, {PerfLogger} from '@docusaurus/logger';
|
||||||
import {getHostPort} from '../../server/getHostPort';
|
import {getHostPort} from '../../server/getHostPort';
|
||||||
import {PerfLogger} from '../../utils';
|
|
||||||
import {
|
import {
|
||||||
loadSite,
|
loadSite,
|
||||||
type LoadSiteParams,
|
type LoadSiteParams,
|
||||||
|
|
|
@ -5,11 +5,11 @@
|
||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import {PerfLogger} from '@docusaurus/logger';
|
||||||
import {initPlugins} from './init';
|
import {initPlugins} from './init';
|
||||||
import {createBootstrapPlugin, createMDXFallbackPlugin} from './synthetic';
|
import {createBootstrapPlugin, createMDXFallbackPlugin} from './synthetic';
|
||||||
import {localizePluginTranslationFile} from '../translations/translations';
|
import {localizePluginTranslationFile} from '../translations/translations';
|
||||||
import {sortRoutes} from './routeConfig';
|
import {sortRoutes} from './routeConfig';
|
||||||
import {PerfLogger} from '../../utils';
|
|
||||||
import {createPluginActionsUtils} from './actions';
|
import {createPluginActionsUtils} from './actions';
|
||||||
import {
|
import {
|
||||||
aggregateAllContent,
|
aggregateAllContent,
|
||||||
|
|
|
@ -11,6 +11,7 @@ import {
|
||||||
DEFAULT_BUILD_DIR_NAME,
|
DEFAULT_BUILD_DIR_NAME,
|
||||||
GENERATED_FILES_DIR_NAME,
|
GENERATED_FILES_DIR_NAME,
|
||||||
} from '@docusaurus/utils';
|
} from '@docusaurus/utils';
|
||||||
|
import {PerfLogger} from '@docusaurus/logger';
|
||||||
import combinePromises from 'combine-promises';
|
import combinePromises from 'combine-promises';
|
||||||
import {loadSiteConfig} from './config';
|
import {loadSiteConfig} from './config';
|
||||||
import {getAllClientModules} from './clientModules';
|
import {getAllClientModules} from './clientModules';
|
||||||
|
@ -22,7 +23,6 @@ import {
|
||||||
loadSiteCodeTranslations,
|
loadSiteCodeTranslations,
|
||||||
getPluginsDefaultCodeTranslations,
|
getPluginsDefaultCodeTranslations,
|
||||||
} from './translations/translations';
|
} from './translations/translations';
|
||||||
import {PerfLogger} from '../utils';
|
|
||||||
import {generateSiteFiles} from './codegen/codegen';
|
import {generateSiteFiles} from './codegen/codegen';
|
||||||
import {getRoutesPaths, handleDuplicateRoutes} from './routes';
|
import {getRoutesPaths, handleDuplicateRoutes} from './routes';
|
||||||
import {createSiteStorage} from './storage';
|
import {createSiteStorage} from './storage';
|
||||||
|
|
|
@ -12,8 +12,7 @@ import _ from 'lodash';
|
||||||
import evaluate from 'eval';
|
import evaluate from 'eval';
|
||||||
import pMap from 'p-map';
|
import pMap from 'p-map';
|
||||||
import {minify} from 'html-minifier-terser';
|
import {minify} from 'html-minifier-terser';
|
||||||
import logger from '@docusaurus/logger';
|
import logger, {PerfLogger} from '@docusaurus/logger';
|
||||||
import {PerfLogger} from './utils';
|
|
||||||
import {renderSSRTemplate} from './templates/templates';
|
import {renderSSRTemplate} from './templates/templates';
|
||||||
import type {AppRenderer, AppRenderResult, SiteCollectedData} from './common';
|
import type {AppRenderer, AppRenderResult, SiteCollectedData} from './common';
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import fs from 'fs-extra';
|
import fs from 'fs-extra';
|
||||||
import {fileURLToPath} from 'url';
|
import {fileURLToPath} from 'url';
|
||||||
import logger from '@docusaurus/logger';
|
import {logger} from '@docusaurus/logger';
|
||||||
|
|
||||||
import classicTheme from '@docusaurus/theme-classic';
|
import classicTheme from '@docusaurus/theme-classic';
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue