shipfolio 1.0.9 → 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +224 -145
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
## What is shipfolio?
|
|
10
10
|
|
|
11
|
-
A CLI tool that turns your local projects into a personal portfolio website. It scans your git repositories, uses your local AI tools (Claude Code, Codex, or v0) to generate a production-ready site, and deploys it to Cloudflare Pages or Vercel -- all in one command.
|
|
11
|
+
A CLI tool that turns your local projects into a personal portfolio website. It scans your git repositories, uses your local AI tools (Claude Code, Codex, or v0) to generate a production-ready Next.js site, and deploys it to Cloudflare Pages or Vercel -- all in one command.
|
|
12
12
|
|
|
13
13
|
Built for developers who ship fast and need a way to showcase their work without spending hours on a portfolio.
|
|
14
14
|
|
|
@@ -18,156 +18,187 @@ Built for developers who ship fast and need a way to showcase their work without
|
|
|
18
18
|
npx shipfolio --scan ~/Projects
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
The tool walks you through everything interactively: project selection, personal info, design preferences, and deployment.
|
|
22
22
|
|
|
23
23
|
## Prerequisites
|
|
24
24
|
|
|
25
25
|
- Node.js >= 18
|
|
26
|
-
- At least one AI engine
|
|
26
|
+
- At least one AI engine:
|
|
27
27
|
|
|
28
|
-
| Engine |
|
|
28
|
+
| Engine | How to get it | Notes |
|
|
29
29
|
|---|---|---|
|
|
30
30
|
| Claude Code | `npm install -g @anthropic-ai/claude-code` | Recommended. Best overall generation quality. |
|
|
31
31
|
| Codex | `npm install -g @openai/codex` | Alternative. |
|
|
32
|
-
| v0 | Set `V0_API_KEY`
|
|
32
|
+
| v0 | Set `V0_API_KEY` environment variable | Best UI design quality. Requires paid v0 plan. Get your key at [v0.dev](https://v0.dev). |
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
No need to install `wrangler` or `vercel` CLI -- shipfolio calls them via `npx` automatically.
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
## Commands
|
|
37
|
+
|
|
38
|
+
### Generate a New Site
|
|
37
39
|
|
|
38
40
|
```bash
|
|
39
|
-
# Interactive mode (recommended for first use)
|
|
40
41
|
npx shipfolio --scan ~/Projects
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
npx shipfolio --scan ~/Projects --engine claude --deploy cloudflare --style dark-minimal
|
|
42
|
+
npx shipfolio --scan ~/Projects --output ./my-site
|
|
43
|
+
npx shipfolio --scan ~/Projects --no-pdf --no-preview
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
The
|
|
47
|
-
1.
|
|
48
|
-
2.
|
|
49
|
-
3.
|
|
50
|
-
4.
|
|
51
|
-
5.
|
|
52
|
-
6.
|
|
53
|
-
7. Deploy to your chosen platform
|
|
54
|
-
|
|
55
|
-
Output directory: `./shipfolio-site/` (override with `--output <dir>`)
|
|
46
|
+
The pipeline:
|
|
47
|
+
1. Scans directories for git repos (and non-git projects with package.json, Cargo.toml, etc.)
|
|
48
|
+
2. Interactive interview: select projects, optionally merge related ones (e.g. web + mobile), enter personal info, pick theme/colors/font
|
|
49
|
+
3. Generates the site using your local AI engine
|
|
50
|
+
4. Builds, exports PDF, previews locally
|
|
51
|
+
5. Deploys to Cloudflare Pages or Vercel
|
|
52
|
+
6. Optionally creates a GitHub repo with a CI/CD workflow for auto-deploy on push
|
|
56
53
|
|
|
57
|
-
###
|
|
54
|
+
### Update an Existing Site
|
|
58
55
|
|
|
59
56
|
```bash
|
|
57
|
+
npx shipfolio update --site ./shipfolio-site
|
|
60
58
|
npx shipfolio update --site ./shipfolio-site --scan ~/Projects
|
|
61
59
|
```
|
|
62
60
|
|
|
63
|
-
Detects new/changed/removed projects and applies incremental updates. Preserves
|
|
61
|
+
Detects new/changed/removed projects and applies incremental updates. Preserves existing design, layout, and custom modifications.
|
|
64
62
|
|
|
65
|
-
###
|
|
63
|
+
### Generate Spec Only
|
|
66
64
|
|
|
67
|
-
|
|
65
|
+
For use inside an existing Claude Code or Codex session:
|
|
68
66
|
|
|
69
67
|
```bash
|
|
70
68
|
npx shipfolio spec --scan ~/Projects --output ./
|
|
71
69
|
```
|
|
72
70
|
|
|
73
|
-
Outputs `shipfolio-spec.json` and `shipfolio-prompt.md`. Feed the prompt to your
|
|
71
|
+
Outputs `shipfolio-spec.json` and `shipfolio-prompt.md`. Feed the prompt to your AI session to generate the site directly.
|
|
74
72
|
|
|
75
|
-
###
|
|
73
|
+
### Deploy
|
|
76
74
|
|
|
77
75
|
```bash
|
|
78
76
|
npx shipfolio deploy --site ./shipfolio-site --platform cloudflare
|
|
79
77
|
npx shipfolio deploy --site ./shipfolio-site --platform vercel
|
|
80
78
|
```
|
|
81
79
|
|
|
82
|
-
###
|
|
80
|
+
### Export PDF
|
|
83
81
|
|
|
84
82
|
```bash
|
|
85
83
|
npx shipfolio pdf --site ./shipfolio-site
|
|
86
84
|
```
|
|
87
85
|
|
|
88
|
-
Requires Playwright
|
|
86
|
+
Requires Playwright: `npx playwright install chromium`
|
|
89
87
|
|
|
90
|
-
###
|
|
88
|
+
### Preview
|
|
91
89
|
|
|
92
90
|
```bash
|
|
93
|
-
npx shipfolio preview --site ./shipfolio-site
|
|
91
|
+
npx shipfolio preview --site ./shipfolio-site --port 3000
|
|
94
92
|
```
|
|
95
93
|
|
|
96
|
-
##
|
|
94
|
+
## CLI Reference
|
|
95
|
+
|
|
96
|
+
### `shipfolio init` (default)
|
|
97
|
+
|
|
98
|
+
| Flag | Description | Default |
|
|
99
|
+
|---|---|---|
|
|
100
|
+
| `-s, --scan <dirs...>` | Directories to scan for projects | Current directory |
|
|
101
|
+
| `-o, --output <dir>` | Output directory | `./shipfolio-site` |
|
|
102
|
+
| `--no-pdf` | Skip PDF export | |
|
|
103
|
+
| `--no-preview` | Skip local preview | |
|
|
97
104
|
|
|
98
|
-
|
|
105
|
+
### `shipfolio update`
|
|
106
|
+
|
|
107
|
+
| Flag | Description |
|
|
99
108
|
|---|---|
|
|
100
|
-
|
|
|
101
|
-
|
|
|
102
|
-
| `
|
|
103
|
-
| `
|
|
104
|
-
| `
|
|
105
|
-
| `shipfolio preview --site <path>` | Start local preview server |
|
|
109
|
+
| `--site <path>` | Path to existing site directory (required) |
|
|
110
|
+
| `-s, --scan <dirs...>` | Directories to scan |
|
|
111
|
+
| `--no-pdf` | Skip PDF export |
|
|
112
|
+
| `--no-preview` | Skip preview |
|
|
113
|
+
| `--no-deploy` | Skip deployment |
|
|
106
114
|
|
|
107
|
-
|
|
115
|
+
### `shipfolio deploy`
|
|
108
116
|
|
|
109
|
-
| Flag |
|
|
110
|
-
|
|
111
|
-
| `--
|
|
112
|
-
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
|
117
|
-
|
|
118
|
-
|
|
|
119
|
-
|
|
|
117
|
+
| Flag | Description |
|
|
118
|
+
|---|---|
|
|
119
|
+
| `--site <path>` | Path to site directory (required) |
|
|
120
|
+
| `-p, --platform <name>` | `cloudflare` or `vercel` |
|
|
121
|
+
|
|
122
|
+
### `shipfolio spec`
|
|
123
|
+
|
|
124
|
+
| Flag | Description |
|
|
125
|
+
|---|---|
|
|
126
|
+
| `-s, --scan <dirs...>` | Directories to scan |
|
|
127
|
+
| `-o, --output <dir>` | Output directory for spec files |
|
|
128
|
+
|
|
129
|
+
### `shipfolio pdf`
|
|
130
|
+
|
|
131
|
+
| Flag | Description |
|
|
132
|
+
|---|---|
|
|
133
|
+
| `--site <path>` | Path to site directory (required) |
|
|
134
|
+
| `-o, --output <path>` | PDF output path |
|
|
135
|
+
|
|
136
|
+
### `shipfolio preview`
|
|
137
|
+
|
|
138
|
+
| Flag | Description |
|
|
139
|
+
|---|---|
|
|
140
|
+
| `--site <path>` | Path to site directory (required) |
|
|
141
|
+
| `--port <port>` | Port number (default: 3000, auto-fallback if in use) |
|
|
142
|
+
|
|
143
|
+
## Features
|
|
144
|
+
|
|
145
|
+
### Project Merging
|
|
146
|
+
|
|
147
|
+
When you have related projects (e.g. a web app and its mobile companion), shipfolio lets you merge them into a single portfolio entry. Tech stacks, commit histories, and READMEs are combined automatically.
|
|
120
148
|
|
|
121
|
-
|
|
149
|
+
### Draft Recovery
|
|
122
150
|
|
|
123
|
-
|
|
151
|
+
If the process crashes or you cancel after the interview step, your answers are saved to `~/.shipfolio/draft.json`. Next time you run shipfolio, it offers to restore them.
|
|
124
152
|
|
|
125
|
-
|
|
153
|
+
### i18n
|
|
154
|
+
|
|
155
|
+
The CLI detects your system locale. Chinese (zh-CN, zh-TW) users see Chinese prompts; everyone else sees English.
|
|
156
|
+
|
|
157
|
+
### Custom Domain
|
|
158
|
+
|
|
159
|
+
During the deploy step, you can specify a custom domain. For Vercel, it is configured automatically via `vercel domains add`. For Cloudflare Pages, shipfolio prints a direct link to the dashboard with instructions.
|
|
160
|
+
|
|
161
|
+
### GitHub Auto-Deploy
|
|
162
|
+
|
|
163
|
+
After deployment, shipfolio can create a GitHub repo and add a `.github/workflows/deploy.yml` that redeploys on every push. You just need to add one or two secrets to the repo:
|
|
164
|
+
|
|
165
|
+
**Cloudflare Pages:**
|
|
166
|
+
```bash
|
|
167
|
+
gh secret set CLOUDFLARE_API_TOKEN
|
|
168
|
+
gh secret set CLOUDFLARE_ACCOUNT_ID
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**Vercel:**
|
|
172
|
+
```bash
|
|
173
|
+
gh secret set VERCEL_TOKEN
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Generated Site Stack
|
|
177
|
+
|
|
178
|
+
- Next.js 15 (App Router, static export `output: 'export'`)
|
|
126
179
|
- Tailwind CSS v4
|
|
127
180
|
- shadcn/ui components
|
|
128
181
|
- TypeScript
|
|
129
182
|
- Responsive (desktop + tablet + mobile)
|
|
130
183
|
- Print-optimized CSS for PDF export
|
|
184
|
+
- Build output: static `out/` directory
|
|
131
185
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
## Deployment
|
|
186
|
+
## Deployment Platforms
|
|
135
187
|
|
|
136
188
|
### Cloudflare Pages
|
|
137
189
|
|
|
138
|
-
|
|
190
|
+
No CLI pre-install needed. On first run, `npx wrangler login` opens a browser for authentication. The project is auto-created. Your site gets a `<project-name>.pages.dev` URL.
|
|
139
191
|
|
|
140
192
|
Free tier: unlimited sites, 500 builds/month, unlimited bandwidth.
|
|
141
193
|
|
|
142
194
|
### Vercel
|
|
143
195
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
### GitHub Auto-Deploy
|
|
147
|
-
|
|
148
|
-
After initial deployment, the tool optionally sets up a GitHub repo. Connect it to Cloudflare Pages or Vercel for push-to-deploy.
|
|
149
|
-
|
|
150
|
-
## Project Structure
|
|
151
|
-
|
|
152
|
-
```
|
|
153
|
-
shipfolio/
|
|
154
|
-
src/
|
|
155
|
-
scanner/ -- Git repo detection, tech stack extraction
|
|
156
|
-
interviewer/ -- Interactive CLI prompts
|
|
157
|
-
spec/ -- Spec builder, diff computation
|
|
158
|
-
orchestrator/ -- AI engine dispatch (Claude/Codex/v0)
|
|
159
|
-
deployer/ -- Cloudflare Pages, Vercel, GitHub
|
|
160
|
-
pdf/ -- Playwright PDF export
|
|
161
|
-
commands/ -- CLI command handlers
|
|
162
|
-
utils/ -- Logger, exec, fs helpers
|
|
163
|
-
prompts/ -- AI prompt templates
|
|
164
|
-
bin/ -- CLI entry point
|
|
165
|
-
```
|
|
196
|
+
No CLI pre-install needed. On first run, `npx vercel login` opens a browser for authentication. Your site gets a `<project-name>.vercel.app` URL.
|
|
166
197
|
|
|
167
198
|
## Links
|
|
168
199
|
|
|
169
200
|
- GitHub: [github.com/Octo-o-o-o/shipfolio](https://github.com/Octo-o-o-o/shipfolio)
|
|
170
|
-
- npm:
|
|
201
|
+
- npm: [npmjs.com/package/shipfolio](https://www.npmjs.com/package/shipfolio)
|
|
171
202
|
- Issues: [github.com/Octo-o-o-o/shipfolio/issues](https://github.com/Octo-o-o-o/shipfolio/issues)
|
|
172
203
|
|
|
173
204
|
## License
|
|
@@ -180,7 +211,7 @@ MIT
|
|
|
180
211
|
|
|
181
212
|
## shipfolio 是什么?
|
|
182
213
|
|
|
183
|
-
一个 CLI 工具,将你本地的项目转化为个人作品集网站。它扫描你的 git 仓库,使用你本地的 AI 工具(Claude Code、Codex 或 v0
|
|
214
|
+
一个 CLI 工具,将你本地的项目转化为个人作品集网站。它扫描你的 git 仓库,使用你本地的 AI 工具(Claude Code、Codex 或 v0)生成生产级 Next.js 网站,并一键部署到 Cloudflare Pages 或 Vercel。
|
|
184
215
|
|
|
185
216
|
为快速交付项目但没时间做作品集的开发者而建。
|
|
186
217
|
|
|
@@ -190,12 +221,12 @@ MIT
|
|
|
190
221
|
npx shipfolio --scan ~/Projects
|
|
191
222
|
```
|
|
192
223
|
|
|
193
|
-
|
|
224
|
+
工具会以交互方式引导你完成所有步骤:项目选择、个人信息、设计偏好、部署。
|
|
194
225
|
|
|
195
226
|
## 前置条件
|
|
196
227
|
|
|
197
228
|
- Node.js >= 18
|
|
198
|
-
-
|
|
229
|
+
- 至少一个 AI 引擎:
|
|
199
230
|
|
|
200
231
|
| 引擎 | 安装方式 | 说明 |
|
|
201
232
|
|---|---|---|
|
|
@@ -203,126 +234,174 @@ npx shipfolio --scan ~/Projects
|
|
|
203
234
|
| Codex | `npm install -g @openai/codex` | 备选。 |
|
|
204
235
|
| v0 | 设置 `V0_API_KEY` 环境变量 | UI 设计质量最佳。需要 v0 付费订阅。在 [v0.dev](https://v0.dev) 获取 API key。 |
|
|
205
236
|
|
|
206
|
-
|
|
237
|
+
不需要预装 `wrangler` 或 `vercel` CLI -- shipfolio 通过 `npx` 自动调用。
|
|
238
|
+
|
|
239
|
+
## 命令
|
|
207
240
|
|
|
208
|
-
###
|
|
241
|
+
### 生成新网站
|
|
209
242
|
|
|
210
243
|
```bash
|
|
211
|
-
# 交互模式(首次使用推荐)
|
|
212
244
|
npx shipfolio --scan ~/Projects
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
npx shipfolio --scan ~/Projects --engine claude --deploy cloudflare --style dark-minimal
|
|
245
|
+
npx shipfolio --scan ~/Projects --output ./my-site
|
|
246
|
+
npx shipfolio --scan ~/Projects --no-pdf --no-preview
|
|
216
247
|
```
|
|
217
248
|
|
|
218
|
-
|
|
219
|
-
1.
|
|
220
|
-
2.
|
|
221
|
-
3.
|
|
222
|
-
4.
|
|
223
|
-
5.
|
|
224
|
-
6.
|
|
225
|
-
7. 部署到选定平台
|
|
226
|
-
|
|
227
|
-
输出目录: `./shipfolio-site/`(可通过 `--output <dir>` 修改)
|
|
249
|
+
流程:
|
|
250
|
+
1. 扫描目录中的 git 仓库(也支持没有 git 但有 package.json、Cargo.toml 等的项目)
|
|
251
|
+
2. 交互式问答:选择项目、可选合并相关项目(如 web + mobile)、填写个人信息、选择主题/颜色/字体
|
|
252
|
+
3. 调用本地 AI 引擎生成网站
|
|
253
|
+
4. 构建、导出 PDF、本地预览
|
|
254
|
+
5. 部署到 Cloudflare Pages 或 Vercel
|
|
255
|
+
6. 可选创建 GitHub 仓库并配置 CI/CD workflow,实现 push 自动部署
|
|
228
256
|
|
|
229
|
-
###
|
|
257
|
+
### 更新已有网站
|
|
230
258
|
|
|
231
259
|
```bash
|
|
260
|
+
npx shipfolio update --site ./shipfolio-site
|
|
232
261
|
npx shipfolio update --site ./shipfolio-site --scan ~/Projects
|
|
233
262
|
```
|
|
234
263
|
|
|
235
|
-
|
|
264
|
+
检测新增/变更/移除的项目,增量更新。保留现有设计、布局和自定义修改。
|
|
236
265
|
|
|
237
|
-
###
|
|
266
|
+
### 仅生成 Spec
|
|
238
267
|
|
|
239
|
-
|
|
268
|
+
在 Claude Code 或 Codex 会话中使用:
|
|
240
269
|
|
|
241
270
|
```bash
|
|
242
271
|
npx shipfolio spec --scan ~/Projects --output ./
|
|
243
272
|
```
|
|
244
273
|
|
|
245
|
-
输出 `shipfolio-spec.json` 和 `shipfolio-prompt.md`。将 prompt
|
|
274
|
+
输出 `shipfolio-spec.json` 和 `shipfolio-prompt.md`。将 prompt 输入 AI 会话即可直接生成网站。
|
|
246
275
|
|
|
247
|
-
###
|
|
276
|
+
### 部署
|
|
248
277
|
|
|
249
278
|
```bash
|
|
250
279
|
npx shipfolio deploy --site ./shipfolio-site --platform cloudflare
|
|
251
280
|
npx shipfolio deploy --site ./shipfolio-site --platform vercel
|
|
252
281
|
```
|
|
253
282
|
|
|
254
|
-
###
|
|
283
|
+
### 导出 PDF
|
|
255
284
|
|
|
256
285
|
```bash
|
|
257
286
|
npx shipfolio pdf --site ./shipfolio-site
|
|
258
287
|
```
|
|
259
288
|
|
|
260
|
-
需要 Playwright
|
|
289
|
+
需要 Playwright: `npx playwright install chromium`
|
|
261
290
|
|
|
262
|
-
###
|
|
291
|
+
### 本地预览
|
|
263
292
|
|
|
264
293
|
```bash
|
|
265
|
-
npx shipfolio preview --site ./shipfolio-site
|
|
294
|
+
npx shipfolio preview --site ./shipfolio-site --port 3000
|
|
266
295
|
```
|
|
267
296
|
|
|
268
|
-
##
|
|
297
|
+
## CLI 参考
|
|
298
|
+
|
|
299
|
+
### `shipfolio init`(默认命令)
|
|
269
300
|
|
|
270
|
-
|
|
|
301
|
+
| 参数 | 说明 | 默认值 |
|
|
302
|
+
|---|---|---|
|
|
303
|
+
| `-s, --scan <dirs...>` | 扫描目录 | 当前目录 |
|
|
304
|
+
| `-o, --output <dir>` | 输出目录 | `./shipfolio-site` |
|
|
305
|
+
| `--no-pdf` | 跳过 PDF 导出 | |
|
|
306
|
+
| `--no-preview` | 跳过本地预览 | |
|
|
307
|
+
|
|
308
|
+
### `shipfolio update`
|
|
309
|
+
|
|
310
|
+
| 参数 | 说明 |
|
|
271
311
|
|---|---|
|
|
272
|
-
|
|
|
273
|
-
|
|
|
274
|
-
| `
|
|
275
|
-
| `
|
|
276
|
-
| `
|
|
277
|
-
| `shipfolio preview --site <path>` | 启动本地预览服务器 |
|
|
312
|
+
| `--site <path>` | 已有网站目录(必填) |
|
|
313
|
+
| `-s, --scan <dirs...>` | 扫描目录 |
|
|
314
|
+
| `--no-pdf` | 跳过 PDF 导出 |
|
|
315
|
+
| `--no-preview` | 跳过预览 |
|
|
316
|
+
| `--no-deploy` | 跳过部署 |
|
|
278
317
|
|
|
279
|
-
|
|
318
|
+
### `shipfolio deploy`
|
|
280
319
|
|
|
281
|
-
| 参数 |
|
|
282
|
-
|
|
283
|
-
| `--
|
|
284
|
-
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
|
289
|
-
|
|
290
|
-
|
|
|
291
|
-
|
|
|
320
|
+
| 参数 | 说明 |
|
|
321
|
+
|---|---|
|
|
322
|
+
| `--site <path>` | 网站目录(必填) |
|
|
323
|
+
| `-p, --platform <name>` | `cloudflare` 或 `vercel` |
|
|
324
|
+
|
|
325
|
+
### `shipfolio spec`
|
|
326
|
+
|
|
327
|
+
| 参数 | 说明 |
|
|
328
|
+
|---|---|
|
|
329
|
+
| `-s, --scan <dirs...>` | 扫描目录 |
|
|
330
|
+
| `-o, --output <dir>` | Spec 文件输出目录 |
|
|
331
|
+
|
|
332
|
+
### `shipfolio pdf`
|
|
333
|
+
|
|
334
|
+
| 参数 | 说明 |
|
|
335
|
+
|---|---|
|
|
336
|
+
| `--site <path>` | 网站目录(必填) |
|
|
337
|
+
| `-o, --output <path>` | PDF 输出路径 |
|
|
338
|
+
|
|
339
|
+
### `shipfolio preview`
|
|
340
|
+
|
|
341
|
+
| 参数 | 说明 |
|
|
342
|
+
|---|---|
|
|
343
|
+
| `--site <path>` | 网站目录(必填) |
|
|
344
|
+
| `--port <port>` | 端口号(默认 3000,占用时自动切换) |
|
|
345
|
+
|
|
346
|
+
## 功能特性
|
|
292
347
|
|
|
293
|
-
|
|
348
|
+
### 项目合并
|
|
294
349
|
|
|
295
|
-
|
|
350
|
+
当你有关联项目时(如 web 端和 mobile 端),shipfolio 支持将它们合并为一个作品集条目。技术栈、提交历史和 README 会自动合并。
|
|
296
351
|
|
|
297
|
-
|
|
352
|
+
### 草稿恢复
|
|
353
|
+
|
|
354
|
+
如果流程中断或在问答环节后崩溃,你的回答会保存到 `~/.shipfolio/draft.json`。下次运行时会询问是否恢复。
|
|
355
|
+
|
|
356
|
+
### 多语言
|
|
357
|
+
|
|
358
|
+
CLI 自动检测系统语言。简体中文和繁体中文用户看到中文提示,其他语言看到英文。
|
|
359
|
+
|
|
360
|
+
### 自定义域名
|
|
361
|
+
|
|
362
|
+
部署时可指定自定义域名。Vercel 通过 `vercel domains add` 自动配置。Cloudflare Pages 会打印 dashboard 直链和操作指引。
|
|
363
|
+
|
|
364
|
+
### GitHub 自动部署
|
|
365
|
+
|
|
366
|
+
部署后,shipfolio 可创建 GitHub 仓库并添加 `.github/workflows/deploy.yml`,每次 push 自动重新部署。只需在仓库中添加 secrets:
|
|
367
|
+
|
|
368
|
+
**Cloudflare Pages:**
|
|
369
|
+
```bash
|
|
370
|
+
gh secret set CLOUDFLARE_API_TOKEN
|
|
371
|
+
gh secret set CLOUDFLARE_ACCOUNT_ID
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
**Vercel:**
|
|
375
|
+
```bash
|
|
376
|
+
gh secret set VERCEL_TOKEN
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
## 生成的网站技术栈
|
|
380
|
+
|
|
381
|
+
- Next.js 15 (App Router, 静态导出 `output: 'export'`)
|
|
298
382
|
- Tailwind CSS v4
|
|
299
383
|
- shadcn/ui 组件
|
|
300
384
|
- TypeScript
|
|
301
|
-
-
|
|
302
|
-
-
|
|
303
|
-
|
|
304
|
-
构建输出为纯静态的 `out/` 目录,可部署到任何静态托管平台。
|
|
385
|
+
- 响应式(桌面 + 平板 + 移动端)
|
|
386
|
+
- PDF 导出优化的打印样式
|
|
387
|
+
- 构建产物:纯静态 `out/` 目录
|
|
305
388
|
|
|
306
|
-
##
|
|
389
|
+
## 部署平台
|
|
307
390
|
|
|
308
391
|
### Cloudflare Pages
|
|
309
392
|
|
|
310
|
-
|
|
393
|
+
不需要预装 CLI。首次运行时 `npx wrangler login` 会打开浏览器进行认证。项目自动创建。网站获得 `<项目名>.pages.dev` 域名。
|
|
311
394
|
|
|
312
395
|
免费额度: 无限站点,500 次构建/月,无限带宽。
|
|
313
396
|
|
|
314
397
|
### Vercel
|
|
315
398
|
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
### GitHub 自动部署
|
|
319
|
-
|
|
320
|
-
初始部署后,工具可选择性地创建 GitHub 仓库。将仓库连接到 Cloudflare Pages 或 Vercel 即可实现 push 自动部署。
|
|
399
|
+
不需要预装 CLI。首次运行时 `npx vercel login` 会打开浏览器进行认证。网站获得 `<项目名>.vercel.app` 域名。
|
|
321
400
|
|
|
322
401
|
## 相关链接
|
|
323
402
|
|
|
324
403
|
- GitHub: [github.com/Octo-o-o-o/shipfolio](https://github.com/Octo-o-o-o/shipfolio)
|
|
325
|
-
- npm:
|
|
404
|
+
- npm: [npmjs.com/package/shipfolio](https://www.npmjs.com/package/shipfolio)
|
|
326
405
|
- 问题反馈: [github.com/Octo-o-o-o/shipfolio/issues](https://github.com/Octo-o-o-o/shipfolio/issues)
|
|
327
406
|
|
|
328
407
|
## 许可证
|
package/dist/cli.js
CHANGED
|
@@ -2319,7 +2319,7 @@ import { resolve } from "path";
|
|
|
2319
2319
|
import { join as join6 } from "path";
|
|
2320
2320
|
import * as p3 from "@clack/prompts";
|
|
2321
2321
|
async function initCommand(options) {
|
|
2322
|
-
logger.header("shipfolio v1.0.
|
|
2322
|
+
logger.header("shipfolio v1.0.10");
|
|
2323
2323
|
logger.info("Detecting AI engines...");
|
|
2324
2324
|
const engines = await detectEngines();
|
|
2325
2325
|
const availableTypes = getAvailableEngineTypes(engines);
|
|
@@ -2785,7 +2785,7 @@ initLocale();
|
|
|
2785
2785
|
var program = new Command();
|
|
2786
2786
|
program.name("shipfolio").description(
|
|
2787
2787
|
"Generate and deploy your personal portfolio site from local projects using AI"
|
|
2788
|
-
).version("1.0.
|
|
2788
|
+
).version("1.0.10");
|
|
2789
2789
|
program.command("init", { isDefault: true }).description("Generate a new portfolio site").option("-s, --scan <dirs...>", "Directories to scan for projects").option("-o, --output <dir>", "Output directory", "./shipfolio-site").option("--no-pdf", "Skip PDF export").option("--no-preview", "Skip local preview").action(initCommand);
|
|
2790
2790
|
program.command("update").description("Update an existing portfolio site").requiredOption("--site <path>", "Path to existing site directory").option("-s, --scan <dirs...>", "Directories to scan for projects").option("--no-pdf", "Skip PDF export").option("--no-preview", "Skip preview").option("--no-deploy", "Skip deployment").action(updateCommand);
|
|
2791
2791
|
program.command("spec").description("Generate spec and prompt files only").option("-s, --scan <dirs...>", "Directories to scan for projects").option("-o, --output <dir>", "Output directory for spec files", ".").action(specCommand);
|