名称: pinme
描述: |
通过 PinMe CLI 一键将静态网站部署到 IPFS。
使用场景:(1) 用户希望部署已构建的前端项目;(2) 需要将静态文件(dist/build/out/public)上传到 IPFS;(3) 请求获取已部署站点的预览链接。
支持:Vite、React、Vue、Next.js、Angular、Create React App 及静态站点。
输出:上传成功后返回预览链接 (https://pinme.eth.limo/#/preview/*)。
一键将静态网站部署到 IPFS 网络。无需服务器、无需账户、无需配置。
在以下情况使用此技能:
- 用户要求“部署”、“上传”或“发布”前端项目
- 用户希望获取已构建站点的预览链接
- 用户提及 PinMe 或 IPFS 部署
- 项目已生成静态文件(dist/、build/、out/、public/)
# 安装 PinMe
npm install -g pinme
# 部署(自动检测静态目录)
pinme upload dist
# 获取预览链接
# https://pinme.eth.limo/#/preview/*
# 检查 Node.js 版本(要求 16.13.0+)
node --version
# 验证 pinme 是否已安装
pinme --version
PinMe 按优先级自动检测目录:
| 目录 | 框架/工具 |
|---|---|
dist/ |
Vite、Vue CLI、Angular |
build/ |
Create React App |
out/ |
Next.js(静态导出) |
public/ |
静态站点 |
验证规则:
- ✅ 文件夹必须存在
- ✅ 必须包含 index.html
- ✅ 必须有实际的静态文件(CSS、JS、图片等)
# 部署 dist 目录(最常见)
pinme upload dist
# 部署指定目录
pinme upload build
# 上传并绑定自定义域名(需要 Plus 版本)
pinme upload dist --domain my-site
仅返回预览链接:https://pinme.eth.limo/#/preview/*
| 命令 | 描述 |
|---|---|
pinme upload <dir> |
上传静态文件到 IPFS |
pinme upload <dir> --domain <name> |
上传并绑定域名 |
pinme import <car-file> |
导入 CAR 文件 |
pinme export <CID> |
将 IPFS 内容导出为 CAR |
pinme list |
显示上传历史 |
pinme rm <hash> |
从 IPFS 移除文件 |
pinme set-appkey |
设置用于身份验证的 AppKey |
pinme my-domains |
列出拥有的域名 |
pinme --version |
显示版本 |
| 类型 | 免费计划 |
|---|---|
| 单个文件 | 200MB |
| 总目录大小 | 1GB |
| 错误 | 解决方案 |
|---|---|
| Node.js 版本过低 | 升级至 16.13.0+ |
| 命令未找到 | 运行 npm install -g pinme |
| 文件夹不存在 | 检查路径,使用 ls |
| 上传失败 | 检查网络,重试 |
| 身份验证失败 | 运行 pinme set-appkey |
用于程序化部署:
node --version(需要 >=16.13.0)npm install -g pinmedist/、build/、out/、public/index.htmlpinme upload <directory>禁止操作:
- ❌ 上传 node_modules、.env、.git
- ❌ 上传源码目录(src/)
- ❌ 上传配置文件(package.json 等)
- ❌ 上传不存在或空的文件夹
示例工作流:
名称: 部署到 PinMe
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '18'
- run: npm ci && npm run build
- run: npm install -g pinme
- run: pinme set-appkey "${{ secrets.PINME_APPKEY }}"
- run: pinme upload dist --domain "${{ secrets.DOMAIN }}"
{
"tool": "pinme",
"requirements": {
"node_version": ">=16.13.0"
},
"install": "npm install -g pinme",
"upload": "pinme upload {{directory}}",
"upload_with_domain": "pinme upload {{directory}} --domain {{domain}}",
"validDirectories": ["dist", "build", "out", "public"],
"requiredFiles": ["index.html"],
"excludePatterns": ["node_modules", ".env", ".git", "src"],
"limits": {
"single_file": "200MB",
"total_directory": "1GB"
},
"output": "preview_url",
"preview_url_format": "https://pinme.eth.limo/#/preview/*",
"fixed_domain_format": "https://*.pinit.eth.limo"
}