18 lines
657 B
JavaScript
18 lines
657 B
JavaScript
import { readFile, writeFile } from 'node:fs/promises'
|
|
import { resolve } from 'node:path'
|
|
import { format, resolveConfig } from 'prettier'
|
|
|
|
const source = resolve(process.env.OPENCLOUD_API_DIR || '../hono-api', 'contracts/api.ts')
|
|
const target = resolve('src/types/api-contract.ts')
|
|
const output = await format(await readFile(source, 'utf8'), {
|
|
...(await resolveConfig(target)),
|
|
filepath: target,
|
|
})
|
|
if (process.argv.includes('--check')) {
|
|
if ((await readFile(target, 'utf8')) !== output) {
|
|
throw new Error('API 契约已变化,请先在后端生成,再运行 npm run api:sync')
|
|
}
|
|
} else {
|
|
await writeFile(target, output)
|
|
}
|