Files
longbridge__developers/package.json
Jason Lee a222a0e781 build: copy skill/install routes to flat paths post-build (#388)
## Summary

- 新增 `scripts/copy-routes.ts` post-build 脚本,在构建完成后将
`skill/install/index.html` 和 `skill/install/index.md` 分别复制到
`skill/install.html` 和 `skill/install.md`
- 在 `build:canary` 和 `build:release` 命令末尾追加 `bun run
build:copy-routes`,确保每次构建自动执行

## 背景

部署服务器对 `.html` 有目录回退规则(`/skill/install` → `install.html` 或
`install/index.html`),但 `.md` 没有此规则,导致两种格式的访问路径不一致。此脚本确保两个位置的文件同时存在。

## Test plan

- [ ] 运行 `bun run build:canary` 或 `bun run build:release`,确认
`dist/skill/install.html` 和 `dist/skill/install.md` 均存在
- [ ] 确认 `dist/skill/install/index.html` 和 `dist/skill/install/index.md`
仍然存在

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 15:49:58 +08:00

63 lines
2.2 KiB
JSON

{
"name": "openapi-website",
"version": "0.0.1",
"author": "longbridge",
"module": "index.ts",
"description": "this is a website of longbridge developers",
"license": "MIT",
"private": true,
"scripts": {
"dev": "cross-env VITE_API_BASE_URL=https://openapi.longbridge.xyz npx vitepress dev docs",
"dev:prod": "cross-env VITE_API_BASE_URL=https://openapi.longbridge.com npx vitepress dev docs",
"build:canary": "cross-env NODE_OPTIONS=--max-old-space-size=6144 VITE_API_BASE_URL=https://openapi.longbridge.xyz npx vitepress build docs && bun run build:llms && bun run build:copy-routes",
"build:release": "cross-env NODE_OPTIONS=--max-old-space-size=6144 VITE_API_BASE_URL=https://openapi.longbridge.com npx vitepress build docs && bun run build:llms && bun run build:copy-routes",
"build:llms": "bun run scripts/normalize_md.ts && bun run scripts/generate-llms.ts",
"build:copy-routes": "bun run scripts/copy-routes.ts",
"preview": "vitepress preview docs",
"lint:docs": "prettier -c --parser typescript \"packages/**/*.{js,ts,vue}\"",
"format:docs": "prettier --write \"packages/**/*.{js,ts,vue}\""
},
"type": "module",
"dependencies": {
"@headlessui/vue": "^1.7.23",
"@jsonforms/core": "^3.5.1",
"@jsonforms/vue": "^3.5.1",
"@jsonforms/vue-vanilla": "^3.5.1",
"cheerio": "^1.1.0",
"fs-extra": "^11.3.0",
"glob": "^11.0.3",
"gray-matter": "^4.0.3",
"js-yaml": "^4.1.1",
"markdown-it": "^14.1.1",
"shiki": "^3.6.0",
"ufo": "^1.6.1",
"vite": "^8.0.0",
"vue-i18n": "11"
},
"devDependencies": {
"@types/bun": "latest",
"@types/fs-extra": "^11.0.4",
"@types/js-yaml": "^4.0.9",
"@unocss/extractor-mdc": "^66.1.2",
"@unocss/transformer-variant-group": "^66.1.2",
"cross-env": "^7.0.3",
"markdown-it-container": "^4.0.0",
"markdown-it-mathjax3": "^4.3.2",
"mermaid": "^11.8.1",
"postcss-rtlcss": "^5.7.0",
"prettier": "^3.5.3",
"sass-embedded": "^1.89.2",
"unocss": "^66.1.2",
"vitepress": "2.0.0-alpha.16",
"vitepress-plugin-group-icons": "^1.5.2",
"vitepress-plugin-mermaid": "^2.0.17",
"vue": "^3.5.13"
},
"peerDependencies": {
"typescript": "^5"
},
"engines": {
"node": ">=24.0.0"
}
}