fix(bin): 修复项目编译时间不正确导致无法识别项目修改状态

This commit is contained in:
v-zhangjc9
2025-07-03 10:01:47 +08:00
parent 67e0cada00
commit 11c5481287

View File

@@ -41,35 +41,48 @@ const millisecondToString = (timestamp) => {
return parts.join('') return parts.join('')
} }
const projectRootPath = () => path.dirname(import.meta.dirname) const dotBuildPath = () => `.build`
const modifiedDataPath = () => `${dotBuildPath()}/modified_time.json`
export const isModified = async (target) => { const readModifiedTimeData = async () => {
if (!fs.existsSync(dotBuildPath())) {
fs.mkdirSync(dotBuildPath(), {recursive: true})
}
if (!(await fs.exists(modifiedDataPath()))) {
fs.writeFileSync(modifiedDataPath(), '{}')
}
return JSON.parse(await fs.readFile(modifiedDataPath(), 'utf-8'))
}
const updateModifiedTimeData = (data) => {
fs.writeFileSync(modifiedDataPath(), JSON.stringify(data, null, 2))
}
const isModified = async (target) => {
if (!target || !(await fs.exists(target))) { if (!target || !(await fs.exists(target))) {
throw new Error("Target 不存在") throw new Error("Target 不存在")
} }
let stat = fs.statSync(target) let stat = fs.statSync(target)
let currentModifiedTime = stat.mtimeMs let currentModifiedTime = stat.mtimeMs
let buildPath = `${projectRootPath()}/.build` let lastModifiedTime = (await readModifiedTimeData())[target]
if (!(await fs.exists(buildPath))) { return !(lastModifiedTime && isEqual(currentModifiedTime, lastModifiedTime));
fs.mkdirSync(buildPath, {recursive: true})
} }
let modifiedTimeDataPath = `${buildPath}/modified_time.json`
if (!(await fs.exists(modifiedTimeDataPath))) { const updateModifiedTime = async (target) => {
fs.writeFileSync(modifiedTimeDataPath, '{}') if (!target || !(await fs.exists(target))) {
} throw new Error("Target 不存在")
let modifiedTimeData = JSON.parse(await fs.readFile(modifiedTimeDataPath, 'utf-8'))
let lastModifiedTime = modifiedTimeData[target]
if (lastModifiedTime && isEqual(currentModifiedTime, lastModifiedTime)) {
return false
} }
let stat = fs.statSync(target)
let currentModifiedTime = stat.mtimeMs
let modifiedTimeData = await readModifiedTimeData()
modifiedTimeData[target] = currentModifiedTime modifiedTimeData[target] = currentModifiedTime
fs.writeFileSync(modifiedTimeDataPath, JSON.stringify(modifiedTimeData, null, 2)) updateModifiedTimeData(modifiedTimeData)
return true
} }
export const run_deploy = async (project) => { export const run_deploy = async (project) => {
if (!(await isModified(`${projectRootPath()}/${project}`))) { if (!(await isModified(project))) {
console.log(`✅ Skip deploy ${project}`) console.log(`✅ Skip deploy ${project}`)
return return
} }
@@ -78,10 +91,11 @@ export const run_deploy = async (project) => {
() => $`mvn -pl ${project} clean deploy -D skipTests -s ${maven_setting}` () => $`mvn -pl ${project} clean deploy -D skipTests -s ${maven_setting}`
) )
console.log(`✅ Finished deploy ${project} (${millisecondToString(output['duration'])})`) console.log(`✅ Finished deploy ${project} (${millisecondToString(output['duration'])})`)
await updateModifiedTime(project)
} }
export const run_deploy_root = async () => { export const run_deploy_root = async () => {
if (!(await isModified(`${projectRootPath()}/pom.xml`))) { if (!(await isModified(pom.xml))) {
console.log(`✅ Skip deploy root`) console.log(`✅ Skip deploy root`)
return return
} }
@@ -90,6 +104,7 @@ export const run_deploy_root = async () => {
() => $`mvn clean deploy -N -D skipTests -s ${maven_setting}` () => $`mvn clean deploy -N -D skipTests -s ${maven_setting}`
) )
console.log(`✅ Finished deploy root (${millisecondToString(output['duration'])})`) console.log(`✅ Finished deploy root (${millisecondToString(output['duration'])})`)
await updateModifiedTime(`pom.xml`)
} }
export const run_deploy_batch = async (projects) => { export const run_deploy_batch = async (projects) => {