From 5dc2f4dcd220936114d22ba9758c668b04b375e1 Mon Sep 17 00:00:00 2001 From: neverland Date: Sat, 19 Aug 2023 15:14:40 +0800 Subject: [PATCH] refactor(cli): remove execa dependency (#12205) --- packages/vant-cli/package.json | 1 - packages/vant-cli/src/commands/build.ts | 7 ++- packages/vant-cli/src/commands/lint.ts | 45 +++++++++---------- packages/vant-cli/src/common/manager.ts | 3 +- pnpm-lock.yaml | 57 ------------------------- 5 files changed, 23 insertions(+), 90 deletions(-) diff --git a/packages/vant-cli/package.json b/packages/vant-cli/package.json index c0515e182..9399cb0c2 100644 --- a/packages/vant-cli/package.json +++ b/packages/vant-cli/package.json @@ -60,7 +60,6 @@ "consola": "^3.0.2", "esbuild": "^0.18.11", "eslint": "^8.46.0", - "execa": "^6.1.0", "enquirer": "2.3.6", "fast-glob": "^3.2.11", "fs-extra": "^11.1.0", diff --git a/packages/vant-cli/src/commands/build.ts b/packages/vant-cli/src/commands/build.ts index 58f6b3a24..34a90b613 100644 --- a/packages/vant-cli/src/commands/build.ts +++ b/packages/vant-cli/src/commands/build.ts @@ -1,5 +1,5 @@ import fse from 'fs-extra'; -import { execa } from 'execa'; +import { execSync } from 'child_process'; import { join, relative } from 'node:path'; import { clean } from './clean.js'; import { CSS_LANG } from '../common/css.js'; @@ -104,9 +104,8 @@ async function buildTypeDeclarations() { const tsConfig = join(process.cwd(), 'tsconfig.declaration.json'); if (existsSync(tsConfig)) { - await execa('tsc', ['-p', tsConfig], { - stdout: 'inherit', - stderr: 'inherit', + execSync(`tsc -p ${tsConfig}`, { + stdio: 'inherit', }); } } diff --git a/packages/vant-cli/src/commands/lint.ts b/packages/vant-cli/src/commands/lint.ts index 0edbd7ed2..cab294a38 100644 --- a/packages/vant-cli/src/commands/lint.ts +++ b/packages/vant-cli/src/commands/lint.ts @@ -1,4 +1,4 @@ -import { execa } from 'execa'; +import { exec } from 'child_process'; import { consola, createSpinner } from '../common/logger.js'; import { SCRIPT_EXTS } from '../common/constant.js'; @@ -8,40 +8,33 @@ type RunCommandMessages = { failed: string; }; -function runCommand( - cmd: string, - options: string[], - messages: RunCommandMessages, -) { +function runCommand(cmd: string, messages: RunCommandMessages) { const spinner = createSpinner(messages.start).start(); return new Promise((resolve) => { - execa(cmd, options, { - preferLocal: true, - env: { FORCE_COLOR: 'true' }, - }) - .then(() => { + const options = { + env: Object.assign({}, process.env, { FORCE_COLOR: 'true' }), + }; + + exec(cmd, options, (error, stdout, stderr) => { + if (error) { + consola.error(stderr || stdout); + spinner.error({ text: messages.failed }); + resolve(false); + } else { spinner.success({ text: messages.succeed }); resolve(true); - }) - .catch((err: any) => { - spinner.error({ text: messages.failed }); - consola.error(err.stderr || err.stdout); - resolve(false); - }); + } + }); }); } function eslint() { - return runCommand( - 'eslint', - ['./src', '--fix', '--ext', SCRIPT_EXTS.join(',')], - { - start: 'Running eslint...', - succeed: 'ESLint Passed.', - failed: 'ESLint failed!', - }, - ); + return runCommand(`eslint ./src --fix --ext ${SCRIPT_EXTS.join(',')}`, { + start: 'Running eslint...', + succeed: 'ESLint Passed.', + failed: 'ESLint failed!', + }); } export async function lint() { diff --git a/packages/vant-cli/src/common/manager.ts b/packages/vant-cli/src/common/manager.ts index bfd4314d2..46dd0f6f8 100644 --- a/packages/vant-cli/src/common/manager.ts +++ b/packages/vant-cli/src/common/manager.ts @@ -1,4 +1,3 @@ -import { execa } from 'execa'; import { consola } from './logger.js'; import { execSync } from 'child_process'; import { getVantConfig } from './constant.js'; @@ -34,7 +33,7 @@ export async function installDependencies() { try { const manager = getPackageManager(); - await execa(manager, ['install', '--prod=false'], { + execSync(`${manager} install --prod=false`, { stdio: 'inherit', }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2fb75f1f3..b04dcbda6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -157,9 +157,6 @@ importers: eslint: specifier: ^8.46.0 version: 8.47.0 - execa: - specifier: ^6.1.0 - version: 6.1.0 fast-glob: specifier: ^3.2.11 version: 3.3.1 @@ -2516,21 +2513,6 @@ packages: strip-final-newline: 2.0.0 dev: false - /execa@6.1.0: - resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 3.0.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - dev: false - /exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} @@ -2832,11 +2814,6 @@ packages: engines: {node: '>=10.17.0'} dev: false - /human-signals@3.0.1: - resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} - engines: {node: '>=12.20.0'} - dev: false - /husky@8.0.3: resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} engines: {node: '>=14'} @@ -2940,11 +2917,6 @@ packages: engines: {node: '>=8'} dev: false - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false - /is-what@3.14.1: resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} dev: false @@ -3731,11 +3703,6 @@ packages: engines: {node: '>=6'} dev: false - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: false - /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -3853,13 +3820,6 @@ packages: path-key: 3.1.1 dev: false - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - path-key: 4.0.0 - dev: false - /nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: @@ -3882,13 +3842,6 @@ packages: mimic-fn: 2.1.0 dev: false - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - dependencies: - mimic-fn: 4.0.0 - dev: false - /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -3970,11 +3923,6 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: false - /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: false @@ -4341,11 +4289,6 @@ packages: engines: {node: '>=6'} dev: false - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: false - /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'}