[ PROMPT_NODE_26148 ]
railpack
[ SKILL_DOCUMENTATION ]
# Railpack 参考
Railpack 是 Railway 的默认构建器。大多数项目无需配置。
完整文档: https://railpack.com/llms.txt
## 检测
Railpack 分析源代码以自动检测语言、框架和构建需求。
支持: Node, Python, Go, PHP, Java, Ruby, Rust, Elixir, Gleam, Deno, C/C++, 静态文件。
## 静态站点
### 检测模式
当检测到以下情况时,Railpack 通过 Caddy 提供静态文件服务:
1. 根目录有 `Staticfile` (可指定 `root: dist`)
2. 根目录有 `index.html`
3. 存在 `public/` 目录
4. 设置了 `RAILPACK_STATIC_FILE_ROOT` 环境变量
### 根目录优先级
1. `RAILPACK_STATIC_FILE_ROOT` 环境变量
2. `Staticfile` 中的 `root`
3. `public/` 目录
4. 当前目录 (如果存在 index.html)
### 常见模式
Railpack 会自动检测常见的静态构建输出。仅在非标准输出目录时设置 `RAILPACK_STATIC_FILE_ROOT`。
| 框架 | 构建输出 | 是否需要配置 |
|-----------|--------------|---------------|
| Plain HTML | root | 否 (自动检测) |
| Vite | dist | 否 (自动检测) |
| Astro (static) | dist | 否 (自动检测) |
| Create React App | build | 否 (自动检测) |
| Angular | dist/ | `RAILPACK_STATIC_FILE_ROOT=dist/` (非标准路径) |
| 自定义输出 | varies | 如果输出目录非标准则设置 |
### 自定义 Caddyfile
在项目根目录放置 `Caddyfile` 以覆盖默认的服务行为。
## Node.js
### 检测
- 根目录有 `package.json`
### 版本优先级
1. `RAILPACK_NODE_VERSION` 环境变量
2. package.json 中的 `engines.node`
3. `.nvmrc` 或 `.node-version`
4. 默认: Node 22
### 包管理器检测
1. package.json 中的 `packageManager` 字段 (启用 Corepack)
2. 锁文件: `pnpm-lock.yaml`, `bun.lockb`, `yarn.lock`
3. 默认: npm
### 构建命令
从 package.json 的 `scripts.build` 自动检测。可通过服务设置中的 `buildCommand` 覆盖。
### 启动命令
自动检测:
1. package.json 中的 `scripts.start`
2. package.json 中的 `main` 字段
3. 根目录的 `index.js` 或 `index.ts`
可通过服务设置中的 `startCommand` 覆盖。
### 框架检测
| 框架 | 检测方式 | 备注 |
|-----------|-----------|-------|
| Next.js | 依赖中包含 `next` | 缓存 `.next/cache` |
| Vite | devDependencies 中包含 `vite` | 静态或 SSR 模式 |
| Astro | 依赖中包含 `astro` | 缓存 `.astro` |
| Nuxt | 依赖中包含 `nuxt` | 自动启动命令 |
| Remix | 依赖中包含 `@remix-run/*` | - |
### 静态站点模式 (SPA)
对于 Vite, CRA 等框架