From d6bd867cbf25a72170f3fc76b5804f6ad92e3453 Mon Sep 17 00:00:00 2001 From: zmj Date: Fri, 17 Dec 2021 23:22:34 +0800 Subject: [PATCH] feat(new): support to skip install --- actions/new.action.ts | 57 +++++++++++-------------- lib/package-managers/package-manager.ts | 3 +- 2 files changed, 28 insertions(+), 32 deletions(-) diff --git a/actions/new.action.ts b/actions/new.action.ts index 39d971485..a336cf86f 100644 --- a/actions/new.action.ts +++ b/actions/new.action.ts @@ -141,42 +141,35 @@ const installPackages = async ( (option) => option.name === 'package-manager', )!.value as string; - let packageManager: AbstractPackageManager; if (dryRunMode) { console.info(); console.info(chalk.green(MESSAGES.DRY_RUN_MODE)); console.info(); return; } - if (inputPackageManager !== undefined) { - try { - packageManager = PackageManagerFactory.create(inputPackageManager); - await packageManager.install(installDirectory, inputPackageManager); - } catch (error) { - if (error && error.message) { - console.error(chalk.red(error.message)); - } + try { + const packageManagerName = + inputPackageManager || (await askForPackageManager())['package-manager']; + const packageManager: AbstractPackageManager | undefined = + packageManagerName === PackageManager.NONE + ? undefined + : PackageManagerFactory.create(packageManagerName); + // will not install if user select `none` + await packageManager?.install(installDirectory, packageManagerName); + } catch (error) { + if (error && error.message) { + console.error(chalk.red(error.message)); } - } else { - packageManager = await selectPackageManager(); - await packageManager.install( - installDirectory, - packageManager.name.toLowerCase(), - ); } }; -const selectPackageManager = async (): Promise => { - const answers: Answers = await askForPackageManager(); - return PackageManagerFactory.create(answers['package-manager']); -}; - const askForPackageManager = async (): Promise => { const questions: Question[] = [ generateSelect('package-manager')(MESSAGES.PACKAGE_MANAGER_QUESTION)([ PackageManager.NPM, PackageManager.YARN, - PackageManager.PNPM + PackageManager.PNPM, + PackageManager.NONE, ]), ]; const prompt = inquirer.createPromptModule(); @@ -225,16 +218,18 @@ const printCollective = () => { emptyLine(); }; -const print = (color: string | null = null) => (str = '') => { - const terminalCols = retrieveCols(); - const strLength = str.replace(/\u001b\[[0-9]{2}m/g, '').length; - const leftPaddingLength = Math.floor((terminalCols - strLength) / 2); - const leftPadding = ' '.repeat(Math.max(leftPaddingLength, 0)); - if (color) { - str = (chalk as any)[color](str); - } - console.log(leftPadding, str); -}; +const print = + (color: string | null = null) => + (str = '') => { + const terminalCols = retrieveCols(); + const strLength = str.replace(/\u001b\[[0-9]{2}m/g, '').length; + const leftPaddingLength = Math.floor((terminalCols - strLength) / 2); + const leftPadding = ' '.repeat(Math.max(leftPaddingLength, 0)); + if (color) { + str = (chalk as any)[color](str); + } + console.log(leftPadding, str); + }; export const retrieveCols = () => { const defaultCols = 80; diff --git a/lib/package-managers/package-manager.ts b/lib/package-managers/package-manager.ts index 19d7bb14e..f3293859b 100644 --- a/lib/package-managers/package-manager.ts +++ b/lib/package-managers/package-manager.ts @@ -1,5 +1,6 @@ export enum PackageManager { NPM = 'npm', YARN = 'yarn', - PNPM = 'pnpm' + PNPM = 'pnpm', + NONE = 'none (skip installing packages)', }