spacetimedb-cli について
SpacetimeDB を使う開発者向けのコマンドラインガイドです。プロジェクト作成、モジュールのビルドと公開、データベース操作、サーバー管理に加え、一般的な手順とトラブルシューティングを説明します。
主な機能
- 01プロジェクト作成とモジュールのビルド
- 02指定サーバーへのデータベース公開
- 03SQL クエリとReducerの実行
- 04データベースとサーバーの管理
- 05ログインとクライアントバインディング生成
活用シーン
- 01SpacetimeDB プロジェクトのセットアップ
- 02ローカルまたは Maincloud へのモジュール公開
- 03データベースの照会やReducerの呼び出し
- 04ログイン・接続・ビルド問題の調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ clockworklabs/ spacetimedb --skill spacetimedb-cliインストール後、Claude Code で/spacetimedb-cliを入力して読み込まれたか確認します。
詳細
SpacetimeDB CLI
プロジェクトの初期化、モジュールのビルド、データベースの公開、データのクエリ、サーバーの管理、CLI の問題のトラブルシューティングなど、spacetime CLI ツールについてユーザーがサポートを必要としている場合に、このスキルを使用します。
クイックリファレンス
プロジェクトの初期化と開発
# Initialize new project
spacetime init my-project --lang rust|csharp|typescript|cpp
spacetime init my-project --template <template-id>
# Build module
spacetime build # release build
spacetime build --debug # faster iteration, slower runtime
# Dev mode (auto-rebuild, auto-publish, generates bindings)
spacetime dev
spacetime dev --client-lang typescript --module-bindings-path ./client/src/module_bindings
# Generate client bindings
spacetime generate --lang typescript|csharp|rust|unrealcpp --out-dir ./bindings --module-path ./server
公開とデプロイ
# Publish to Maincloud (default)
spacetime publish my-database --yes
# Publish to local server
spacetime publish my-database --server local --yes
# Clear database and republish
spacetime publish my-database --clear-database --yes
データベースの操作
# SQL queries
spacetime sql my-database "SELECT * FROM users"
spacetime sql my-database --interactive # REPL mode
# Call reducers
spacetime call my-database my_reducer '{"arg1": "value", "arg2": 123}'
# Subscribe to changes
spacetime subscribe my-database "SELECT * FROM users" --num-updates 10
# View logs
spacetime logs my-database -f # follow logs
spacetime logs my-database -n 100 # up to 100 log lines
# Describe schema
spacetime describe my-database --json
spacetime describe my-database table users --json
spacetime describe my-database reducer my_reducer --json
データベースの管理
# List databases
spacetime list
# Delete database
spacetime delete my-database
# Rename database
spacetime rename <database-identity> --to new-name
サーバーの管理
# List configured servers
spacetime server list
# Add server
spacetime server add local --url http://localhost:3000 --default
spacetime server add myserver --url https://my-spacetime.example.com
# Set default server
spacetime server set-default local
# Test connectivity
spacetime server ping local
# Start local instance
spacetime start
# Clear local data
spacetime server clear
認証
# Login (opens browser)
spacetime login
# Login with token
spacetime login --token <token>
# Show login status
spacetime login show
# Logout
spacetime logout
デフォルトサーバー
| 名前 | URL | 説明 |
|---|---|---|
maincloud | https://maincloud.spacetimedb.com | 本番用クラウド(デフォルト) |
local | http://127.0.0.1:3000 | ローカル開発サーバー |
一般的なワークフロー
新しいプロジェクトのセットアップ
# 1. Login
spacetime login
# 2. Create project
spacetime init my-game --lang rust
cd my-game
# 3. Start dev mode (auto-rebuilds and publishes)
spacetime dev
ローカル開発
# Start local server (in separate terminal)
spacetime start
# Publish to local
spacetime publish my-db --server local --clear-database --yes
# Query local database
spacetime sql my-db --server local "SELECT * FROM players"
クライアントバインディングの生成
# After building module
spacetime build
spacetime generate --lang typescript --out-dir ./client/src/bindings --module-path .
# Or use dev mode which auto-generates
spacetime dev --client-lang typescript --module-bindings-path ./client/src/bindings
よく使うフラグ
| フラグ | 短縮形 | 説明 |
|---|---|---|
--server | -s | 接続先サーバー(ニックネーム、ホスト名、または URL) |
--yes | -y | 非対話モード(確認をスキップ) |
--anonymous | 匿名 ID を使用 | |
--module-path | -p | モジュールプロジェクトへのパス |
トラブルシューティング
「ログインしていません」
spacetime login
# Or use --anonymous for public operations
「サーバーが応答しません」
spacetime server ping <server>
# For local: ensure spacetime start is running
「スキーマが競合しています」
# Clear data and republish
spacetime publish my-db --clear-database --yes
「ビルドに失敗しました」
# Check Rust/C# toolchain
rustup show
# For Rust modules, ensure wasm32-unknown-unknown target
rustup target add wasm32-unknown-unknown
モジュールの言語
サーバーサイド(モジュール): Rust、C#、TypeScript、C++
クライアント SDK: TypeScript、C#、Rust、Python、Unreal Engine
CLI の generate の対象: TypeScript、C#、Rust、Unreal C++
注意事項
- 多くのコマンドには UNSTABLE と記されており、変更される場合があります
- 別途設定しない限り、デフォルトのサーバーは
maincloudです - スクリプトで対話形式のプロンプトを避けるには、
--yesフラグを使用します - 開発モードではファイルを監視し、変更時に自動で再ビルドします
コメント
Markdown 対応