fix: some
All checks were successful
构建并部署前端到测试环境 / deploy (push) Successful in 55s

This commit is contained in:
luo
2026-10-13 11:25:03 +08:00
parent 52268859aa
commit b2a76adc9a
67 changed files with 1982 additions and 200 deletions

View File

@@ -0,0 +1,71 @@
import { mkdtemp, readFile } from 'node:fs/promises'
import { tmpdir } from 'node:os'
import { join } from 'node:path'
import { build, createServer, loadConfigFromFile } from 'vite'
import Components from 'unplugin-vue-components/vite'
import AutoImport from 'unplugin-auto-import/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
// 与生产配置相同的构建,关闭声明文件生成,避免覆盖工作区已有的用户修改。
const protectedPaths = [
'src/types/components.d.ts',
'src/types/auto-imports.d.ts',
'.auto-import.json'
]
const snapshots = await Promise.all(protectedPaths.map((path) => readFile(path)))
const serve = process.argv.includes('--serve')
const loaded = await loadConfigFromFile({
command: serve ? 'serve' : 'build',
mode: serve ? 'development' : 'production'
})
const outputDir = await mkdtemp(join(tmpdir(), 'one-pipe-october-build-'))
const plugins = loaded.config.plugins
.flat(Infinity)
.filter(
(plugin) => plugin && !['unplugin-vue-components', 'unplugin-auto-import'].includes(plugin.name)
)
plugins.push(
Components({
deep: true,
extensions: ['vue'],
dirs: ['src/components'],
resolvers: [ElementPlusResolver()],
dts: false
}),
AutoImport({
imports: ['vue', 'vue-router', '@vueuse/core', 'pinia'],
resolvers: [ElementPlusResolver()],
dts: false,
eslintrc: { enabled: false }
})
)
if (serve) {
const { mockApiPlugin } = await import('./octoberBrowserFixtures.mjs')
const server = await createServer({
...loaded.config,
configFile: false,
mode: 'development',
plugins: [mockApiPlugin, ...plugins],
server: { host: '127.0.0.1', port: 5190, strictPort: true, proxy: {} }
})
await server.listen()
console.log(
'Local mock preview: http://127.0.0.1:5190 (all /api requests intercepted; no real backend writes)'
)
} else {
await build({
...loaded.config,
configFile: false,
plugins,
logLevel: 'warn',
build: { ...loaded.config.build, outDir: outputDir, emptyOutDir: false }
})
}
for (let i = 0; i < protectedPaths.length; i++) {
if (!snapshots[i].equals(await readFile(protectedPaths[i])))
throw new Error(`Build modified protected file: ${protectedPaths[i]}`)
}
if (!serve)
console.log(
`Production build passed. Generated declaration files preserved. Output: ${outputDir}`
)