メインコンテンツまでスキップ

設定ファイル(gassma.config.ts)

プロジェクトルートに gassma.config.ts を配置することで、CLI の設定を一元管理できます(Prisma の prisma.config.ts に相当)。TypeScript 以外の拡張子(.js / .mjs / .cjs / .mts / .cts)や .config/ ディレクトリへの配置にも対応しています(後述の「設定ファイルの探索規則」を参照)。

gassma initgassma bootstrap を実行すると、gassma.config.ts も自動生成されます。

設定インターフェース

設定ファイルの記述方法は 2 つあります。

1. defineConfig ヘルパーを使用(推奨):

import { defineConfig } from "gassma/config";

export default defineConfig({
schema: "gassma/schema.prisma",
datasource: {
url: "https://docs.google.com/spreadsheets/d/XXXXX/edit",
},
});

2. satisfies 演算子を使用:

import type { GassmaConfig } from "gassma";

export default {
schema: "gassma/schema.prisma",
datasource: {
url: "https://docs.google.com/spreadsheets/d/XXXXX/edit",
},
} satisfies GassmaConfig;

GassmaConfig 型は gassma パッケージのルートから import できます。

設定オプション

オプション必須説明
schemastringいいえスキーマファイルまたはディレクトリのパス(デフォルト: ./gassma
datasource.urlstringいいえスプレッドシートの URL または ID

datasource.url

datasource.url にスプレッドシートの URL または ID を指定すると、生成されるクライアント JS に id が自動埋め込みされます。これにより new GassmaClient() だけで対象スプレッドシートに接続できます。

フル URL とスプレッドシート ID の両方に対応しています。

// フル URL
datasource: {
url: "https://docs.google.com/spreadsheets/d/XXXXX/edit",
}

// ID 直接指定
datasource: {
url: "XXXXX",
}

URL 解決の優先順位

  1. スキーマ内の datasource ブロック(最優先)
  2. gassma.config.tsdatasource.url

スキーマ内の datasource ブロックについてはスキーマを参照してください。

注記

.clasp.jsonparentId まで見るのは gassma studio だけです。生成されるクライアントに埋め込まれる id と、migrate / db push がスタブに埋め込む spreadsheetId は、上の 2 つからのみ解決されます。

スキーマ解決の優先順位

  1. --schema オプション(最優先)
  2. gassma.config.tsschema 設定
  3. デフォルト ./gassma ディレクトリ

相対パスの解決基準はそれぞれ異なります。--schema オプションは実行時のカレントディレクトリ基準、設定ファイルの schema設定ファイルのある場所基準 で解決されます(Prisma と同じ)。

env() ヘルパー

env() 関数を使うと、環境変数からスプレッドシート URL を取得できます(Prisma の env() に相当)。

import "dotenv/config";
import { defineConfig, env } from "gassma/config";

export default defineConfig({
schema: "gassma",
datasource: {
url: env("SPREADSHEET_URL"),
},
});

satisfies パターンでも使用できます。

import "dotenv/config";
import type { GassmaConfig } from "gassma";
import { env } from "gassma/config";

export default {
schema: "gassma",
datasource: {
url: env("SPREADSHEET_URL"),
},
} satisfies GassmaConfig;

型付きの env()

型引数に環境変数のインターフェースを渡すと、env() に指定できる名前がそのキーに限定され、補完も効くようになります。

import "dotenv/config";
import { defineConfig, env } from "gassma/config";

interface Env {
SPREADSHEET_URL: string;
}

export default defineConfig({
schema: "gassma",
datasource: {
url: env<Env>("SPREADSHEET_URL"),
},
});

指定できるのは値が string(または string | undefined)型のキーのみです。存在しないキーを指定するとコンパイルエラーになります。

注記

env() は環境変数が未設定または空文字の場合に GassmaConfigEnvError をスローします。オプショナルな環境変数には process.env を直接使用してください。

設定ファイルの探索規則

設定ファイルは以下の順序で探索され、最初に見つかったファイル が採用されます。

  1. gassma.config.js
  2. gassma.config.ts
  3. gassma.config.mjs
  4. gassma.config.cjs
  5. gassma.config.mts
  6. gassma.config.cts
  7. .config/gassma.js
  8. .config/gassma.ts
  9. .config/gassma.mjs
  10. .config/gassma.cjs
  11. .config/gassma.mts
  12. .config/gassma.cts

プロジェクトルート直下の gassma.config.* が全拡張子ぶん先に探索され、その後 .config/ ディレクトリ内の gassma.* が探索されます。.js.ts より先に採用される点も含め、Prisma の設定ファイル探索と同じ順序です。

--config オプション

generate--watch 含む)/ validate / format / studio の各コマンドでは、--config オプションで設定ファイルのパスを明示的に指定できます(Prisma の --config に相当)。

$ npx gassma generate --config configs/gassma.config.ts
  • 相対パスは実行時のカレントディレクトリ基準で解決されます。
  • 指定したファイルが存在しない場合は ConfigFileNotFoundError になります。
  • 未指定時は上記の探索規則に従ってデフォルトの場所が探索されます。

ロード時の挙動

gassma generate 実行時、設定ファイルのロードに成功すると以下のように表示されます。

⚙️ Loaded config from gassma.config.ts
  • 設定ファイルに構文エラー・実行時エラーがある場合や、既知のキー(schema / datasource.url)の型が不正な場合は GassmaConfigLoadError になります。
  • 未知のキーが含まれている場合は警告が表示され、そのキーは無視されます(エラーにはなりません)。
Warning: Unknown property `outut` in /path/to/gassma.config.ts. Known properties are: schema, datasource. It will be ignored.