From c1cfcd00ac2f3893eb3b6cea7a3a283c00585bf7 Mon Sep 17 00:00:00 2001 From: Jared Palmer Date: Thu, 27 Jan 2022 07:47:55 -0500 Subject: [PATCH] Set packageManager in create-turbo before install --- create-turbo/src/getPackageManagerVersion.ts | 15 +++++++++ create-turbo/src/index.ts | 33 +++++--------------- create-turbo/src/types.ts | 1 + 3 files changed, 23 insertions(+), 26 deletions(-) create mode 100644 create-turbo/src/getPackageManagerVersion.ts create mode 100644 create-turbo/src/types.ts diff --git a/create-turbo/src/getPackageManagerVersion.ts b/create-turbo/src/getPackageManagerVersion.ts new file mode 100644 index 0000000000000..c65428bff2e84 --- /dev/null +++ b/create-turbo/src/getPackageManagerVersion.ts @@ -0,0 +1,15 @@ +import { execSync } from "child_process"; +import { PackageManager } from "./types"; + +export const getPackageManagerVersion = (ws: PackageManager): string => { + switch (ws) { + case "yarn": + return execSync("yarn --version").toString().trim(); + case "pnpm": + return execSync("pnpm --version").toString().trim(); + case "npm": + return execSync("npm --version").toString().trim(); + default: + throw new Error(`${ws} is not supported`); + } +}; diff --git a/create-turbo/src/index.ts b/create-turbo/src/index.ts index aedaaaf318726..3c51d770ddddd 100644 --- a/create-turbo/src/index.ts +++ b/create-turbo/src/index.ts @@ -2,7 +2,7 @@ import * as path from "path"; import execa from "execa"; -import fs from 'fs'; +import fs from "fs"; import fse from "fs-extra"; import inquirer from "inquirer"; import ora from "ora"; @@ -14,8 +14,9 @@ import cliPkgJson from "../package.json"; import { shouldUseYarn } from "./shouldUseYarn"; import { shouldUsePnpm, getNpxCommandOfPnpm } from "./shouldUsePnpm"; import { tryGitInit } from "./git"; +import { PackageManager } from "./types"; +import { getPackageManagerVersion } from "./getPackageManagerVersion"; -type PackageManager = "yarn" | "pnpm" | "npm"; interface Answers { packageManager: PackageManager; } @@ -154,15 +155,6 @@ async function run() { await fse.copy(serverTemplate, projectDir, { overwrite: true }); } - // let serverLangTemplate = path.resolve( - // __dirname, - // "templates", - // `${answers.packageManager}_ts` - // ); - // if (fse.existsSync(serverLangTemplate)) { - // await fse.copy(serverLangTemplate, projectDir, { overwrite: true }); - // } - // rename dotfiles await fse.move( path.join(projectDir, "gitignore"), @@ -181,6 +173,10 @@ async function run() { } }); + appPkg.packageManager = `${answers.packageManager}@${getPackageManagerVersion( + answers.packageManager + )}`; + // write package.json await fse.writeFile( path.join(projectDir, "package.json"), @@ -213,21 +209,6 @@ async function run() { }, }).start(); - const data = fs.readFileSync(`${projectDir}/package.json`, "utf8"); - const pkg = JSON.parse(data.toString()); - switch (answers.packageManager) { - case "yarn": - pkg.packageManager = "yarn@1.22.17"; - break; - case "pnpm": - pkg.packageManager = "pnpm@6.26.1"; - break; - case "npm": - pkg.packageManager = "npm@8.3.0"; - break; - } - fs.writeFileSync(`${projectDir}/package.json`, JSON.stringify(pkg, null, 2)); - await execa(`${answers.packageManager}`, [`install`], { stdio: "ignore", cwd: projectDir, diff --git a/create-turbo/src/types.ts b/create-turbo/src/types.ts new file mode 100644 index 0000000000000..16d65e63502dd --- /dev/null +++ b/create-turbo/src/types.ts @@ -0,0 +1 @@ +export type PackageManager = "yarn" | "pnpm" | "npm";