用途:按需启动本地开发服务器,并处理端口占用与环境识别。
主要能力:
- 端口检查:运行 scripts/check_ports.sh 扫描常用开发端口;也可指定端口或查找首个可用端口。
- 冲突处理:若端口被同一项目占用,可用 --kill-if-same 直接结束(同一项目指进程工作目录为当前目录或其父/子目录);若是不同项目,需先询问用户再结束,或改用其他端口。
- 环境检测:存在 docker-compose.yml 且有 web/app 服务时,建议改用 docker compose up;monorepo 下先看当前目录 package.json 是否有 dev 脚本,否则查找 apps/web/package.json、packages/app/package.json(Turborepo/Nx 模式)或带 workspace dev 委派脚本的根 package.json。
- 包管理器识别:依据锁文件判断,bun.lockb 用 bun、pnpm-lock.yaml 用 pnpm、yarn.lock 用 yarn,否则用 npm。
- 启动:用检测到的包管理器并加 --open;需要时加 --port <n>。
命令示例: scripts/check_ports.sh scripts/check_ports.sh 3000 scripts/check_ports.sh --find 3000 scripts/check_ports.sh --kill-if-same 3000 scripts/check_ports.sh --kill 3000
框架差异:多数框架支持 --open 与 --port;Create React App 默认 3000,用 PORT=3001 环境变量而非 --port;Gatsby 默认 8000,用 -p 而非 --port;Remix 默认 3000,dev 模式下 --port 可用。若 --open 无效,服务器启动后再执行 open http://localhost:PORT。
限制:不同项目下强制结束端口需先询问用户;具体脚本实现与支持平台未提供。