CLI コマンド
gassma パッケージをインストールすると、npx gassma <command> で CLI を実行できます。
$ npm i gassma
| コマンド | 説明 |
|---|---|
bootstrap | ローカル開発環境(clasp + esbuild + TypeScript + GASsma)を一発でセットアップ |
init | スキーマファイルと設定ファイルを生成 |
generate | スキーマから型ファイルとクライアントコードを生成 |
migrate dev / migrate deploy / db push | スキーマに合わせてシートと列を同期する GAS 関数を生成 |
validate | スキーマファイルの構文・整合性チェック |
format | .prisma ファイルを整形 |
studio | 対象のスプレッドシートをブラウザで開く |
version | CLI のバージョンを表示 |
gassma generate
型ファイルとクライアントコードを生成します。
$ npx gassma generate
デフォルトでは ./gassma ディレクトリ内の .prisma ファイルが探索されます。--schema オプションで特定のスキーマファイルまたはディレクトリを指定できます(Prisma の prisma generate --schema に相当)。
$ npx gassma generate --schema gassma/user.prisma
$ npx gassma generate --schema ./schemas
--watch オプションでスキーマファイルの変更を監視し、自動で再生成できます。
$ npx gassma generate --watch
--schema との併用も可能です。
--config オプションで設定ファイルのパスを明示的に指定できます(Prisma の --config に相当)。
$ npx gassma generate --config configs/gassma.config.ts
指定したファイルが存在しない場合は ConfigFileNotFoundError になります。未指定時はデフォルトの場所が探索されます(設定ファイルの「設定ファイルの探索規則」を参照)。
生成されるファイル
スキーマファイル名をもとに以下のファイルが生成されます。例えば schema.prisma の場合:
| ファイル | 内容 |
|---|---|
schema.d.ts | 型定義(モデル型、クエリ型、共通型) |
schemaClient.js | クライアント実装(リレーション定義の自動注入込み) |
schemaClient.d.ts | クライアントの型定義 |
出力先は generator ブロックの output で指定したディレクトリです。
生成される型の概要
生成される .d.ts には以下の型が含まれます。
- モデル型: 各フィールドの型定義(
GassmaUserUse等) - クエリ型:
FindData、CreateData、UpdateData、DeleteData、UpsertData等 - Select / Omit 型: フィールド選択・除外の型
- フィルタ型:
WhereUse、FilterConditions(FieldRef対応含む) - OrderBy 型: ソート条件(リレーションソート、
_countソート、nulls 制御含む) - Include 型: リレーション取得の型(
_count含む) - Nested Write 型: リレーション先の作成・接続・更新・削除操作
- 数値操作型:
NumberOperation(increment / decrement / multiply / divide) - 共通型:
FieldRef、GassmaClientOptions、エラークラス群 - 設定型:
DefaultsConfig、UpdatedAtConfig、IgnoreConfig、AutoincrementConfig、MapConfig等 - コントローラー型: 全メソッドの引数・戻り値型
生成されたクライアントの使い方は基本を参照してください。
gassma init
プロジェクトを初期化し、スキーマファイルと設定ファイルを自動生成します。
$ npx gassma init
以下のファイルが生成されます:
gassma/schema.prisma— 初期スキーマgassma.config.ts— 設定ファイル
| オプション | 説明 |
|---|---|
--output <path> | 生成先パスをカスタマイズ |
--with-model | サンプル User モデルを含むスキーマを生成 |
既に schema.prisma が存在する場合はエラーで安全に停止します。
新規プロジェクトを始める場合は、init の内容に加えて clasp・esbuild・TypeScript の設定までまとめて用意する gassma bootstrap が便利です。
gassma validate
スキーマファイルの構文チェック・整合性チェックを行います(Prisma の prisma validate に相当)。
$ npx gassma validate
$ npx gassma validate --schema gassma/test.prisma
--config オプションで設定ファイルのパスを指定することもできます。
チェック項目:
- 構文エラー(パーサーエラー検出)
generatorブロックの存在チェックoutputフィールドの必須チェック- モデルが 1 つ以上定義されていること
成功時は以下のように出力されます:
The schema at /path/to/gassma/test.prisma is valid 🚀
gassma format
.prisma ファイルを Prisma 公式と同じフォーマットで整形します(@prisma/internals の formatSchema を使用)。
$ npx gassma format
| オプション | 説明 |
|---|---|
--schema <path> | 特定ファイルのみ整形 |
--config <path> | 設定ファイルのパスを指定 |
--check | フォーマット済みかチェック(CI 用、未整形時は exit 1) |
gassma studio
datasource に設定したスプレッドシートを、OS のデフォルトブラウザで開きます。
$ npx gassma studio
| オプション | 説明 |
|---|---|
--config <path> | 設定ファイルのパスを指定 |
URL は以下の順で解決されます。
- スキーマ内の
datasourceブロックのurl gassma.config.tsのdatasource.url- カレントディレクトリの
.clasp.jsonのparentId
フル URL(https://...)ならそのまま開き、スプレッドシート ID なら https://docs.google.com/spreadsheets/d/<id>/edit を組み立てて開きます。どこにも URL が無い場合は NoDatasourceUrlError になります。
.clasp.json の parentId は、GAS プロジェクトがバインドされているスプレッドシートの ID です。文字列でも配列でもよく、配列の場合は先頭の要素を使います。
{
"scriptId": "XXXXX",
"rootDir": "dist",
"parentId": ["SPREAD_SHEET_ID"]
}
.clasp.json を読むのは、スキーマにも gassma.config.ts にも URL が無かった場合だけです。そのとき .clasp.json が存在するのに JSON オブジェクトとして読めない場合は InvalidClaspJsonError になります。
gassma version
GASsma CLI のバージョンを表示します。
$ npx gassma version
--version / -V フラグでも確認できます。
| オプション | 説明 |
|---|---|
--json | バージョン情報を JSON で出力 |
--json を付けると、バージョン情報を JSON 形式({"gassma":"<version>"})で出力します。
$ npx gassma version --json
{"gassma":"1.2.3"}