diff --git a/packages/create-qawolf/src/cli.ts b/packages/create-qawolf/src/cli.ts index f20c0f865..36a06b502 100644 --- a/packages/create-qawolf/src/cli.ts +++ b/packages/create-qawolf/src/cli.ts @@ -1,5 +1,5 @@ import input from '@inquirer/input'; -import { cyan, bold } from 'kleur'; +import { bold, cyan } from 'kleur'; import { getPackageJsonPath } from './packageJson'; import { Packages } from './types'; @@ -15,12 +15,19 @@ export const logError = (error: Error): void => { } }; -export const logNpmInstall = (packages: Packages): void => { +export const logInstallDependencies = ( + packages: Packages, + isYarn = false, +): void => { console.log(cyan(`Installing dependencies`)); Object.keys(packages).forEach(name => { const version = packages[name]; - console.log(cyan(`npm install --save-dev ${name}@${version}`)); + console.log( + cyan( + `${isYarn ? 'yarn add' : 'npm install --save-dev'} ${name}@${version}`, + ), + ); }); }; @@ -34,8 +41,12 @@ export const logUseTypeScript = (useTypeScript: boolean): void => { ); }; -export const promptRootDir = (): Promise => - input({ +export const promptRootDir = (): Promise => { + // create a line break before our CLI prompt + console.log(); + + return input({ message: 'rootDir: Directory to create tests in', default: '.qawolf', }); +}; diff --git a/packages/create-qawolf/src/config.ts b/packages/create-qawolf/src/config.ts index 3dc4e655e..76de805c8 100644 --- a/packages/create-qawolf/src/config.ts +++ b/packages/create-qawolf/src/config.ts @@ -17,6 +17,9 @@ export const detectTypeScript = async (): Promise => { }); }; +export const detectYarn = (): boolean => + (process.env.npm_execpath || '').includes('yarn'); + export const writeConfig = async ({ rootDir, useTypeScript, diff --git a/packages/create-qawolf/src/index.ts b/packages/create-qawolf/src/index.ts index 75e718765..0e9345e0c 100644 --- a/packages/create-qawolf/src/index.ts +++ b/packages/create-qawolf/src/index.ts @@ -2,18 +2,19 @@ import { install as installCi } from 'playwright-ci'; import { logError, - logNpmInstall, + logInstallDependencies, logUseTypeScript, promptRootDir, } from './cli'; -import { detectTypeScript, writeConfig } from './config'; -import { addDevDependencies, readPackageJson, npmInstall } from './packageJson'; +import { detectTypeScript, detectYarn, writeConfig } from './config'; +import { + addDevDependencies, + installDependencies, + readPackageJson, +} from './packageJson'; (async (): Promise => { try { - // create a new line for yarn create - console.log(); - // run this first to ensure package.json await readPackageJson(); @@ -27,8 +28,10 @@ import { addDevDependencies, readPackageJson, npmInstall } from './packageJson'; await writeConfig({ rootDir, useTypeScript }); const packages = await addDevDependencies(useTypeScript); - logNpmInstall(packages); - npmInstall(); + + const isYarn = detectYarn(); + logInstallDependencies(packages, isYarn); + installDependencies(isYarn); } catch (error) { logError(error); process.exit(1); diff --git a/packages/create-qawolf/src/packageJson.ts b/packages/create-qawolf/src/packageJson.ts index 9ed2e3710..0d7d1f40a 100644 --- a/packages/create-qawolf/src/packageJson.ts +++ b/packages/create-qawolf/src/packageJson.ts @@ -76,6 +76,6 @@ export const addDevDependencies = async ( return packages; }; -export const npmInstall = (): void => { - execSync('npm install', { stdio: 'inherit' }); +export const installDependencies = (useYarn = false): void => { + execSync(useYarn ? 'yarn' : 'npm install', { stdio: 'inherit' }); };