
























@@ -166,28 +166,49 @@ describe("collectInstalledMirroredRootDependencyManifestErrors", () => {
166166writeFileSync(fullPath, `${JSON.stringify(value, null, 2)}\n`, "utf8");
167167}
168168169-function writeSlackWebApiProbePackage(
170-root: string,
171-dependencies: Record<string, string> = {},
172-): void {
173-writePackageFile(root, "package.json", {
169+function writeSlackWebApiProbePackage(params: {
170+root: string;
171+importerPath?: string;
172+rootDependencies?: Record<string, string>;
173+rootOptionalDependencies?: Record<string, string>;
174+}): void {
175+writePackageFile(params.root, "package.json", {
174176version: "2026.4.10",
175- dependencies,
177+dependencies: params.rootDependencies,
178+optionalDependencies: params.rootOptionalDependencies,
176179});
177-writePackageFile(root, "dist/extensions/slack/package.json", {
180+writePackageFile(params.root, "dist/extensions/slack/package.json", {
178181dependencies: {
179182"@slack/web-api": "^7.15.0",
180183},
181184});
182-mkdirSync(join(root, "dist"), { recursive: true });
183-writeFileSync(join(root, "dist", "probe-Cz2PiFtC.js"), 'import("@slack/web-api");\n', "utf8");
185+const importerPath = params.importerPath ?? "dist/probe-Cz2PiFtC.js";
186+mkdirSync(join(params.root, "dist"), { recursive: true });
187+writeFileSync(join(params.root, importerPath), 'import("@slack/web-api");\n', "utf8");
184188}
185189186-it("does not require root mirrors for bundled plugin deps imported by root dist", () => {
190+it("flags bundled plugin deps imported by root dist when root mirrors are missing", () => {
187191const packageRoot = makeInstalledPackageRoot();
188192189193try {
190-writeSlackWebApiProbePackage(packageRoot);
194+writeSlackWebApiProbePackage({ root: packageRoot });
195+196+expect(collectInstalledMirroredRootDependencyManifestErrors(packageRoot)).toEqual([
197+"installed package root is missing mirrored bundled runtime dependency '@slack/web-api' for dist importers: probe-Cz2PiFtC.js. Add it to package.json dependencies/optionalDependencies or keep imports under dist/extensions/slack/.",
198+]);
199+} finally {
200+rmSync(packageRoot, { recursive: true, force: true });
201+}
202+});
203+204+it("allows bundled plugin deps imported from their own extension dist without root mirrors", () => {
205+const packageRoot = makeInstalledPackageRoot();
206+207+try {
208+writeSlackWebApiProbePackage({
209+root: packageRoot,
210+importerPath: "dist/extensions/slack/client-Cz2PiFtC.js",
211+});
191212192213expect(collectInstalledMirroredRootDependencyManifestErrors(packageRoot)).toEqual([]);
193214} finally {
@@ -227,8 +248,11 @@ describe("collectInstalledMirroredRootDependencyManifestErrors", () => {
227248const packageRoot = makeInstalledPackageRoot();
228249229250try {
230-writeSlackWebApiProbePackage(packageRoot, {
231-"@slack/web-api": "^7.16.0",
251+writeSlackWebApiProbePackage({
252+root: packageRoot,
253+rootDependencies: {
254+"@slack/web-api": "^7.16.0",
255+},
232256});
233257234258expect(collectInstalledMirroredRootDependencyManifestErrors(packageRoot)).toEqual([]);
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。