UNPKG

@mlaursen/release-script

Version:

The release script I normally use for packages I publish to npm

40 lines (39 loc) 1.58 kB
import { execSync } from "node:child_process"; import { continueRelease } from "./continueRelease.js"; import { createGetTagName } from "./createGetTagName.js"; import { createRelease, } from "./createRelease.js"; import { getCurrentChangeset } from "./getCurrentChangeset.js"; import { getPackageManager } from "./getPackageManager.js"; const exec = (command, opts) => { console.log(command); execSync(command, opts); }; export async function release(options) { const { owner, repo, envPath, cleanCommand = "clean", buildCommand = "build", skipBuild = !buildCommand, mainPackage, getTagName = createGetTagName(mainPackage), versionMessage = "build(version): version package", } = options; const pkgManager = await getPackageManager(); if (!skipBuild) { exec(`${pkgManager} ${cleanCommand}`); exec(`${pkgManager} ${buildCommand}`); } exec(`${pkgManager} changeset`, { stdio: "inherit" }); await continueRelease(); exec("git add -u"); exec("git add .changeset"); const changeset = await getCurrentChangeset(); exec("pnpm changeset version", { stdio: "inherit" }); exec("git add -u"); await continueRelease(); exec(`git commit -m "${versionMessage}"`); exec(`${pkgManager} changeset publish`, { stdio: "inherit" }); const tagName = await getTagName(); await continueRelease(); exec("git push --follow-tags"); await createRelease({ owner, repo, body: changeset, tagName, envPath, prerelease: /-(alpha|next|beta)\.\d+$/.test(tagName), }); }