@pob/version 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/index-node.mjs +45 -22
- package/dist/index-node.mjs.map +1 -1
- package/package.json +6 -1
- package/src/commands/version.ts +14 -2
- package/src/pm/BunPackageManager.ts +20 -3
- package/src/pm/PackageManager.ts +12 -2
- package/src/pm/YarnPackageManager.ts +28 -18
- package/.editorconfig +0 -13
- package/.yo-rc.json +0 -13
- package/__fixtures__/bun-basic/package.json +0 -4
- package/__fixtures__/bun-no-version/package.json +0 -3
- package/__fixtures__/yarn-basic/package.json +0 -4
- package/__fixtures__/yarn-basic/yarn.lock +0 -12
- package/__fixtures__/yarn-monorepo/package.json +0 -7
- package/__fixtures__/yarn-monorepo/packages/package-1/package.json +0 -4
- package/__fixtures__/yarn-monorepo/packages/package-2/package.json +0 -7
- package/__fixtures__/yarn-monorepo/packages/package-3/package.json +0 -7
- package/__fixtures__/yarn-monorepo/packages/package-4/package.json +0 -7
- package/__fixtures__/yarn-monorepo/packages/package-5/package.json +0 -8
- package/__fixtures__/yarn-monorepo/yarn.lock +0 -0
- package/__fixtures__/yarn-monorepo-duplicate-names/package.json +0 -7
- package/__fixtures__/yarn-monorepo-duplicate-names/packages/pkg-a/package.json +0 -4
- package/__fixtures__/yarn-monorepo-duplicate-names/packages/pkg-b/package.json +0 -4
- package/__fixtures__/yarn-monorepo-invalid-package-json/package.json +0 -7
- package/__fixtures__/yarn-monorepo-invalid-package-json/packages/pkg-with-invalid-json/package.json +0 -5
- package/__fixtures__/yarn-monorepo-nested/package.json +0 -9
- package/__fixtures__/yarn-monorepo-nested/packages/deep-nested/package.json +0 -4
- package/__fixtures__/yarn-monorepo-nested/packages/nested-1/packages/package-nested.json +0 -4
- package/__fixtures__/yarn-monorepo-nested/packages/nested-1/packages/package.json +0 -4
- package/__fixtures__/yarn-monorepo-nested/packages/package-1/package.json +0 -4
- package/__fixtures__/yarn-monorepo-no-name/package.json +0 -7
- package/__fixtures__/yarn-monorepo-no-name/packages/no-name-package/package.json +0 -3
- package/__fixtures__/yarn-monorepo-object-form/package.json +0 -9
- package/__fixtures__/yarn-monorepo-object-form/packages/package-1/package.json +0 -4
- package/__fixtures__/yarn-monorepo-object-form/packages/package-2/package.json +0 -4
- package/__fixtures__/yarn-monorepo-object-form/packages/package-3/package.json +0 -4
- package/__fixtures__/yarn-monorepo-object-form/packages/package-4/package.json +0 -4
- package/__fixtures__/yarn-monorepo-object-form/packages/package-5/package.json +0 -4
- package/__fixtures__/yarn-no-version/package.json +0 -3
- package/__fixtures__/yarn-no-version/yarn.lock +0 -0
- package/__fixtures__/yarn-with-lifecycle/package.json +0 -7
- package/__fixtures__/yarn-with-lifecycle/yarn.lock +0 -11
- package/rollup.config.mjs +0 -12
- package/tsconfig.json +0 -21
- package/vitest.config.js +0 -9
package/src/commands/version.ts
CHANGED
|
@@ -78,6 +78,7 @@ export interface VersionCommandOptions {
|
|
|
78
78
|
cwdIsRoot?: boolean;
|
|
79
79
|
packageManager?: "bun" | "yarn";
|
|
80
80
|
publish?: boolean;
|
|
81
|
+
publishProvenance?: boolean;
|
|
81
82
|
}
|
|
82
83
|
|
|
83
84
|
interface BumpableWorkspace {
|
|
@@ -807,7 +808,9 @@ export const versionCommandAction = async (
|
|
|
807
808
|
}
|
|
808
809
|
await logger.group("Publishing packages", async () => {
|
|
809
810
|
if (packageManager.publishWorkspaces) {
|
|
810
|
-
await packageManager.publishWorkspaces(rootWorkspace
|
|
811
|
+
await packageManager.publishWorkspaces(rootWorkspace, {
|
|
812
|
+
provenance: options.publishProvenance,
|
|
813
|
+
});
|
|
811
814
|
} else {
|
|
812
815
|
for (const [workspace] of bumpedWorkspaces.entries()) {
|
|
813
816
|
if (workspace.pkg.private) {
|
|
@@ -818,7 +821,9 @@ export const versionCommandAction = async (
|
|
|
818
821
|
}
|
|
819
822
|
|
|
820
823
|
logger.info(`Publishing ${getWorkspaceName(workspace)}`);
|
|
821
|
-
await packageManager.publish(workspace
|
|
824
|
+
await packageManager.publish(workspace, {
|
|
825
|
+
provenance: options.publishProvenance,
|
|
826
|
+
});
|
|
822
827
|
}
|
|
823
828
|
}
|
|
824
829
|
});
|
|
@@ -843,6 +848,7 @@ export const Defaults: VersionCommandOptions = {
|
|
|
843
848
|
gitRemote: "origin",
|
|
844
849
|
verbose: false,
|
|
845
850
|
publish: false,
|
|
851
|
+
publishProvenance: false,
|
|
846
852
|
};
|
|
847
853
|
|
|
848
854
|
export default program
|
|
@@ -936,4 +942,10 @@ export default program
|
|
|
936
942
|
).choices(["bun", "yarn"]),
|
|
937
943
|
)
|
|
938
944
|
.addOption(new Option("--publish", "Publish after versioning").default(false))
|
|
945
|
+
.addOption(
|
|
946
|
+
new Option(
|
|
947
|
+
"--publish-provenance",
|
|
948
|
+
"Generate provenance attestation when publishing (if supported by package manager)",
|
|
949
|
+
).default(false),
|
|
950
|
+
)
|
|
939
951
|
.action((options) => versionCommandAction(options));
|
|
@@ -1,12 +1,29 @@
|
|
|
1
1
|
import { execCommand } from "../utils/execCommand.ts";
|
|
2
|
-
import type {
|
|
2
|
+
import type {
|
|
3
|
+
PackageManager,
|
|
4
|
+
PackageManagerPublishOptions,
|
|
5
|
+
} from "./PackageManager.ts";
|
|
3
6
|
|
|
4
7
|
export const BunPackageManager: PackageManager = {
|
|
5
8
|
async runScript(workspace, scriptName) {
|
|
6
9
|
await execCommand(workspace, ["bun", "run", scriptName], "inherit");
|
|
7
10
|
},
|
|
8
11
|
|
|
9
|
-
async publish(workspace) {
|
|
10
|
-
|
|
12
|
+
async publish(workspace, options?: PackageManagerPublishOptions) {
|
|
13
|
+
if (options?.provenance) {
|
|
14
|
+
// Use bun pack for provenance support
|
|
15
|
+
// See: https://github.com/oven-sh/bun/issues/15601
|
|
16
|
+
const packResult = await execCommand(workspace, ["bun", "pack"]);
|
|
17
|
+
// Extract .tgz filename from output (find line ending with .tgz)
|
|
18
|
+
const lines = packResult.stdout.trim().split("\n");
|
|
19
|
+
const tgzPath =
|
|
20
|
+
lines.find((line) => line.endsWith(".tgz")) ?? lines.at(-1);
|
|
21
|
+
if (!tgzPath) {
|
|
22
|
+
throw new Error("Failed to extract .tgz path from bun pack output");
|
|
23
|
+
}
|
|
24
|
+
await execCommand(workspace, ["npm", "publish", "--provenance", tgzPath]);
|
|
25
|
+
} else {
|
|
26
|
+
await execCommand(workspace, ["bun", "publish"], "inherit");
|
|
27
|
+
}
|
|
11
28
|
},
|
|
12
29
|
};
|
package/src/pm/PackageManager.ts
CHANGED
|
@@ -3,11 +3,21 @@ import type { Workspace } from "../utils/packageUtils.ts";
|
|
|
3
3
|
import { BunPackageManager } from "./BunPackageManager.ts";
|
|
4
4
|
import { YarnPackageManager } from "./YarnPackageManager.ts";
|
|
5
5
|
|
|
6
|
+
export interface PackageManagerPublishOptions {
|
|
7
|
+
provenance?: boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
6
10
|
export interface PackageManager {
|
|
7
11
|
installOnPackageContentChange?: (rootWorkspace: Workspace) => Promise<void>;
|
|
8
12
|
runScript: (workspace: Workspace, scriptName: string) => Promise<void>;
|
|
9
|
-
publish: (
|
|
10
|
-
|
|
13
|
+
publish: (
|
|
14
|
+
workspace: Workspace,
|
|
15
|
+
options?: PackageManagerPublishOptions,
|
|
16
|
+
) => Promise<void>;
|
|
17
|
+
publishWorkspaces?: (
|
|
18
|
+
rootWorkspace: Workspace,
|
|
19
|
+
options?: PackageManagerPublishOptions,
|
|
20
|
+
) => Promise<void>;
|
|
11
21
|
}
|
|
12
22
|
|
|
13
23
|
export const autoDetectPackageManager = (
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { execCommand } from "../utils/execCommand.ts";
|
|
2
2
|
import type { Workspace } from "../utils/packageUtils.ts";
|
|
3
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
PackageManager,
|
|
5
|
+
PackageManagerPublishOptions,
|
|
6
|
+
} from "./PackageManager.ts";
|
|
4
7
|
|
|
5
8
|
export const YarnPackageManager: PackageManager = {
|
|
6
9
|
async installOnPackageContentChange(rootWorkspace: Workspace) {
|
|
@@ -11,24 +14,31 @@ export const YarnPackageManager: PackageManager = {
|
|
|
11
14
|
await execCommand(workspace, ["yarn", "run", scriptName], "inherit");
|
|
12
15
|
},
|
|
13
16
|
|
|
14
|
-
async publish(workspace: Workspace) {
|
|
15
|
-
|
|
17
|
+
async publish(workspace: Workspace, options?: PackageManagerPublishOptions) {
|
|
18
|
+
const publishArgs = ["yarn", "npm", "publish"];
|
|
19
|
+
if (options?.provenance) {
|
|
20
|
+
publishArgs.push("--provenance");
|
|
21
|
+
}
|
|
22
|
+
await execCommand(workspace, publishArgs, "inherit");
|
|
16
23
|
},
|
|
17
24
|
|
|
18
|
-
async publishWorkspaces(
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
)
|
|
25
|
+
async publishWorkspaces(
|
|
26
|
+
rootWorkspace: Workspace,
|
|
27
|
+
options?: PackageManagerPublishOptions,
|
|
28
|
+
) {
|
|
29
|
+
const publishArgs = [
|
|
30
|
+
"yarn",
|
|
31
|
+
"workspaces",
|
|
32
|
+
"foreach",
|
|
33
|
+
"--all",
|
|
34
|
+
"--parallel",
|
|
35
|
+
"--no-private",
|
|
36
|
+
"npm",
|
|
37
|
+
"publish",
|
|
38
|
+
];
|
|
39
|
+
if (options?.provenance) {
|
|
40
|
+
publishArgs.push("--provenance");
|
|
41
|
+
}
|
|
42
|
+
await execCommand(rootWorkspace, publishArgs, "inherit");
|
|
33
43
|
},
|
|
34
44
|
};
|
package/.editorconfig
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# EditorConfig helps developers define and maintain consistent
|
|
2
|
-
# coding styles between different editors and IDEs
|
|
3
|
-
# http://editorconfig.org
|
|
4
|
-
|
|
5
|
-
root = true
|
|
6
|
-
|
|
7
|
-
[*]
|
|
8
|
-
indent_style = space
|
|
9
|
-
indent_size = 2
|
|
10
|
-
end_of_line = lf
|
|
11
|
-
charset = utf-8
|
|
12
|
-
trim_trailing_whitespace = true
|
|
13
|
-
insert_final_newline = true
|
package/.yo-rc.json
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
# This file is generated by running "yarn install" inside your project.
|
|
2
|
-
# Manual changes might be lost - proceed with caution!
|
|
3
|
-
|
|
4
|
-
__metadata:
|
|
5
|
-
version: 8
|
|
6
|
-
cacheKey: 10c0
|
|
7
|
-
|
|
8
|
-
"basic@workspace:.":
|
|
9
|
-
version: 0.0.0-use.local
|
|
10
|
-
resolution: "basic@workspace:."
|
|
11
|
-
languageName: unknown
|
|
12
|
-
linkType: soft
|
|
File without changes
|
|
File without changes
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# This file is generated by running "yarn install" inside your project.
|
|
2
|
-
# Manual changes might be lost - proceed with caution!
|
|
3
|
-
|
|
4
|
-
__metadata:
|
|
5
|
-
version: 6
|
|
6
|
-
|
|
7
|
-
"with-lifecycle@workspace:.":
|
|
8
|
-
version: 0.0.0-use.local
|
|
9
|
-
resolution: "with-lifecycle@workspace:."
|
|
10
|
-
languageName: unknown
|
|
11
|
-
linkType: soft
|
package/rollup.config.mjs
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { dirname } from "node:path";
|
|
2
|
-
import { fileURLToPath } from "node:url";
|
|
3
|
-
import createRollupConfig from "@pob/rollup-esbuild/createRollupConfig.js";
|
|
4
|
-
import run from "@pob/rollup-esbuild/plugin-run.cjs";
|
|
5
|
-
|
|
6
|
-
const watch = process.env.ROLLUP_WATCH === "true";
|
|
7
|
-
|
|
8
|
-
export default createRollupConfig({
|
|
9
|
-
cwd: dirname(fileURLToPath(import.meta.url)),
|
|
10
|
-
outDirectory: "dist",
|
|
11
|
-
plugins: [watch && run({ execArgv: ["--enable-source-maps"] })],
|
|
12
|
-
});
|
package/tsconfig.json
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": [
|
|
3
|
-
"@pob/root/tsconfigs/strict.json",
|
|
4
|
-
"@pob/root/tsconfigs/targets/rollup-node-22.json"
|
|
5
|
-
],
|
|
6
|
-
"include": ["src/**/*.ts"],
|
|
7
|
-
"compilerOptions": {
|
|
8
|
-
"rootDir": "src",
|
|
9
|
-
"baseUrl": "" /* Base directory to resolve non-absolute module names. */,
|
|
10
|
-
"noEmit": true,
|
|
11
|
-
"tsBuildInfoFile": "node_modules/.cache/tsc/tsbuildinfo",
|
|
12
|
-
"incremental": true,
|
|
13
|
-
|
|
14
|
-
"resolveJsonModule": true,
|
|
15
|
-
|
|
16
|
-
"paths": {
|
|
17
|
-
"@pob/rollup-esbuild": ["../../@pob/rollup-esbuild/lib"],
|
|
18
|
-
"@pob/rollup-esbuild/*": ["../../@pob/rollup-esbuild/lib/*"]
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|