perf(cli): replace ora with nanospinner (#10779)

This commit is contained in:
neverland 2022-07-02 23:05:11 +08:00 committed by GitHub
parent 2e27c67c76
commit 5883d3e0c7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 24 additions and 16 deletions

View File

@ -80,7 +80,7 @@
"markdown-it": "^12.2.0", "markdown-it": "^12.2.0",
"markdown-it-anchor": "^8.4.1", "markdown-it-anchor": "^8.4.1",
"nano-staged": "^0.8.0", "nano-staged": "^0.8.0",
"ora": "^6.0.1", "nanospinner": "^1.1.0",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
"postcss": "^8.3.11", "postcss": "^8.3.11",
"postcss-load-config": "^3.1.0", "postcss-load-config": "^3.1.0",

View File

@ -3,7 +3,7 @@ import execa from 'execa';
import { join, relative } from 'path'; import { join, relative } from 'path';
import { clean } from './clean.js'; import { clean } from './clean.js';
import { CSS_LANG } from '../common/css.js'; import { CSS_LANG } from '../common/css.js';
import { ora, consola } from '../common/logger.js'; import { createSpinner, consola } from '../common/logger.js';
import { installDependencies } from '../common/manager.js'; import { installDependencies } from '../common/manager.js';
import { compileSfc } from '../compiler/compile-sfc.js'; import { compileSfc } from '../compiler/compile-sfc.js';
import { compileStyle } from '../compiler/compile-style.js'; import { compileStyle } from '../compiler/compile-style.js';
@ -178,14 +178,14 @@ const tasks = [
async function runBuildTasks() { async function runBuildTasks() {
for (let i = 0; i < tasks.length; i++) { for (let i = 0; i < tasks.length; i++) {
const { task, text } = tasks[i]; const { task, text } = tasks[i];
const spinner = ora(text).start(); const spinner = createSpinner(text).start();
try { try {
/* eslint-disable no-await-in-loop */ /* eslint-disable no-await-in-loop */
await task(); await task();
spinner.succeed(text); spinner.success({ text });
} catch (err) { } catch (err) {
spinner.fail(text); spinner.error({ text });
console.log(err); console.log(err);
throw err; throw err;
} }

View File

@ -1,7 +1,7 @@
import { join, dirname } from 'path'; import { join, dirname } from 'path';
import { fileURLToPath } from 'url'; import { fileURLToPath } from 'url';
import { ROOT } from '../common/constant.js'; import { ROOT } from '../common/constant.js';
import { ora, slimPath } from '../common/logger.js'; import { createSpinner, slimPath } from '../common/logger.js';
import { createWriteStream, readFileSync } from 'fs'; import { createWriteStream, readFileSync } from 'fs';
import conventionalChangelog from 'conventional-changelog'; import conventionalChangelog from 'conventional-changelog';
@ -48,7 +48,7 @@ function transform(item: any) {
} }
export async function changelog(): Promise<void> { export async function changelog(): Promise<void> {
const spinner = ora('Generating changelog...').start(); const spinner = createSpinner('Generating changelog...').start();
return new Promise((resolve) => { return new Promise((resolve) => {
conventionalChangelog( conventionalChangelog(
@ -68,7 +68,9 @@ export async function changelog(): Promise<void> {
) )
.pipe(createWriteStream(DIST_FILE)) .pipe(createWriteStream(DIST_FILE))
.on('close', () => { .on('close', () => {
spinner.succeed(`Changelog generated at ${slimPath(DIST_FILE)}`); spinner.success({
text: `Changelog generated at ${slimPath(DIST_FILE)}`,
});
resolve(); resolve();
}); });
}); });

View File

@ -1,5 +1,5 @@
import execa from 'execa'; import execa from 'execa';
import { consola, ora } from '../common/logger.js'; import { consola, createSpinner } from '../common/logger.js';
import { SCRIPT_EXTS } from '../common/constant.js'; import { SCRIPT_EXTS } from '../common/constant.js';
type RunCommandMessages = { type RunCommandMessages = {
@ -13,7 +13,7 @@ function runCommand(
options: string[], options: string[],
messages: RunCommandMessages messages: RunCommandMessages
) { ) {
const spinner = ora(messages.start).start(); const spinner = createSpinner(messages.start).start();
return new Promise((resolve) => { return new Promise((resolve) => {
execa(cmd, options, { execa(cmd, options, {
@ -21,11 +21,11 @@ function runCommand(
env: { FORCE_COLOR: true }, env: { FORCE_COLOR: true },
}) })
.then(() => { .then(() => {
spinner.succeed(messages.succeed); spinner.success({ text: messages.succeed });
resolve(true); resolve(true);
}) })
.catch((err: any) => { .catch((err: any) => {
spinner.fail(messages.failed); spinner.error({ text: messages.failed });
consola.error(err.stderr || err.stdout); consola.error(err.stderr || err.stdout);
resolve(false); resolve(false);
}); });

View File

@ -1,4 +1,4 @@
import ora from 'ora'; import { createSpinner } from 'nanospinner';
import color from 'picocolors'; import color from 'picocolors';
import consola from 'consola'; import consola from 'consola';
import { ROOT } from '../common/constant.js'; import { ROOT } from '../common/constant.js';
@ -7,4 +7,4 @@ export function slimPath(path: string) {
return color.yellow(path.replace(ROOT, '')); return color.yellow(path.replace(ROOT, ''));
} }
export { ora, consola }; export { createSpinner, consola };

10
pnpm-lock.yaml generated
View File

@ -124,7 +124,7 @@ importers:
markdown-it: ^12.2.0 markdown-it: ^12.2.0
markdown-it-anchor: ^8.4.1 markdown-it-anchor: ^8.4.1
nano-staged: ^0.8.0 nano-staged: ^0.8.0
ora: ^6.0.1 nanospinner: ^1.1.0
picocolors: ^1.0.0 picocolors: ^1.0.0
postcss: ^8.3.11 postcss: ^8.3.11
postcss-load-config: ^3.1.0 postcss-load-config: ^3.1.0
@ -173,7 +173,7 @@ importers:
markdown-it: 12.3.2 markdown-it: 12.3.2
markdown-it-anchor: 8.6.4_d643ca6eb40ae68ab966a77bead78073 markdown-it-anchor: 8.6.4_d643ca6eb40ae68ab966a77bead78073
nano-staged: 0.8.0 nano-staged: 0.8.0
ora: 6.1.2 nanospinner: 1.1.0
picocolors: 1.0.0 picocolors: 1.0.0
postcss: 8.4.14 postcss: 8.4.14
postcss-load-config: 3.1.4_postcss@8.4.14 postcss-load-config: 3.1.4_postcss@8.4.14
@ -5549,6 +5549,12 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true hasBin: true
/nanospinner/1.1.0:
resolution: {integrity: sha512-yFvNYMig4AthKYfHFl1sLj7B2nkHL4lzdig4osvl9/LdGbXwrdFRoqBS98gsEsOakr0yH+r5NZ/1Y9gdVB8trA==}
dependencies:
picocolors: 1.0.0
dev: false
/natural-compare/1.4.0: /natural-compare/1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}