mirror of
https://github.com/changesets/action
synced 2026-10-26 16:39:56 +08:00
Migrate to ESM (#484)
* Migrate to ESM * just use `require.resolve` * reuse setup action * checkout PR head for a sec * ls things * try a thing * the dirname had a trailing whitespace, lol
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
name: Setup CI
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: ".node-version"
|
||||
cache: yarn
|
||||
|
||||
- name: Install dependencies
|
||||
shell: bash
|
||||
run: yarn install --frozen-lockfile
|
||||
@@ -13,16 +13,11 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Use Node.js 20
|
||||
uses: actions/setup-node@v4
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
|
||||
- name: Install Dependencies
|
||||
run: yarn --frozen-lockfile
|
||||
- uses: ./.github/actions/ci-setup
|
||||
|
||||
- name: Typecheck
|
||||
run: yarn typecheck
|
||||
|
||||
@@ -37,6 +37,7 @@ jobs:
|
||||
needs: release_check
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ./.github/actions/ci-setup
|
||||
|
||||
- name: Checkout pull request
|
||||
run: gh pr checkout ${{ github.event.issue.number }}
|
||||
@@ -54,14 +55,6 @@ jobs:
|
||||
if: steps.check_version_packages.outputs.version_packages == 'true'
|
||||
run: git reset --hard HEAD~1
|
||||
|
||||
- name: Use Node.js 20
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
|
||||
- name: Install Dependencies
|
||||
run: yarn --frozen-lockfile
|
||||
|
||||
- run: yarn changeset version --snapshot pr${{ github.event.issue.number }}
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
@@ -11,16 +11,8 @@ jobs:
|
||||
changesets:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Use Node.js 20
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
|
||||
- name: Install Dependencies
|
||||
run: yarn --frozen-lockfile
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ./.github/actions/ci-setup
|
||||
|
||||
- name: Build
|
||||
run: yarn build
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
v22.9.0
|
||||
Vendored
+16
@@ -0,0 +1,16 @@
|
||||
{
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"name": "Debug Current Test File",
|
||||
"autoAttachChildProcesses": true,
|
||||
"program": "${workspaceRoot}/node_modules/vitest/vitest.mjs",
|
||||
"args": ["run", "${relativeFile}"],
|
||||
"smartStep": true,
|
||||
"console": "integratedTerminal"
|
||||
}
|
||||
]
|
||||
}
|
||||
+10
-10
@@ -2,11 +2,12 @@
|
||||
"name": "@changesets/action",
|
||||
"version": "1.5.2",
|
||||
"main": "dist/index.js",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@changesets/changelog-github": "^0.4.2",
|
||||
"@changesets/cli": "^2.20.0",
|
||||
"@changesets/write": "^0.1.6",
|
||||
"@changesets/changelog-github": "^0.5.1",
|
||||
"@changesets/cli": "^2.29.3",
|
||||
"@changesets/write": "^0.4.0",
|
||||
"@types/node": "^22.15.17",
|
||||
"@types/semver": "^7.5.0",
|
||||
"esbuild": "^0.25.4",
|
||||
@@ -17,14 +18,14 @@
|
||||
"vitest": "^3.1.3"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "esbuild src/index.ts --bundle --platform=node --target=node20 --minify --outfile=dist/index.js",
|
||||
"build": "esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --minify --outfile=dist/index.js",
|
||||
"test": "vitest",
|
||||
"test:watch": "yarn test --watch",
|
||||
"typecheck": "tsc",
|
||||
"changeset": "changeset",
|
||||
"bump": "node ./scripts/bump.js",
|
||||
"release": "node ./scripts/release.js",
|
||||
"release:pr": "node ./scripts/release-pr.js"
|
||||
"bump": "node --experimental-strip-types ./scripts/bump.ts",
|
||||
"release": "node --experimental-strip-types ./scripts/release.ts",
|
||||
"release:pr": "node --experimental-strip-types ./scripts/release-pr.ts"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 20"
|
||||
@@ -34,8 +35,8 @@
|
||||
"@actions/exec": "^1.1.1",
|
||||
"@actions/github": "^6.0.1",
|
||||
"@changesets/ghcommit": "^2.0.0",
|
||||
"@changesets/pre": "^1.0.9",
|
||||
"@changesets/read": "^0.5.3",
|
||||
"@changesets/pre": "^2.0.2",
|
||||
"@changesets/read": "^0.6.5",
|
||||
"@manypkg/get-packages": "^1.1.3",
|
||||
"@octokit/core": "^5.2.1",
|
||||
"@octokit/plugin-throttling": "^8.0.0",
|
||||
@@ -43,7 +44,6 @@
|
||||
"mdast-util-to-string": "^1.0.6",
|
||||
"remark-parse": "^7.0.1",
|
||||
"remark-stringify": "^7.0.3",
|
||||
"resolve-from": "^5.0.0",
|
||||
"semver": "^7.5.3",
|
||||
"unified": "^8.3.2"
|
||||
},
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
const { exec } = require("@actions/exec");
|
||||
|
||||
process.chdir(path.join(__dirname, ".."));
|
||||
|
||||
(async () => {
|
||||
await exec("changeset", ["version"]);
|
||||
|
||||
const releaseLine = `v${require("../package.json").version.split(".")[0]}`;
|
||||
|
||||
const readmePath = path.join(__dirname, "..", "README.md");
|
||||
const content = fs.readFileSync(readmePath, "utf8");
|
||||
const updatedContent = content.replace(
|
||||
/changesets\/action@[^\s]+/g,
|
||||
`changesets/action@${releaseLine}`
|
||||
);
|
||||
fs.writeFileSync(readmePath, updatedContent);
|
||||
})();
|
||||
@@ -0,0 +1,18 @@
|
||||
import { exec } from "@actions/exec";
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import pkgJson from "../package.json" with { type: "json" };
|
||||
|
||||
process.chdir(path.join(import.meta.dirname, ".."));
|
||||
|
||||
await exec("changeset", ["version"]);
|
||||
|
||||
const releaseLine = `v${pkgJson.version.split(".")[0]}`;
|
||||
|
||||
const readmePath = path.join(import.meta.dirname, "..", "README.md");
|
||||
const content = fs.readFileSync(readmePath, "utf8");
|
||||
const updatedContent = content.replace(
|
||||
/changesets\/action@[^\s]+/g,
|
||||
`changesets/action@${releaseLine}`
|
||||
);
|
||||
fs.writeFileSync(readmePath, updatedContent);
|
||||
@@ -1,21 +0,0 @@
|
||||
const path = require("path");
|
||||
const { exec, getExecOutput } = require("@actions/exec");
|
||||
|
||||
const { version } = require("../package.json");
|
||||
const tag = `v${version}`;
|
||||
const releaseLine = "pr-release";
|
||||
|
||||
process.chdir(path.join(__dirname, ".."));
|
||||
|
||||
(async () => {
|
||||
await exec("git", ["checkout", "--detach"]);
|
||||
await exec("git", ["add", "--force", "dist"]);
|
||||
await exec("git", ["commit", "-m", tag]);
|
||||
|
||||
await exec("git", [
|
||||
"push",
|
||||
"--force",
|
||||
"origin",
|
||||
`HEAD:refs/heads/${releaseLine}`,
|
||||
]);
|
||||
})();
|
||||
@@ -0,0 +1,20 @@
|
||||
import { exec } from "@actions/exec";
|
||||
import path from "node:path";
|
||||
|
||||
import pkgJson from "../package.json" with { type: "json" };
|
||||
|
||||
const tag = `v${pkgJson.version}`;
|
||||
const releaseLine = "pr-release";
|
||||
|
||||
process.chdir(path.join(__dirname, ".."));
|
||||
|
||||
await exec("git", ["checkout", "--detach"]);
|
||||
await exec("git", ["add", "--force", "dist"]);
|
||||
await exec("git", ["commit", "-m", tag]);
|
||||
|
||||
await exec("git", [
|
||||
"push",
|
||||
"--force",
|
||||
"origin",
|
||||
`HEAD:refs/heads/${releaseLine}`,
|
||||
]);
|
||||
@@ -1,11 +1,12 @@
|
||||
const path = require("path");
|
||||
const { exec, getExecOutput } = require("@actions/exec");
|
||||
import { exec, getExecOutput } from "@actions/exec";
|
||||
import path from "node:path";
|
||||
|
||||
const { version } = require("../package.json");
|
||||
const tag = `v${version}`;
|
||||
const releaseLine = `v${version.split(".")[0]}`;
|
||||
import pkgJson from "../package.json" with { type: "json" };
|
||||
|
||||
process.chdir(path.join(__dirname, ".."));
|
||||
const tag = `v${pkgJson.version}`;
|
||||
const releaseLine = `v${pkgJson.version.split(".")[0]}`;
|
||||
|
||||
process.chdir(path.join(import.meta.dirname, ".."));
|
||||
|
||||
(async () => {
|
||||
const { exitCode, stderr } = await getExecOutput(
|
||||
+1
-1
@@ -2,7 +2,7 @@ import * as core from "@actions/core";
|
||||
import { exec, getExecOutput } from "@actions/exec";
|
||||
import * as github from "@actions/github";
|
||||
import { commitChangesFromRepo } from "@changesets/ghcommit/git";
|
||||
import { Octokit } from "./octokit";
|
||||
import type { Octokit } from "./octokit.ts";
|
||||
|
||||
type GitOptions = {
|
||||
cwd: string;
|
||||
|
||||
+5
-5
@@ -1,11 +1,11 @@
|
||||
import * as core from "@actions/core";
|
||||
import fs from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
import { Git } from "./git";
|
||||
import { setupOctokit } from "./octokit";
|
||||
import readChangesetState from "./readChangesetState";
|
||||
import { runPublish, runVersion } from "./run";
|
||||
import { fileExists } from "./utils";
|
||||
import { Git } from "./git.ts";
|
||||
import { setupOctokit } from "./octokit.ts";
|
||||
import readChangesetState from "./readChangesetState.ts";
|
||||
import { runPublish, runVersion } from "./run.ts";
|
||||
import { fileExists } from "./utils.ts";
|
||||
|
||||
const getOptionalInput = (name: string) => core.getInput(name) || undefined;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { PreState, NewChangeset } from "@changesets/types";
|
||||
import type { PreState, NewChangeset } from "@changesets/types";
|
||||
import { readPreState } from "@changesets/pre";
|
||||
import readChangesets from "@changesets/read";
|
||||
|
||||
|
||||
+7
-7
@@ -1,12 +1,12 @@
|
||||
import { Changeset } from "@changesets/types";
|
||||
import type { Changeset } from "@changesets/types";
|
||||
import writeChangeset from "@changesets/write";
|
||||
import fixturez from "fixturez";
|
||||
import fs from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { Git } from "./git";
|
||||
import { setupOctokit } from "./octokit";
|
||||
import { runVersion } from "./run";
|
||||
import { Git } from "./git.ts";
|
||||
import { setupOctokit } from "./octokit.ts";
|
||||
import { runVersion } from "./run.ts";
|
||||
|
||||
vi.mock("@actions/github", () => ({
|
||||
context: {
|
||||
@@ -21,7 +21,7 @@ vi.mock("@actions/github", () => ({
|
||||
rest: mockedGithubMethods,
|
||||
}),
|
||||
}));
|
||||
vi.mock("./git");
|
||||
vi.mock("./git.ts");
|
||||
vi.mock("@changesets/ghcommit/git");
|
||||
|
||||
let mockedGithubMethods = {
|
||||
@@ -34,11 +34,11 @@ let mockedGithubMethods = {
|
||||
},
|
||||
};
|
||||
|
||||
let f = fixturez(__dirname);
|
||||
let f = fixturez(import.meta.dirname);
|
||||
|
||||
const linkNodeModules = async (cwd: string) => {
|
||||
await fs.symlink(
|
||||
path.join(__dirname, "..", "node_modules"),
|
||||
path.join(import.meta.dirname, "..", "node_modules"),
|
||||
path.join(cwd, "node_modules")
|
||||
);
|
||||
};
|
||||
|
||||
+25
-12
@@ -1,22 +1,24 @@
|
||||
import * as core from "@actions/core";
|
||||
import { exec, getExecOutput } from "@actions/exec";
|
||||
import * as github from "@actions/github";
|
||||
import { PreState } from "@changesets/types";
|
||||
import { Package, getPackages } from "@manypkg/get-packages";
|
||||
import type { PreState } from "@changesets/types";
|
||||
import { type Package, getPackages } from "@manypkg/get-packages";
|
||||
import fs from "node:fs/promises";
|
||||
import { createRequire } from "node:module";
|
||||
import path from "node:path";
|
||||
import resolveFrom from "resolve-from";
|
||||
import semverLt from "semver/functions/lt";
|
||||
import { Git } from "./git";
|
||||
import { Octokit } from "./octokit";
|
||||
import readChangesetState from "./readChangesetState";
|
||||
import semverLt from "semver/functions/lt.js";
|
||||
import { Git } from "./git.ts";
|
||||
import type { Octokit } from "./octokit.ts";
|
||||
import readChangesetState from "./readChangesetState.ts";
|
||||
import {
|
||||
getChangedPackages,
|
||||
getChangelogEntry,
|
||||
getVersionsByDirectory,
|
||||
isErrorWithCode,
|
||||
sortTheThings,
|
||||
} from "./utils";
|
||||
} from "./utils.ts";
|
||||
|
||||
const require = createRequire(import.meta.url);
|
||||
|
||||
// GitHub Issues/PRs messages have a max size limit on the
|
||||
// message body payload.
|
||||
@@ -162,7 +164,9 @@ export async function runPublish({
|
||||
|
||||
const requireChangesetsCliPkgJson = (cwd: string) => {
|
||||
try {
|
||||
return require(resolveFrom(cwd, "@changesets/cli/package.json"));
|
||||
return require(require.resolve("@changesets/cli/package.json", {
|
||||
paths: [cwd],
|
||||
}));
|
||||
} catch (err) {
|
||||
if (isErrorWithCode(err, "MODULE_NOT_FOUND")) {
|
||||
throw new Error(
|
||||
@@ -286,9 +290,18 @@ export async function runVersion({
|
||||
let cmd = semverLt(changesetsCliPkgJson.version, "2.0.0")
|
||||
? "bump"
|
||||
: "version";
|
||||
await exec("node", [resolveFrom(cwd, "@changesets/cli/bin.js"), cmd], {
|
||||
cwd,
|
||||
});
|
||||
await exec(
|
||||
"node",
|
||||
[
|
||||
require.resolve("@changesets/cli/bin.js", {
|
||||
paths: [cwd],
|
||||
}),
|
||||
cmd,
|
||||
],
|
||||
{
|
||||
cwd,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
let changedPackages = await getChangedPackages(cwd, versionsByDirectory);
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { expect, test } from "vitest";
|
||||
import { BumpLevels, getChangelogEntry, sortTheThings } from "./utils";
|
||||
import { BumpLevels, getChangelogEntry, sortTheThings } from "./utils.ts";
|
||||
|
||||
let changelog = `# @keystone-alpha/email
|
||||
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ import fs from "node:fs/promises";
|
||||
import type { Root } from "mdast";
|
||||
// @ts-ignore
|
||||
import mdastToString from "mdast-util-to-string";
|
||||
import { getPackages, Package } from "@manypkg/get-packages";
|
||||
import { getPackages, type Package } from "@manypkg/get-packages";
|
||||
|
||||
export const BumpLevels = {
|
||||
dep: 0,
|
||||
|
||||
+9
-7
@@ -1,12 +1,14 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "esnext",
|
||||
"module": "node18",
|
||||
"noEmit": true,
|
||||
"isolatedModules": true,
|
||||
"strict": true,
|
||||
"moduleResolution": "node16",
|
||||
"allowImportingTsExtensions": true,
|
||||
"erasableSyntaxOnly": true,
|
||||
"skipLibCheck": true
|
||||
"isolatedModules": true,
|
||||
"module": "node18",
|
||||
"moduleResolution": "node16",
|
||||
"noEmit": true,
|
||||
"resolveJsonModule": true,
|
||||
"strict": true,
|
||||
"target": "esnext",
|
||||
"verbatimModuleSyntax": true
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user