From 3c8b19c4cc656fcfbc96ad80f10d10eaeb1a858d Mon Sep 17 00:00:00 2001 From: Mamadou Talla DIA Date: Sun, 20 Sep 2026 13:07:27 +0100 Subject: [PATCH] =?UTF-8?q?feat(cli):=20am=C3=A9liorer=20la=20gestion=20de?= =?UTF-8?q?s=20scripts=20dans=20createModulePlayground=20et=20ajouter=20un?= =?UTF-8?q?=20test=20pour=20pr=C3=A9server=20les=20scripts=20sp=C3=A9cifiq?= =?UTF-8?q?ues=20au=20framework?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/optimize-module-scaffolding.md | 6 +++++ packages/cli/src/commands/create/module.ts | 6 +---- tests/regressions/cli-create-module.test.ts | 25 +++++++++++++++++++++ 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 .changeset/optimize-module-scaffolding.md diff --git a/.changeset/optimize-module-scaffolding.md b/.changeset/optimize-module-scaffolding.md new file mode 100644 index 0000000..947c852 --- /dev/null +++ b/.changeset/optimize-module-scaffolding.md @@ -0,0 +1,6 @@ +--- +"@runablejs/cli": minor +"runable": patch +--- + +Generate modules as minimal publishable workspace packages with a complete framework playground. Include local module configuration files in the generated TypeScript project and let the welcome screen fill its container without the browser's default body gap. diff --git a/packages/cli/src/commands/create/module.ts b/packages/cli/src/commands/create/module.ts index 1566120..56a4d9e 100644 --- a/packages/cli/src/commands/create/module.ts +++ b/packages/cli/src/commands/create/module.ts @@ -117,11 +117,7 @@ export async function createModulePlayground( packageJson.name = `${options.moduleName.replace(/^@/, "").replace("/", "-")}-playground`; packageJson.private = true; packageJson.scripts = packageJson.scripts ?? {}; - packageJson.scripts.prepare = "runable prepare"; - delete packageJson.scripts.preprepare; - delete packageJson.scripts.prebuild; - delete packageJson.scripts["app:prepare"]; - delete packageJson.scripts["app:build"]; + packageJson.scripts.prepare ??= "runable prepare"; await writeFile(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\n`); await writeFile( diff --git a/tests/regressions/cli-create-module.test.ts b/tests/regressions/cli-create-module.test.ts index 54e4e71..7533cdb 100644 --- a/tests/regressions/cli-create-module.test.ts +++ b/tests/regressions/cli-create-module.test.ts @@ -108,4 +108,29 @@ describe("runable create --module", () => { cleanupFixtureDir(directory); } }); + + it("preserves framework-specific playground lifecycle scripts", async () => { + const directory = createFixtureDir("cli-module-adonis-playground-"); + + try { + const { createModulePlayground } = await import( + "../../packages/cli/dist/commands/create/module.js" + ); + await createModulePlayground(directory, { + moduleName: "test-module", + framework: "adonisjs", + }); + + const packageJson = JSON.parse( + readFileSync( + path.join(directory, "playground/package.json"), + "utf8", + ), + ); + expect(packageJson.scripts.prepare).toBe("node ace generate:manifest"); + expect(packageJson.scripts.preprepare).toBe("runable prepare"); + } finally { + cleanupFixtureDir(directory); + } + }); });