diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 31b647f..70cb34c 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -10,7 +10,5 @@ "enabled": false, }, ], - "ignoreDeps": [ - "node", - ], + "ignoreDeps": ["node"], } diff --git a/.oxfmtrc.json b/.oxfmtrc.json new file mode 100644 index 0000000..d48931f --- /dev/null +++ b/.oxfmtrc.json @@ -0,0 +1,11 @@ +{ + "$schema": "./node_modules/oxfmt/configuration_schema.json", + "overrides": [ + { + "files": ["**/*.json5"], + "options": { + "quoteProps": "preserve" + } + } + ] +} diff --git a/README.md b/README.md index 72ef8dc..505305b 100644 --- a/README.md +++ b/README.md @@ -12,15 +12,10 @@ release({ repo: "release-scripts", // List of options. Choice will be available in following callback as `pkg` packages: ["release-scripts"], - toTag: (pkg, version) => - pkg === "vite" ? `v${version}` : `${pkg}@${version}`, + toTag: (pkg, version) => (pkg === "vite" ? `v${version}` : `${pkg}@${version}`), // Not shared until we find a new changelog process logChangelog: (pkg) => - console.log( - execSync( - "git log $(git describe --tags --abbrev=0)..HEAD --oneline", - ).toString(), - ), + console.log(execSync("git log $(git describe --tags --abbrev=0)..HEAD --oneline").toString()), generateChangelog: (pkg, version) => {}, // Use getPkgDir when not using a monorepo. Default to `packages/${pkg}` getPkgDir: (pkg) => ".", diff --git a/package.json b/package.json index b023edf..c68e655 100644 --- a/package.json +++ b/package.json @@ -3,21 +3,20 @@ "version": "1.7.0", "description": "@vitejs release scripts", "license": "MIT", - "type": "module", - "files": [ - "dist" - ], - "exports": "./dist/index.js", "repository": { "type": "git", "url": "git+https://github.com/vitejs/release-scripts.git" }, + "files": [ + "dist" + ], + "type": "module", + "exports": "./dist/index.js", "scripts": { "build": "rolldown -c", "test": "vitest", - "prettier": "pnpm prettier-ci --write", - "prettier-ci": "prettier --cache --ignore-path=.gitignore --check '**/*.{ts,json,md,yml}'", - "qa": "tsc && pnpm prettier-ci && pnpm build && vitest run", + "format": "oxfmt", + "qa": "tsc && pnpm format --check && pnpm build && vitest run", "release": "node scripts/release.ts" }, "dependencies": { @@ -35,7 +34,7 @@ "@types/prompts": "^2.4.9", "@types/semver": "^7.7.1", "fs-fixture": "^2.13.0", - "prettier": "^3.8.3", + "oxfmt": "^0.46.0", "rolldown": "^1.0.0-rc.16", "typescript": "^6.0.3", "vitest": "^4.1.5" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3c8ef3e..a1dae38 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,9 +45,9 @@ importers: fs-fixture: specifier: ^2.13.0 version: 2.13.0 - prettier: - specifier: ^3.8.3 - version: 3.8.3 + oxfmt: + specifier: ^0.46.0 + version: 0.46.0 rolldown: specifier: ^1.0.0-rc.16 version: 1.0.0-rc.16 @@ -93,6 +93,128 @@ packages: '@oxc-project/types@0.126.0': resolution: {integrity: sha512-oGfVtjAgwQVVpfBrbtk4e1XDyWHRFta6BS3GWVzrF8xYBT2VGQAk39yJS/wFSMrZqoiCU4oghT3Ch0HaHGIHcQ==} + '@oxfmt/binding-android-arm-eabi@0.46.0': + resolution: {integrity: sha512-b1doV4WRcJU+BESSlCvCjV+5CEr/T6h0frArAdV26Nir+gGNFNaylvDiiMPfF1pxeV0txZEs38ojzJaxBYg+ng==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxfmt/binding-android-arm64@0.46.0': + resolution: {integrity: sha512-v6+HhjsoV3GO0u2u9jLSAZrvWfTraDxKofUIQ7/ktS7tzS+epVsxdHmeM+XxuNcAY/nWxxU1Sg4JcGTNRXraBA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxfmt/binding-darwin-arm64@0.46.0': + resolution: {integrity: sha512-3eeooJGrqGIlI5MyryDZsAcKXSmKIgAD4yYtfRrRJzXZ0UTFZtiSveIur56YPrGMYZwT4XyVhHsMqrNwr1XeFA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxfmt/binding-darwin-x64@0.46.0': + resolution: {integrity: sha512-QG8BDM0CXWbu84k2SKmCqfEddPQPFiBicwtYnLqHRWZZl57HbtOLRMac/KTq2NO4AEc4ICCBpFxJIV9zcqYfkQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxfmt/binding-freebsd-x64@0.46.0': + resolution: {integrity: sha512-9DdCqS/n2ncu/Chazvt3cpgAjAmIGQDz7hFKSrNItMApyV/Ja9mz3hD4JakIE3nS8PW9smEbPWnb389QLBY4nw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxfmt/binding-linux-arm-gnueabihf@0.46.0': + resolution: {integrity: sha512-Dgs7VeE2jT0LHMhw6tPEt0xQYe54kBqHEovmWsv4FVQlegCOvlIJNx0S8n4vj8WUtpT+Z6BD2HhKJPLglLxvZg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm-musleabihf@0.46.0': + resolution: {integrity: sha512-Zxn3adhTH13JKnU4xXJj8FeEfF680XjXh3gSShKl57HCMBRde2tUJTgogV/1MSHA80PJEVrDa7r66TLVq3Ia7Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm64-gnu@0.46.0': + resolution: {integrity: sha512-+TWipjrgVM8D7aIdDD0tlr3teLTTvQTn7QTE5BpT10H1Fj82gfdn9X6nn2sDgx/MepuSCfSnzFNJq2paLL0OiA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-arm64-musl@0.46.0': + resolution: {integrity: sha512-aAUPBWJ1lGwwnxZUEDLJ94+Iy6MuwJwPxUgO4sCA5mEEyDk7b+cDQ+JpX1VR150Zoyd+D49gsrUzpUK5h587Eg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-linux-ppc64-gnu@0.46.0': + resolution: {integrity: sha512-ufBCJukyFX/UDrokP/r6BGDoTInnsDs7bxyzKAgMiZlt2Qu8GPJSJ6Zm6whIiJzKk0naxA8ilwmbO1LMw6Htxw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-riscv64-gnu@0.46.0': + resolution: {integrity: sha512-eqtlC2YmPqjun76R1gVfGLuKWx7NuEnLEAudZ7n6ipSKbCZTqIKSs1b5Y8K/JHZsRpLkeSmAAjig5HOIg8fQzQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-riscv64-musl@0.46.0': + resolution: {integrity: sha512-yccVOO2nMXkQLGgy0He3EQEwKD7NF0zEk+/OWmroznkqXyJdN6bfK0LtNnr6/14Bh3FjpYq7bP33l/VloCnxpA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-linux-s390x-gnu@0.46.0': + resolution: {integrity: sha512-aAf7fG23OQCey6VRPj9IeCraoYtpgtx0ZyJ1CXkPyT1wjzBE7c3xtuxHe/AdHaJfVVb/SXpSk8Gl1LzyQupSqw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-x64-gnu@0.46.0': + resolution: {integrity: sha512-q0JPsTMyJNjYrBvYFDz4WbVsafNZaPCZv4RnFypRotLqpKROtBZcEaXQW4eb9YmvLU3NckVemLJnzkSZSdmOxw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-x64-musl@0.46.0': + resolution: {integrity: sha512-7LsLY9Cw57GPkhSR+duI3mt9baRczK/DtHYSldQ4BEU92da9igBQNl4z7Vq5U9NNPsh1FmpKvv1q9WDtiUQR1A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-openharmony-arm64@0.46.0': + resolution: {integrity: sha512-lHiBOz8Duaku7JtRNLlps3j++eOaICPZSd8FCVmTDM4DFOPT71Bjn7g6iar1z7StXlKRweUKxWUs4sA+zWGDXg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxfmt/binding-win32-arm64-msvc@0.46.0': + resolution: {integrity: sha512-/5ktYUliP89RhgC37DBH1x20U5zPSZMy3cMEcO0j3793rbHP9MWsknBwQB6eozRzWmYrh0IFM/p20EbPvDlYlg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxfmt/binding-win32-ia32-msvc@0.46.0': + resolution: {integrity: sha512-3WTnoiuIr8XvV0DIY7SN+1uJSwKf4sPpcbHfobcRT9JutGcLaef/miyBB87jxd3aqH+mS0+G5lsgHuXLUwjjpQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxfmt/binding-win32-x64-msvc@0.46.0': + resolution: {integrity: sha512-IXxiQpkYnOwNfP23vzwSfhdpxJzyiPTY7eTn6dn3DsriKddESzM8i6kfq9R7CD/PUJwCvQT22NgtygBeug3KoA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@publint/pack@0.1.4': resolution: {integrity: sha512-HDVTWq3H0uTXiU0eeSQntcVUTPP3GamzeXI41+x7uU9J65JgWQh3qWZHblR1i0npXfFtF+mxBiU2nJH8znxWnQ==} engines: {node: '>=18'} @@ -472,6 +594,11 @@ packages: obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + oxfmt@0.46.0: + resolution: {integrity: sha512-CopwJOwPAjZ9p76fCvz+mSOJTw9/NY3cSksZK3VO/bUQ8UoEcketNgUuYS0UB3p+R9XnXe7wGGXUmyFxc7QxJA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + package-manager-detector@1.6.0: resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} @@ -489,11 +616,6 @@ packages: resolution: {integrity: sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==} engines: {node: ^10 || ^12 || >=14} - prettier@3.8.3: - resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} - engines: {node: '>=14'} - hasBin: true - prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -560,6 +682,10 @@ packages: resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} + tinypool@2.1.0: + resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} + engines: {node: ^20.0.0 || >=22.0.0} + tinyrainbow@3.1.0: resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} @@ -720,6 +846,63 @@ snapshots: '@oxc-project/types@0.126.0': {} + '@oxfmt/binding-android-arm-eabi@0.46.0': + optional: true + + '@oxfmt/binding-android-arm64@0.46.0': + optional: true + + '@oxfmt/binding-darwin-arm64@0.46.0': + optional: true + + '@oxfmt/binding-darwin-x64@0.46.0': + optional: true + + '@oxfmt/binding-freebsd-x64@0.46.0': + optional: true + + '@oxfmt/binding-linux-arm-gnueabihf@0.46.0': + optional: true + + '@oxfmt/binding-linux-arm-musleabihf@0.46.0': + optional: true + + '@oxfmt/binding-linux-arm64-gnu@0.46.0': + optional: true + + '@oxfmt/binding-linux-arm64-musl@0.46.0': + optional: true + + '@oxfmt/binding-linux-ppc64-gnu@0.46.0': + optional: true + + '@oxfmt/binding-linux-riscv64-gnu@0.46.0': + optional: true + + '@oxfmt/binding-linux-riscv64-musl@0.46.0': + optional: true + + '@oxfmt/binding-linux-s390x-gnu@0.46.0': + optional: true + + '@oxfmt/binding-linux-x64-gnu@0.46.0': + optional: true + + '@oxfmt/binding-linux-x64-musl@0.46.0': + optional: true + + '@oxfmt/binding-openharmony-arm64@0.46.0': + optional: true + + '@oxfmt/binding-win32-arm64-msvc@0.46.0': + optional: true + + '@oxfmt/binding-win32-ia32-msvc@0.46.0': + optional: true + + '@oxfmt/binding-win32-x64-msvc@0.46.0': + optional: true + '@publint/pack@0.1.4': {} '@rolldown/binding-android-arm64@1.0.0-rc.16': @@ -1021,6 +1204,30 @@ snapshots: obug@2.1.1: {} + oxfmt@0.46.0: + dependencies: + tinypool: 2.1.0 + optionalDependencies: + '@oxfmt/binding-android-arm-eabi': 0.46.0 + '@oxfmt/binding-android-arm64': 0.46.0 + '@oxfmt/binding-darwin-arm64': 0.46.0 + '@oxfmt/binding-darwin-x64': 0.46.0 + '@oxfmt/binding-freebsd-x64': 0.46.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.46.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.46.0 + '@oxfmt/binding-linux-arm64-gnu': 0.46.0 + '@oxfmt/binding-linux-arm64-musl': 0.46.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.46.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.46.0 + '@oxfmt/binding-linux-riscv64-musl': 0.46.0 + '@oxfmt/binding-linux-s390x-gnu': 0.46.0 + '@oxfmt/binding-linux-x64-gnu': 0.46.0 + '@oxfmt/binding-linux-x64-musl': 0.46.0 + '@oxfmt/binding-openharmony-arm64': 0.46.0 + '@oxfmt/binding-win32-arm64-msvc': 0.46.0 + '@oxfmt/binding-win32-ia32-msvc': 0.46.0 + '@oxfmt/binding-win32-x64-msvc': 0.46.0 + package-manager-detector@1.6.0: {} pathe@2.0.3: {} @@ -1035,8 +1242,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - prettier@3.8.3: {} - prompts@2.4.2: dependencies: kleur: 3.0.3 @@ -1111,6 +1316,8 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 + tinypool@2.1.0: {} + tinyrainbow@3.1.0: {} tslib@2.8.1: diff --git a/rolldown.config.ts b/rolldown.config.ts index 1387821..9caedfa 100644 --- a/rolldown.config.ts +++ b/rolldown.config.ts @@ -9,9 +9,7 @@ export default defineConfig({ dir: "dist", cleanDir: true, }, - external: Object.keys(pkg.dependencies).map( - (name) => new RegExp(`^${name}(?:$|/)`), - ), + external: Object.keys(pkg.dependencies).map((name) => new RegExp(`^${name}(?:$|/)`)), plugins: [ { name: "copy-types", diff --git a/scripts/release.ts b/scripts/release.ts index 28ea177..b67b79a 100644 --- a/scripts/release.ts +++ b/scripts/release.ts @@ -6,11 +6,7 @@ release({ packages: ["release-scripts"], toTag: (_, version) => `v${version}`, logChangelog: () => - console.log( - execSync( - "git log $(git describe --tags --abbrev=0)..HEAD --oneline", - ).toString(), - ), + console.log(execSync("git log $(git describe --tags --abbrev=0)..HEAD --oneline").toString()), generateChangelog: () => {}, getPkgDir: () => ".", }); diff --git a/src/changelog.ts b/src/changelog.ts index 0af8497..7357e28 100644 --- a/src/changelog.ts +++ b/src/changelog.ts @@ -7,10 +7,7 @@ import createPreset, { } from "conventional-changelog-conventionalcommits"; import type { generateChangelog as def } from "./types.d.ts"; -export const generateChangelog: typeof def = async ({ - getPkgDir, - tagPrefix, -}) => { +export const generateChangelog: typeof def = async ({ getPkgDir, tagPrefix }) => { const preset: Preset = await createPreset({ types: DEFAULT_COMMIT_TYPES.map((t: any) => ({ ...t, hidden: false })), }); diff --git a/src/publish.ts b/src/publish.ts index a66d541..3a57b7e 100644 --- a/src/publish.ts +++ b/src/publish.ts @@ -1,11 +1,5 @@ import * as semver from "semver"; -import { - args, - getActiveVersion, - getPackageInfo, - publishPackage, - step, -} from "./utils.ts"; +import { args, getActiveVersion, getPackageInfo, publishPackage, step } from "./utils.ts"; import type { publish as def } from "./types.d.ts"; export const publish: typeof def = async ({ diff --git a/src/utils.ts b/src/utils.ts index aab0935..a09cf8b 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,10 +1,7 @@ import { writeFileSync, readFileSync } from "node:fs"; import path from "node:path"; import colors from "picocolors"; -import type { - Options as TinyExecOptions, - Result as TinyExecResult, -} from "tinyexec"; +import type { Options as TinyExecOptions, Result as TinyExecResult } from "tinyexec"; import { exec } from "tinyexec"; import type { ReleaseType } from "semver"; import * as semver from "semver"; @@ -58,10 +55,7 @@ export async function dryRun( args: string[], opts?: Partial, ): Promise { - return console.log( - colors.blue(`[dryrun] ${bin} ${args.join(" ")}`), - opts || "", - ); + return console.log(colors.blue(`[dryrun] ${bin} ${args.join(" ")}`), opts || ""); } export const runIfNotDry = isDryRun ? dryRun : run; @@ -165,15 +159,11 @@ export async function publishPackage( }); } -export async function getActiveVersion( - npmName: string, -): Promise { +export async function getActiveVersion(npmName: string): Promise { try { - const { stdout } = await run( - "npm", - ["info", npmName, "version", "--json"], - { nodeOptions: { stdio: "pipe" } }, - ); + const { stdout } = await run("npm", ["info", npmName, "version", "--json"], { + nodeOptions: { stdio: "pipe" }, + }); return JSON.parse(stdout); } catch (e: any) { // Not published yet diff --git a/tests/changelog.test.ts b/tests/changelog.test.ts index 9074cd1..3642418 100644 --- a/tests/changelog.test.ts +++ b/tests/changelog.test.ts @@ -17,21 +17,16 @@ async function createProjectFixture(source?: FileTree) { onTestFinished(() => fixture.rm()); await exec("git", ["init"], { nodeOptions: { cwd: fixture.path } }); - await exec( - "git", - ["remote", "add", "origin", "https://github.com/vitejs/test.git"], - { nodeOptions: { cwd: fixture.path } }, - ); + await exec("git", ["remote", "add", "origin", "https://github.com/vitejs/test.git"], { + nodeOptions: { cwd: fixture.path }, + }); return fixture; } async function gitCommit(cwd: string, message: string) { // Write random text to file to allow conventional-changelog to detect commit - await fs.writeFile( - path.join(cwd, "dummy.txt"), - Math.random().toString(36).substring(2, 15), - ); + await fs.writeFile(path.join(cwd, "dummy.txt"), Math.random().toString(36).substring(2, 15)); await exec("git", ["add", "."], { nodeOptions: { cwd } }); await exec("git", ["commit", "-m", message], { nodeOptions: { cwd } }); } @@ -53,9 +48,7 @@ async function generateChangelogForRelease(cwd: string) { // Tag the version so conventional-changelog tracks this as the last release // and won't track this commit for the next release. - const version = JSON.parse( - await fs.readFile(path.join(cwd, "./package.json"), "utf8"), - ).version; + const version = JSON.parse(await fs.readFile(path.join(cwd, "./package.json"), "utf8")).version; const tag = `v${version}`; await exec("git", ["tag", "-a", "-m", tag, tag], { nodeOptions: { cwd } }); }