






















@@ -406,6 +406,69 @@ describe("plugin npm package manifest staging", () => {
406406expect(existsSync(nodeModulesPath)).toBe(false);
407407});
408408409+it("honors plugin package opt-out for bundled runtime dependencies", () => {
410+const repoDir = makeTempRepoRoot(tempDirs, "openclaw-plugin-npm-package-bundle-opt-out-");
411+const packageDir = writePublishablePluginPackage(repoDir);
412+writeFileText(join(packageDir, "dist", "index.js"), "export {};\n");
413+writeFileText(join(packageDir, "dist", "setup-entry.js"), "export {};\n");
414+writeLocalDependencyPackage(packageDir);
415+writeJsonFile(join(packageDir, "package.json"), {
416+name: "@openclaw/diffs",
417+version: "2026.5.3",
418+type: "module",
419+dependencies: {
420+"local-runtime-dep": "file:./deps/local-runtime-dep",
421+},
422+openclaw: {
423+extensions: ["./index.ts"],
424+setupEntry: "./setup-entry.ts",
425+compat: {
426+pluginApi: ">=2026.4.30",
427+},
428+release: {
429+publishToNpm: true,
430+bundleRuntimeDependencies: false,
431+},
432+},
433+});
434+writeJsonFile(join(packageDir, "npm-shrinkwrap.json"), {
435+name: "@openclaw/diffs",
436+version: "2026.5.3",
437+lockfileVersion: 3,
438+requires: true,
439+packages: {
440+"": {
441+name: "@openclaw/diffs",
442+version: "2026.5.3",
443+dependencies: {
444+"local-runtime-dep": "file:./deps/local-runtime-dep",
445+},
446+},
447+},
448+});
449+450+const resolved = resolveAugmentedPluginNpmPackageJson({
451+repoRoot: repoDir,
452+ packageDir,
453+bundleDependencies: true,
454+});
455+expect(resolved.bundleDependencies).toBe(false);
456+expect(resolved.packageJson?.bundledDependencies).toBeUndefined();
457+expect(resolved.packageJson?.devDependencies).toBeUndefined();
458+459+const nodeModulesPath = join(packageDir, "node_modules");
460+withAugmentedPluginNpmManifestForPackage(
461+{ repoRoot: repoDir, packageDir, bundleDependencies: true },
462+() => {
463+const stagedPackageJson = JSON.parse(
464+readFileSync(join(packageDir, "package.json"), "utf8"),
465+);
466+expect(stagedPackageJson.bundledDependencies).toBeUndefined();
467+expect(existsSync(nodeModulesPath)).toBe(false);
468+},
469+);
470+});
471+409472it("refuses to pack publishable plugins before package-local runtime files exist", () => {
410473const repoDir = makeTempRepoRoot(tempDirs, "openclaw-plugin-npm-package-runtime-missing-");
411474const packageDir = writePublishablePluginPackage(repoDir);
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。