🚀 Superjolt CLI (Beta)
🤖 Superjolt CLI是一款支持MCP的AI驱动部署平台的官方命令行工具,可借助AI辅助轻松部署和管理JavaScript应用程序,为开发者提供高效、便捷的云端部署体验。
[](https://www.npmjs.com/package/superjolt)
[](https://www.npmjs.com/package/superjolt)
[](https://github.com/scoritz/superjolt/actions/workflows/test.yml)
[](https://codecov.io/gh/scoritz/superjolt)
[](https://opensource.org/licenses/MIT)
[](https://superjolt.com/discord)
⚡ 重要提示
目前Superjolt处于Beta版本,我们正在根据您的反馈积极改进。欢迎加入我们的 Discord 分享您的使用体验!在Beta阶段,CLI将自动检查关键更新,以确保与我们不断发展的API兼容。
🚀 快速开始
在您的JavaScript框架项目文件夹中,运行以下命令:
npx superjolt deploy
就是这么简单!CLI将引导您完成身份验证和部署过程。
✨ 主要特性
- 🚀 一键部署:使用
npx superjolt deploy 即可完成部署。
- 🤖 通过MCP实现AI驱动的基础设施管理。
- 🔧 全面的服务生命周期管理。
- 🔐 安全的环境变量处理。
- 📊 实时日志和监控。
- 🌐 自动SSL和自定义域名支持。
📦 安装指南
您可以通过以下几种方式安装Superjolt CLI:
使用npx(无需安装)
npx superjolt deploy
全局安装
使用npm全局安装Superjolt CLI:
npm install -g superjolt
或者使用yarn:
yarn global add superjolt
💻 使用示例
部署Node.js应用程序
cd my-node-app
superjolt login
superjolt deploy
superjolt deploy --verbose
管理环境变量
superjolt env:set NODE_ENV production
superjolt env:push
superjolt env:list
管理自定义域名
superjolt domain:add app.example.com
superjolt domain:add app.example.com happy-blue-fox
superjolt domain:add www.example.com --primary
superjolt domain:list
superjolt domain:status app.example.com
superjolt domain:remove app.example.com
管理机器
superjolt machine:create
superjolt machine:list
superjolt machine:use happy-blue-fox
使用Claude进行AI驱动的管理
MCP配置完成后,您可以使用自然语言进行操作:
您:"显示所有正在运行的服务"
Claude:[列出所有服务及其状态]
您:"重启API服务并查看其日志"
Claude:[重启服务并显示最近的日志]
您:"为我的数据库连接设置环境变量"
Claude:[帮助配置DATABASE_URL和相关变量]
📚 详细文档
命令说明
身份验证
superjolt login - 使用您的Superjolt账户进行身份验证。
superjolt logout - 从您的账户注销。
superjolt me - 显示当前用户信息。
superjolt token - 显示用于CI/CD的身份验证令牌。
部署
superjolt deploy [options] - 将您的应用程序部署到Superjolt。
-p, --path <path> - 应用程序目录的路径(默认为当前目录)。
-s, --service <serviceId> - 部署到现有服务(可选)。
-m, --machine <machineId> - 要部署到的机器ID。
-n, --name <name> - 服务名称(新服务默认为package.json中的名称)。
-v, --verbose - 显示详细的构建输出和日志。
机器管理
superjolt machine:create - 创建新机器。
superjolt machine:list - 列出所有机器。
superjolt machine:delete <machine-id> - 删除机器。
superjolt machine:use <machine-id> - 设置部署的默认机器。
superjolt machine:rename [machine-id] <new-name> - 重命名机器(如果省略ID,则使用默认机器)。
服务管理
superjolt service:list [machine-id] - 列出机器的服务。
superjolt service:start <service-id> - 启动服务。
superjolt service:stop <service-id> - 停止服务。
superjolt service:restart <service-id> - 重启服务。
superjolt service:rename <service-id> <new-name> - 重命名服务(别名:rename)。
superjolt service:delete <service-id> - 删除服务。
自定义域名
superjolt domain:add <domain> [service-id] - 为服务添加自定义域名(如果省略服务ID,则使用.superjolt文件)。
-p, --primary - 设置为服务的主域名。
superjolt domain:list [service-id] - 列出自定义域名(别名:domains)。
superjolt domain:status <domain> - 检查域名验证状态。
superjolt domain:remove <domain> - 删除自定义域名(别名:domain:delete)。
环境变量
superjolt env:list - 列出环境变量。
superjolt env:set <key> <value> - 设置环境变量。
superjolt env:get <key> - 获取环境变量。
superjolt env:unset <key> - 删除环境变量。
superjolt env:push - 将.env文件推送到您的应用程序。
日志
superjolt logs [service-id] - 查看应用程序的实时日志。
其他命令
superjolt reset - 删除所有机器和服务(破坏性操作 - 需要确认)。
superjolt update - 将CLI更新到最新版本。
superjolt update --check - 检查更新但不安装。
superjolt status - 显示CLI配置、版本和存储的数据(别名:info, config)。
--show-token - 显示完整的身份验证令牌。
配置说明
项目配置
首次部署后,CLI会在项目根目录自动创建一个 .superjolt 文件,该文件用于跟踪以下信息:
{
"serviceId": "clever-red-deer"
}
这允许CLI确定是更新现有部署还是创建新部署。
部署忽略文件(.superjoltignore)
您可以在项目根目录创建一个 .superjoltignore 文件,以排除特定文件和目录的部署。该文件遵循与 .gitignore 相同的语法。
查看默认排除项和示例
默认排除项
以下模式始终从部署中排除:
node_modules/
.git/
dist/
build/
.env*
*.log
coverage/
.nyc_output/
.next/
.nuxt/
.cache/
tmp/
temp/
.superjolt
自定义排除项
创建一个 .superjoltignore 文件以添加您自己的排除模式:
# 忽略测试文件
**/*.test.js
**/*.spec.js
__tests__/
# 忽略开发文件
*.dev.js
.vscode/
.idea/
# 忽略特定目录
docs/
examples/
# 开发期间忽略大资产
videos/
*.mp4
.superjoltignore 中的模式与默认排除项合并,因此您无需重复它们。
#### 端口配置
当您的应用程序部署到Superjolt时,服务器会通过 `PORT` 环境变量自动提供端口号。您的应用程序应监听此端口以接收传入请求。
```javascript
// Node.js/Express示例
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Server listening on port ${port}`);
});
```
这与Heroku等其他PaaS平台类似 - 您无需选择端口,平台会动态分配。在可用时始终使用 `process.env.PORT`,并为本地开发提供备用端口。
CI/CD集成
Superjolt CLI支持通过环境变量进行身份验证,以实现无缝的CI/CD集成。
设置CI/CD身份验证
- 获取身份验证令牌:
superjolt token --show
- 将令牌设置为CI/CD平台中的机密:
- GitHub Actions:添加为名为
SUPERJOLT_TOKEN 的存储库机密。
- GitLab CI:添加为受保护的CI/CD变量。
- CircleCI:在项目设置中添加为环境变量。
- 其他平台:将
SUPERJOLT_TOKEN 设置为安全的环境变量。
- 在CI/CD管道中使用:
GitHub Actions示例
name: Deploy to Superjolt
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install dependencies
run: npm ci
- name: Deploy to Superjolt
env:
SUPERJOLT_TOKEN: ${{ secrets.SUPERJOLT_TOKEN }}
run: npx superjolt deploy
GitLab CI示例
deploy:
stage: deploy
image: node:18
script:
- npm ci
- npx superjolt deploy
only:
- main
variables:
SUPERJOLT_TOKEN: $SUPERJOLT_TOKEN
通用脚本示例
#!/bin/bash
export SUPERJOLT_TOKEN="your-token-here"
npx superjolt deploy
安全最佳实践
- 切勿将令牌提交到版本控制
- 将令牌存储为CI/CD平台中的加密机密。
- 为不同环境(暂存、生产)使用不同的令牌。
- 定期轮换令牌。
- 令牌可提供对您的Superjolt账户的完全访问权限 - 请谨慎处理。
环境变量身份验证
当设置了 SUPERJOLT_TOKEN 时,CLI将:
- 跳过基于浏览器的登录流程。
- 使用令牌进行所有API请求。
- 在无头环境(CI/CD、容器)中工作。
您可以使用以下命令验证令牌来源:
superjolt status
🔧 技术细节
Superjolt CLI是首个原生支持Model Context Protocol (MCP) 的部署平台之一,允许您通过Claude Desktop等AI助手管理整个基础设施。
为什么选择MCP?
- 自然语言控制:使用对话式命令管理部署。
- 上下文感知操作:AI了解您的基础设施状态。
- 自动化工作流程:让AI处理复杂的部署序列。
- 错误解决:获得智能帮助以解决部署问题。
设置MCP
- 安装Superjolt CLI(包括MCP服务器):
npm install -g superjolt
- 使用Superjolt进行身份验证:
superjolt login
- 添加到Claude Desktop配置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- Linux:
~/.config/claude/claude_desktop_config.json
{
"mcpServers": {
"superjolt": {
"command": "superjolt-mcp",
"args": []
}
}
}
- 重启Claude Desktop
MCP功能
配置完成后,您可以使用自然语言进行以下操作:
身份验证和CI/CD设置
- "获取我用于CI/CD的身份验证令牌"
- "展示如何设置GitHub Actions"
- "检查我是否已通过身份验证"
基础设施管理
- "创建新的生产机器"
- "列出所有正在运行的服务"
- "展示已停止的服务"
- "删除所有测试机器"
部署操作
- "重启我的API服务"
- "停止暂存环境"
- "查看Web服务的日志"
配置
- "为我的后端设置DATABASE_URL"
- "列出所有环境变量"
- "更新生产环境的API密钥"
自定义域名
- "将app.example.com添加到我的Web服务"
- "列出所有自定义域名"
- "检查我的域名验证状态"
- "删除old.example.com"
可用的MCP工具
查看所有MCP工具
身份验证
check_auth - 检查是否已通过Superjolt身份验证
get_current_user - 获取当前用户信息
get_token - 获取用于CI/CD的身份验证令牌
机器管理
list_machines - 列出所有机器
create_machine - 创建新机器
delete_machine - 删除机器
rename_machine - 重命名机器
set_default_machine - 设置部署的默认机器
服务管理
list_services - 列出服务(可选按机器过滤)
start_service - 启动服务
stop_service - 停止服务
restart_service - 重启服务
delete_service - 删除服务
rename_service - 重命名服务
环境变量
list_env_vars - 列出服务的所有环境变量
set_env_vars - 设置一个或多个环境变量
get_env_var - 获取特定环境变量
delete_env_var - 删除环境变量
push_env_file - 将.env文件推送到服务
自定义域名
add_custom_domain - 为服务添加自定义域名
list_custom_domains - 列出服务或所有服务的自定义域名
remove_custom_domain - 删除自定义域名
get_custom_domain_status - 获取自定义域名的状态
日志
### MCP要求和故障排除
- **需要Node.js 16或更高版本**(MCP服务器使用现代JavaScript功能)
- 如果您看到 `Unexpected token '??='` 错误,则Claude Desktop使用的是旧版本的Node.js。
**解决方案**:
1. 设置默认Node版本并重启Claude Desktop:
```bash
nvm alias default 16 # 或更高版本
# 完全退出并重启Claude Desktop
```
2. 或者在Claude Desktop配置中使用显式路径:
```json
{
"mcpServers": {
"superjolt": {
"command": "/path/to/node16+/bin/node",
"args": ["/path/to/node16+/bin/superjolt-mcp"]
}
}
}
```
📄 许可证
本项目采用MIT许可证,详情请参阅 LICENSE 文件。
其他信息
Web 仪表盘
您可以通过我们的Web界面 users.superjolt.com 管理您的部署:
- 📊 查看部署指标和使用情况。
- 🔧 管理服务和环境变量。
- 📱 实时监控您的应用程序。
- 🚀 访问部署日志和历史记录。
支持
- 仪表盘:https://users.superjolt.com
- 文档:https://superjolt.com/docs
- 问题反馈:https://github.com/scoritz/superjolt/issues
- Discord:https://superjolt.com/discord
- 邮箱:support@superjolt.com
贡献
我们欢迎您的贡献!请参阅 贡献指南 了解详细信息。