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`;