From 08c093f3fcb2929e2626b30d7399edd4f77ffa83 Mon Sep 17 00:00:00 2001 From: "qcqcqc@wsl" Date: Wed, 29 Oct 2025 13:07:18 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8B=A5=E5=AD=98=E5=9C=A8confuse=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=E5=88=99=E8=BF=9B=E8=A1=8C=E6=B7=B7=E6=B7=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/cli.js | 15 ++++++++++++++- src/cli.ts | 14 +++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/dist/cli.js b/dist/cli.js index 2aff6ef..f6c83b8 100644 --- a/dist/cli.js +++ b/dist/cli.js @@ -112,11 +112,13 @@ function generateDockerfile(projectName, options) { const allProjects = [projectName]; allProjects.push(...extra); console.log("\n\u{1F50D} \u68C0\u67E5\u9879\u76EE\u4F9D\u8D56\u5173\u7CFB..."); + const projectPackageMap = {}; for (const project of allProjects) { console.log(`\u68C0\u67E5\u9879\u76EE: ${project}`); const packageJsonPath = path.join(pwd, project, "package.json"); if (fs.existsSync(packageJsonPath)) { const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8")); + projectPackageMap[project] = packageJson; const dependencies = packageJson.dependencies || {}; for (const dep in dependencies) { if (dependencies[dep].startsWith("file:../")) { @@ -160,8 +162,19 @@ WORKDIR /app/${project} RUN npm install `; if (project === projectName) { - dockerfile += `RUN npm run make:domain && npm run build + const pkjson = projectPackageMap[project]; + if (pkjson.scripts && pkjson.scripts["make:domain"]) { + dockerfile += `RUN npm run make:domain `; + } + if (pkjson.scripts && pkjson.scripts["build"]) { + dockerfile += `RUN npm run build +`; + } + if (pkjson.scripts && pkjson.scripts["confuse"]) { + dockerfile += `RUN npm run confuse +`; + } } else { dockerfile += `RUN npm run build || true `; diff --git a/src/cli.ts b/src/cli.ts index b6e84ae..75b6032 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -150,11 +150,14 @@ function generateDockerfile( console.log("\n🔍 检查项目依赖关系..."); // 需要遍历所有项目的package.json确定file:../这种,然后确保没有遗漏 + const projectPackageMap: { [key: string]: any } = {}; + for (const project of allProjects) { console.log(`检查项目: ${project}`); const packageJsonPath = path.join(pwd, project, "package.json"); if (fs.existsSync(packageJsonPath)) { const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8")); + projectPackageMap[project] = packageJson; const dependencies = packageJson.dependencies || {}; for (const dep in dependencies) { if (dependencies[dep].startsWith("file:../")) { @@ -204,7 +207,16 @@ RUN npm install // 主项目需要执行 make:domain 和 build if (project === projectName) { - dockerfile += `RUN npm run make:domain && npm run build\n`; + const pkjson = projectPackageMap[project]; + if (pkjson.scripts && pkjson.scripts["make:domain"]) { + dockerfile += `RUN npm run make:domain\n`; + } + if (pkjson.scripts && pkjson.scripts["build"]) { + dockerfile += `RUN npm run build\n`; + } + if (pkjson.scripts && pkjson.scripts["confuse"]) { + dockerfile += `RUN npm run confuse\n`; + } } else { // 其他项目可能只需要 build,或者根据实际情况调整 dockerfile += `RUN npm run build || true\n`;