feat(cli): using rslog (#12334)

This commit is contained in:
neverland 2023-10-02 21:34:03 +08:00 committed by GitHub
parent 53188a7093
commit 087ecda7b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 48 additions and 60 deletions

2
.npmrc
View File

@ -1,4 +1,4 @@
registry=https://registry.npmmirror.com/ registry=https://registry.npmjs.org/
strict-peer-dependencies=false strict-peer-dependencies=false
auto-install-peers=false auto-install-peers=false

View File

@ -36,7 +36,7 @@
"typescript": "^5.0.4" "typescript": "^5.0.4"
}, },
"dependencies": { "dependencies": {
"consola": "^3.0.2", "rslog": "^1.0.0",
"fast-glob": "^3.2.11", "fast-glob": "^3.2.11",
"fs-extra": "^11.1.0", "fs-extra": "^11.1.0",
"enquirer": "2.3.6", "enquirer": "2.3.6",

View File

@ -1,7 +1,7 @@
import fs from 'fs-extra'; import fs from 'fs-extra';
import glob from 'fast-glob'; import glob from 'fast-glob';
import color from 'picocolors'; import color from 'picocolors';
import { consola } from 'consola'; import { logger } from 'rslog';
import { prompt } from 'enquirer'; import { prompt } from 'enquirer';
import { sep, join } from 'node:path'; import { sep, join } from 'node:path';
import { CWD, GENERATOR_DIR } from './constant'; import { CWD, GENERATOR_DIR } from './constant';
@ -64,7 +64,7 @@ export class VanGenerator {
writing() { writing() {
console.log(); console.log();
consola.info(`Creating project in ${color.green(this.outputDir)}\n`); logger.info(`Creating project in ${color.green(this.outputDir)}\n`);
// see https://github.com/mrmlnc/fast-glob#how-to-write-patterns-on-windows // see https://github.com/mrmlnc/fast-glob#how-to-write-patterns-on-windows
const templatePath = join(GENERATOR_DIR, this.inputs.vueVersion).replace( const templatePath = join(GENERATOR_DIR, this.inputs.vueVersion).replace(
@ -99,15 +99,15 @@ export class VanGenerator {
fs.writeFileSync(to, content); fs.writeFileSync(to, content);
const name = to.replace(this.outputDir + sep, ''); const name = to.replace(this.outputDir + sep, '');
consola.success(`${color.green('create')} ${name}`); logger.success(`${color.green('create')} ${name}`);
} }
end() { end() {
const { name } = this.inputs; const { name } = this.inputs;
console.log(); console.log();
consola.success(`Successfully created ${color.yellow(name)}.`); logger.success(`Successfully created ${color.yellow(name)}.`);
consola.success( logger.success(
`Run ${color.yellow( `Run ${color.yellow(
`cd ${name} && git init && yarn && yarn dev`, `cd ${name} && git init && yarn && yarn dev`,
)} to start development!`, )} to start development!`,

View File

@ -1,6 +1,6 @@
#!/usr/bin/env node #!/usr/bin/env node
import { consola } from 'consola'; import { logger } from 'rslog';
import { prompt } from 'enquirer'; import { prompt } from 'enquirer';
import { ensureDir } from 'fs-extra'; import { ensureDir } from 'fs-extra';
import { VanGenerator } from './generator'; import { VanGenerator } from './generator';
@ -17,7 +17,7 @@ async function run() {
const generator = new VanGenerator(name); const generator = new VanGenerator(name);
await generator.run(); await generator.run();
} catch (e) { } catch (e) {
consola.error(e); logger.error(e);
} }
} }

View File

@ -55,7 +55,7 @@
"@vue/babel-plugin-jsx": "^1.1.1", "@vue/babel-plugin-jsx": "^1.1.1",
"autoprefixer": "^10.4.8", "autoprefixer": "^10.4.8",
"commander": "^11.0.0", "commander": "^11.0.0",
"consola": "^3.0.2", "rslog": "^1.0.0",
"esbuild": "^0.18.11", "esbuild": "^0.18.11",
"eslint": "^8.46.0", "eslint": "^8.46.0",
"enquirer": "2.3.6", "enquirer": "2.3.6",
@ -69,7 +69,6 @@
"markdown-it": "^13.0.1", "markdown-it": "^13.0.1",
"markdown-it-anchor": "^8.6.4", "markdown-it-anchor": "^8.6.4",
"nano-staged": "^0.8.0", "nano-staged": "^0.8.0",
"nanospinner": "^1.1.0",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
"postcss": "^8.4.23", "postcss": "^8.4.23",
"postcss-load-config": "^4.0.1", "postcss-load-config": "^4.0.1",

View File

@ -1,9 +1,9 @@
import fse from 'fs-extra'; import fse from 'fs-extra';
import { logger } from 'rslog';
import { execSync } from 'child_process'; import { execSync } from 'child_process';
import { join, relative } from 'node:path'; import { join, relative } from 'node: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 { 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';
@ -181,20 +181,19 @@ 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 = createSpinner(text).start();
try { try {
/* eslint-disable no-await-in-loop */ /* eslint-disable no-await-in-loop */
await task(); await task();
spinner.success({ text }); logger.ready(text);
} catch (err) { } catch (err) {
spinner.error({ text }); logger.error(text);
console.log(err); logger.error(err);
throw err; throw err;
} }
} }
consola.success('Compile successfully'); logger.success('Build all files');
} }
export async function build() { export async function build() {
@ -205,7 +204,7 @@ export async function build() {
await installDependencies(); await installDependencies();
await runBuildTasks(); await runBuildTasks();
} catch (err) { } catch (err) {
consola.error('Build failed'); logger.error('Build failed');
process.exit(1); process.exit(1);
} }
} }

View File

@ -1,5 +1,5 @@
import { logger } from 'rslog';
import { readFileSync } from 'node:fs'; import { readFileSync } from 'node:fs';
import { consola } from '../common/logger.js';
const commitRE = const commitRE =
/^(revert: )?(fix|feat|docs|perf|test|types|style|build|chore|release|refactor|breaking change)(\(.+\))?: .{1,50}/; /^(revert: )?(fix|feat|docs|perf|test|types|style|build|chore|release|refactor|breaking change)(\(.+\))?: .{1,50}/;
@ -9,7 +9,7 @@ export function commitLint(gitParams: string) {
const commitMsg = readFileSync(gitParams, 'utf-8').trim(); const commitMsg = readFileSync(gitParams, 'utf-8').trim();
if (!commitRE.test(commitMsg) && !mergeRE.test(commitMsg)) { if (!commitRE.test(commitMsg) && !mergeRE.test(commitMsg)) {
consola.error(`invalid commit message: "${commitMsg}". logger.error(`invalid commit message: "${commitMsg}".
Proper commit message format is required for automated changelog generation. Proper commit message format is required for automated changelog generation.

View File

@ -1,5 +1,5 @@
import { exec } from 'child_process'; import { exec } from 'child_process';
import { consola, createSpinner } from '../common/logger.js'; import { logger } from 'rslog';
import { SCRIPT_EXTS } from '../common/constant.js'; import { SCRIPT_EXTS } from '../common/constant.js';
type RunCommandMessages = { type RunCommandMessages = {
@ -9,7 +9,7 @@ type RunCommandMessages = {
}; };
function runCommand(cmd: string, messages: RunCommandMessages) { function runCommand(cmd: string, messages: RunCommandMessages) {
const spinner = createSpinner(messages.start).start(); logger.start(messages.start);
return new Promise((resolve) => { return new Promise((resolve) => {
const options = { const options = {
@ -18,11 +18,11 @@ function runCommand(cmd: string, messages: RunCommandMessages) {
exec(cmd, options, (error, stdout, stderr) => { exec(cmd, options, (error, stdout, stderr) => {
if (error) { if (error) {
consola.error(stderr || stdout); logger.error(stderr || stdout);
spinner.error({ text: messages.failed }); logger.error(messages.failed);
resolve(false); resolve(false);
} else { } else {
spinner.success({ text: messages.succeed }); logger.success(messages.succeed);
resolve(true); resolve(true);
} }
}); });

View File

@ -2,15 +2,15 @@ import fse from 'fs-extra';
import { join } from 'node:path'; import { join } from 'node:path';
import color from 'picocolors'; import color from 'picocolors';
import enquirer from 'enquirer'; import enquirer from 'enquirer';
import { consola } from '../common/logger.js'; import { logger } from 'rslog';
import { getPackageManager } from '../common/manager.js'; import { getPackageManager } from '../common/manager.js';
import { execSync } from 'child_process'; import { execSync } from 'child_process';
function logCurrentVersion(cwd: string) { function logCurrentVersion(cwd: string) {
const pkgJson = join(cwd, 'package.json'); const pkgJson = join(cwd, 'package.json');
const pkg = fse.readJSONSync(pkgJson); const pkg = fse.readJSONSync(pkgJson);
consola.success(`${color.bold('Current package:')} ${color.green(pkg.name)}`); logger.success(`${color.bold('Current package:')} ${color.green(pkg.name)}`);
consola.success( logger.success(
`${color.bold('Current version:')} ${color.green(pkg.version)}`, `${color.bold('Current version:')} ${color.green(pkg.version)}`,
); );
return { return {
@ -43,7 +43,7 @@ function getNpmTag(version: string, forceTag?: string) {
tag = 'latest'; tag = 'latest';
} }
consola.success(`${color.bold('Npm tag:')} ${color.green(tag)}`); logger.success(`${color.bold('Npm tag:')} ${color.green(tag)}`);
return tag; return tag;
} }
@ -60,7 +60,7 @@ function setPkgVersion(
function buildPackage(pkgJson: Record<string, any>, packageManager: string) { function buildPackage(pkgJson: Record<string, any>, packageManager: string) {
if (pkgJson.scripts?.build) { if (pkgJson.scripts?.build) {
const command = `${packageManager} run build`; const command = `${packageManager} run build`;
consola.success(`${color.bold('Build package:')} ${color.green(command)}`); logger.success(`${color.bold('Build package:')} ${color.green(command)}`);
execSync(command, { stdio: 'inherit' }); execSync(command, { stdio: 'inherit' });
} }
} }
@ -113,7 +113,7 @@ export async function release(command: { tag?: string; gitTag?: boolean }) {
try { try {
buildPackage(pkgJson, packageManager); buildPackage(pkgJson, packageManager);
} catch (err) { } catch (err) {
consola.error('Failed to build package, rollback to the previous version.'); logger.error('Failed to build package, rollback to the previous version.');
setPkgVersion(pkgJson, pkgJsonPath, currentVersion); setPkgVersion(pkgJson, pkgJsonPath, currentVersion);
throw err; throw err;
} }

View File

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

View File

@ -1,4 +1,4 @@
import { consola } from './logger.js'; import { logger } from 'rslog';
import { execSync } from 'child_process'; import { execSync } from 'child_process';
import { getVantConfig } from './constant.js'; import { getVantConfig } from './constant.js';
@ -28,7 +28,7 @@ export function getPackageManager() {
} }
export async function installDependencies() { export async function installDependencies() {
consola.info('Install Dependencies\n'); logger.info('Install Dependencies\n');
try { try {
const manager = getPackageManager(); const manager = getPackageManager();

View File

@ -45,7 +45,7 @@ export async function compileSite(production = false) {
const require = createRequire(import.meta.url); const require = createRequire(import.meta.url);
const { version } = require('vite/package.json'); const { version } = require('vite/package.json');
const viteInfo = color.cyan(`vite v${version}`); const viteInfo = color.cyan(`vite v${version}`);
console.log(`\n ${viteInfo}` + color.green(` dev server running at:\n`)); console.log(` ${viteInfo}` + color.green(` dev server running at:\n`));
server.printUrls(); server.printUrls();
} }
} }

View File

@ -1,10 +1,10 @@
import { parse } from 'node:path'; import { parse } from 'node:path';
import fse from 'fs-extra'; import fse from 'fs-extra';
import { logger } from 'rslog';
import { getVantConfig, replaceExt } from '../common/index.js'; import { getVantConfig, replaceExt } from '../common/index.js';
import { compileCss } from './compile-css.js'; import { compileCss } from './compile-css.js';
import { compileLess } from './compile-less.js'; import { compileLess } from './compile-less.js';
import { compileSass } from './compile-sass.js'; import { compileSass } from './compile-sass.js';
import { consola } from '../common/logger.js';
const { readFileSync, writeFileSync, removeSync } = fse; const { readFileSync, writeFileSync, removeSync } = fse;
@ -25,7 +25,7 @@ async function compileFile(filePath: string) {
const source = readFileSync(filePath, 'utf-8'); const source = readFileSync(filePath, 'utf-8');
return await compileCss(source); return await compileCss(source);
} catch (err) { } catch (err) {
consola.error('Compile style failed: ' + filePath); logger.error('Compile style failed: ' + filePath);
throw err; throw err;
} }
} }

View File

@ -1,9 +1,12 @@
// @ts-ignore // @ts-ignore
import fs from 'node:fs'; import fs from 'node:fs';
import { URL, fileURLToPath } from 'node:url'; import { URL, fileURLToPath } from 'node:url';
import { logger } from 'rslog';
const packagePath = fileURLToPath(new URL('../package.json', import.meta.url)); const packagePath = fileURLToPath(new URL('../package.json', import.meta.url));
const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf-8')); const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf-8'));
export const cliVersion: string = packageJson.version; export const cliVersion: string = packageJson.version;
logger.greet(` Vant CLI v${cliVersion}\n`);
process.env.VANT_CLI_VERSION = cliVersion; process.env.VANT_CLI_VERSION = cliVersion;

31
pnpm-lock.yaml generated
View File

@ -29,9 +29,6 @@ importers:
packages/create-vant-cli-app: packages/create-vant-cli-app:
dependencies: dependencies:
consola:
specifier: ^3.0.2
version: 3.2.3
enquirer: enquirer:
specifier: 2.3.6 specifier: 2.3.6
version: 2.3.6 version: 2.3.6
@ -44,6 +41,9 @@ importers:
picocolors: picocolors:
specifier: ^1.0.0 specifier: ^1.0.0
version: 1.0.0 version: 1.0.0
rslog:
specifier: ^1.0.0
version: 1.0.0
devDependencies: devDependencies:
'@types/fs-extra': '@types/fs-extra':
specifier: ^11.0.1 specifier: ^11.0.1
@ -172,9 +172,6 @@ importers:
commander: commander:
specifier: ^11.0.0 specifier: ^11.0.0
version: 11.0.0 version: 11.0.0
consola:
specifier: ^3.0.2
version: 3.2.3
enquirer: enquirer:
specifier: 2.3.6 specifier: 2.3.6
version: 2.3.6 version: 2.3.6
@ -214,9 +211,6 @@ importers:
nano-staged: nano-staged:
specifier: ^0.8.0 specifier: ^0.8.0
version: 0.8.0 version: 0.8.0
nanospinner:
specifier: ^1.1.0
version: 1.1.0
picocolors: picocolors:
specifier: ^1.0.0 specifier: ^1.0.0
version: 1.0.0 version: 1.0.0
@ -229,6 +223,9 @@ importers:
prettier: prettier:
specifier: ^3.0.0 specifier: ^3.0.0
version: 3.0.1 version: 3.0.1
rslog:
specifier: ^1.0.0
version: 1.0.0
terser: terser:
specifier: ^5.19.2 specifier: ^5.19.2
version: 5.19.2 version: 5.19.2
@ -1591,11 +1588,6 @@ packages:
proto-list: 1.2.4 proto-list: 1.2.4
dev: true dev: true
/consola@3.2.3:
resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==}
engines: {node: ^14.18.0 || >=16.10.0}
dev: false
/convert-source-map@1.9.0: /convert-source-map@1.9.0:
resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
@ -2660,12 +2652,6 @@ 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-lite@1.4.0: /natural-compare-lite@1.4.0:
resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
dev: false dev: false
@ -2956,6 +2942,11 @@ packages:
resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==}
dev: true dev: true
/rslog@1.0.0:
resolution: {integrity: sha512-yTulfJJIYHBftErlZZXHdZuFA8275spDcTrCs8JIXIh+wRIRgi6RGoT8MAnB8H6NIEvJbMUP14Mo1t7hCw4k1g==}
engines: {node: '>=14.17.6'}
dev: false
/run-parallel@1.2.0: /run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
dependencies: dependencies: