From b20002182fba823094d72d8bbc2ebd4e0ace5b5b Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Thu, 16 Jan 2025 13:35:25 -0500 Subject: [PATCH 1/2] feat: use remove-dependencies in blockVitest --- package.json | 1 + pnpm-lock.yaml | 10 ++++++++++ src/next/blocks/blockVitest.test.ts | 12 +++++++++++- src/next/blocks/blockVitest.ts | 7 +++++++ src/steps/uninstallPackages.ts | 5 +++-- 5 files changed, 32 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 5453ff163..eef993176 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,7 @@ "parse-package-name": "^1.0.0", "populate-all-contributors-for-repository": "^0.1.2", "prettier": "^3.4.2", + "remove-dependencies": "^0.1.0", "remove-undefined-objects": "^5.0.0", "replace-in-file": "^8.3.0", "rimraf": "^6.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 936d0a132..132e89f3b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -83,6 +83,9 @@ importers: prettier: specifier: ^3.4.2 version: 3.4.2 + remove-dependencies: + specifier: ^0.1.0 + version: 0.1.0 remove-undefined-objects: specifier: ^5.0.0 version: 5.0.0 @@ -3754,6 +3757,11 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || ^22.0.0} hasBin: true + remove-dependencies@0.1.0: + resolution: {integrity: sha512-K9PXkqGYkuQbRVf57SI/t3xBhw87pLbvd94zir6v4+ptJQ0TSjLWtd0ZlebtQEOfnxSchz+wgzTvG7KNpLMAbg==} + engines: {node: '>=18.3.0'} + hasBin: true + remove-undefined-objects@5.0.0: resolution: {integrity: sha512-DE8C17uIWeHaY4SqIkpQpHXm0MIdYHtIqjieWuh0I2PG8YcZRxFE6pqeEhnRetsrQ7Lu9uvSNQkDbg95NLpvnQ==} engines: {node: '>=18'} @@ -8194,6 +8202,8 @@ snapshots: - supports-color - typescript + remove-dependencies@0.1.0: {} + remove-undefined-objects@5.0.0: {} repeat-string@1.6.1: {} diff --git a/src/next/blocks/blockVitest.test.ts b/src/next/blocks/blockVitest.test.ts index 2323f5efd..bd1217f19 100644 --- a/src/next/blocks/blockVitest.test.ts +++ b/src/next/blocks/blockVitest.test.ts @@ -1,9 +1,13 @@ import { testBlock } from "create-testers"; -import { describe, expect, test } from "vitest"; +import { describe, expect, test, vi } from "vitest"; import { blockVitest } from "./blockVitest.js"; import { optionsBase } from "./options.fakes.js"; +vi.mock("../utils/resolveBin.js", () => ({ + resolveBin: (bin: string) => `path/to/${bin}`, +})); + describe("blockVitest", () => { test("without addons or mode", () => { const creation = testBlock(blockVitest, { @@ -467,6 +471,12 @@ describe("blockVitest", () => { ", }, "scripts": [ + { + "commands": [ + "node path/to/remove-dependencies/bin/index.js eslint-plugin-jest eslint-plugin-mocha eslint-plugin-vitest jest mocha", + ], + "phase": 3, + }, { "commands": [ "rm .mocha* jest.config.* vitest.config.*", diff --git a/src/next/blocks/blockVitest.ts b/src/next/blocks/blockVitest.ts index 9ba0c5312..192739f17 100644 --- a/src/next/blocks/blockVitest.ts +++ b/src/next/blocks/blockVitest.ts @@ -1,6 +1,7 @@ import { z } from "zod"; import { base } from "../base.js"; +import { resolveBin } from "../utils/resolveBin.js"; import { blockCSpell } from "./blockCSpell.js"; import { blockDevelopmentDocs } from "./blockDevelopmentDocs.js"; import { blockESLint } from "./blockESLint.js"; @@ -32,6 +33,12 @@ export const blockVitest = base.createBlock({ migrate() { return { scripts: [ + { + commands: [ + `node ${resolveBin("remove-dependencies/bin/index.js")} eslint-plugin-jest eslint-plugin-mocha eslint-plugin-vitest jest mocha`, + ], + phase: CommandPhase.Process, + }, { commands: ["rm .mocha* jest.config.* vitest.config.*"], phase: CommandPhase.Migrations, diff --git a/src/steps/uninstallPackages.ts b/src/steps/uninstallPackages.ts index 6dee58937..b592320d3 100644 --- a/src/steps/uninstallPackages.ts +++ b/src/steps/uninstallPackages.ts @@ -18,19 +18,20 @@ export async function uninstallPackages(offline: boolean | undefined) { "git-url-parse", "html-to-text", "image-size", - "input-from-file", "input-from-file-json", + "input-from-file", "input-from-script", "js-yaml", "lazy-value", "npm-user", "object-strings-deep", - "octokit", "octokit-from-auth", + "octokit", "parse-author", "parse-package-name", "populate-all-contributors-for-repository", "prettier", + "remove-dependencies", "remove-undefined-objects", "replace-in-file", "rimraf", From 8f43a22681dbbc1a408269841d3a81cc5931b0ac Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Thu, 16 Jan 2025 13:39:20 -0500 Subject: [PATCH 2/2] blockTSup too, with Babel --- src/next/blocks/blockTSup.test.ts | 6 ++++++ src/next/blocks/blockTSup.ts | 12 ++++++++++++ src/steps/uninstallPackages.ts | 4 ++-- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/next/blocks/blockTSup.test.ts b/src/next/blocks/blockTSup.test.ts index fd7a10225..360102672 100644 --- a/src/next/blocks/blockTSup.test.ts +++ b/src/next/blocks/blockTSup.test.ts @@ -176,6 +176,12 @@ describe("blockTSup", () => { ", }, "scripts": [ + { + "commands": [ + "node path/to/remove-dependencies/bin/index.js @babel/core babel", + ], + "phase": 3, + }, { "commands": [ "rm -rf .babelrc* babel.config.* dist lib", diff --git a/src/next/blocks/blockTSup.ts b/src/next/blocks/blockTSup.ts index dfb82d60b..30b8e650b 100644 --- a/src/next/blocks/blockTSup.ts +++ b/src/next/blocks/blockTSup.ts @@ -1,6 +1,8 @@ +import { vi } from "vitest"; import { z } from "zod"; import { base } from "../base.js"; +import { resolveBin } from "../utils/resolveBin.js"; import { blockDevelopmentDocs } from "./blockDevelopmentDocs.js"; import { blockESLint } from "./blockESLint.js"; import { blockGitHubActionsCI } from "./blockGitHubActionsCI.js"; @@ -8,6 +10,10 @@ import { blockPackageJson } from "./blockPackageJson.js"; import { getPackageDependencies } from "./packageData.js"; import { CommandPhase } from "./phases.js"; +vi.mock("../utils/resolveBin.js", () => ({ + resolveBin: (bin: string) => `path/to/${bin}`, +})); + export const blockTSup = base.createBlock({ about: { name: "tsup", @@ -19,6 +25,12 @@ export const blockTSup = base.createBlock({ migrate() { return { scripts: [ + { + commands: [ + `node ${resolveBin("remove-dependencies/bin/index.js")} @babel/core babel`, + ], + phase: CommandPhase.Process, + }, { commands: ["rm -rf .babelrc* babel.config.* dist lib"], phase: CommandPhase.Migrations, diff --git a/src/steps/uninstallPackages.ts b/src/steps/uninstallPackages.ts index b592320d3..6eab6589c 100644 --- a/src/steps/uninstallPackages.ts +++ b/src/steps/uninstallPackages.ts @@ -18,15 +18,15 @@ export async function uninstallPackages(offline: boolean | undefined) { "git-url-parse", "html-to-text", "image-size", - "input-from-file-json", "input-from-file", + "input-from-file-json", "input-from-script", "js-yaml", "lazy-value", "npm-user", "object-strings-deep", - "octokit-from-auth", "octokit", + "octokit-from-auth", "parse-author", "parse-package-name", "populate-all-contributors-for-repository",