設定ファイル
--rules、--ignore、--fail-on、--weights を実行のたびに指定する代わりに、プロジェクトルートに svelte-vitals.config ファイルを置いて設定をまとめられます。CLI、MCP サーバー、Vite プラグイン はいずれもこのファイルを自動的に読み込みます(MCP サーバーは CLI と同じ analyzeProject 関数を呼び出しているためこの機能をそのまま引き継ぎ、Vite プラグインは直接読み込みます — 詳細は下記の Vite プラグインで設定ファイルを再利用する を参照)。
svelte-vitals install --client config-file を実行すると、以下のオプションをすべてコメントアウトした状態の雛形を生成できます。
svelte-vitals は次のファイルを、この優先順で分析対象ディレクトリのみから探します(親ディレクトリへの上方探索は行いません — 分析対象ディレクトリは SvelteKit プロジェクトのルートであり、vite.config.* が置かれている場所と同じです):
svelte-vitals.config.mjssvelte-vitals.config.jssvelte-vitals.config.ts
最初に見つかったファイルが採用されます。どれも存在しない場合、この機能がなかった頃と同様、組み込みのデフォルト設定で実行されます。
install --client config-file は .ts と .mjs のどちらが良いか自動で判定します。現在の Node が .ts をネイティブに読み込め、プロジェクトが TypeScript 志向(プロジェクトルートに tsconfig.json または vite.config.ts がある)で、かつ svelte-vitals が依存関係として宣言されている(defineConfig の import は読み込み時に解決されるため、npx のみで使うプロジェクトには適用できません)場合に .ts(実際に型チェック・オートコンプリートが効く defineConfig を使用)を選びます — svelte-vitals をインストール済みの TypeScript の SvelteKit プロジェクトがこれに該当します。それ以外の場合は安全な .mjs — svelte-vitals がサポートするどの Node バージョンでも、依存関係なしにフラグなしで動く既定値 — にフォールバックします。--force で既存ファイルを再生成する場合は、拡張子を勝手に変えることなく、常にその既存ファイル自身の拡張子を維持します。
import { defineConfig } from 'svelte-vitals';
export default defineConfig({ treatDynamicAs: 'warn', metaComponents: ['Seo'], rules: { SEO008: 'off' }, failOn: 'warning', weights: { seo: 2 }});export default { treatDynamicAs: 'warn', metaComponents: ['Seo'], rules: { SEO008: 'off' }, failOn: 'warning', weights: { seo: 2 }};defineConfig は、渡したオブジェクトを組み込みのデフォルトにマージするだけの恒等関数(identity helper)です — .ts ファイルでの型チェックとエディタの補完のために存在します。プレーンな export default {...} オブジェクトでも実行時の挙動はまったく同じです。.mjs/.js ファイルではどちらにしても型チェックの恩恵はないので、(JavaScript タブが示すように)プレーンなオブジェクトのままで構いません — しかも import と違い、svelte-vitals を npx 経由でしか実行せず node_modules に存在しない場合でも動作します。
.ts 設定内の defineConfig の import はランタイムの import です — 型チェック時だけでなく、svelte-vitals がファイルを読み込む時に解決されます — そのため、プロジェクトの依存関係として svelte-vitals が宣言されている必要があります。import 元は svelte-vitals にしてください — 実際にインストールしているパッケージです。(@svelte-vitals/core からも re-export されていますが、このパッケージは通常は推移的な依存関係であり、pnpm のデフォルトである厳格な node_modules の構成では、プロジェクトから推移的な依存関係を直接解決できません。)
利用可能なオプション
Section titled “利用可能なオプション”| オプション | 型 | デフォルト | 説明 |
|---|---|---|---|
treatDynamicAs |
'pass' | 'warn' | 'fail' |
'pass' |
メタデータの値が動的に設定されているルートをどう採点するか |
metaComponents |
string[] |
[] |
<head> メタデータを出力するカスタムコンポーネント名 |
rules |
Record<string, 'off' | 'critical' | 'warning' | 'info'> |
{} |
ルールごとの上書き — ルールを無効化するか重大度を変更する |
failOn |
'critical' | 'warning' | 'info' |
'critical' |
実行を失敗させる(終了コード 1)最低重大度 |
weights |
Partial<Record<Category, number>> |
各カテゴリ 1 |
組み合わせた Health スコア のカテゴリごとの重み |
Category は 'seo' | 'performance' | 'correctness' | 'security' | 'architecture' です。
重み 0 は正当な値で、そのカテゴリを Health の平均から完全に除外します(カテゴリ自体のスコアは引き続き出力され、検出結果や終了コードの挙動にも影響しません)。ただし、結果に存在するすべてのカテゴリを 0 にすると平均の取りようがなくなるため、実行はエラー(終了コード 2)になります。
各フィールドについて、次のうち最初に設定されているものが優先されます:CLI フラグ > 設定ファイル > 組み込みのデフォルト。これはフィールド単位であり、全か無かではありません — 一度きりの --fail-on info を指定しても、設定ファイルの他の内容は破棄されません。
一つ例外があります。rules はキー単位でマージされるのではなく、全体が丸ごと置き換わります。コマンドラインで --rules または --ignore を指定した場合、フラグから構築されたルールセットがその実行では設定ファイルの rules を完全に置き換えます — マージはされません。
バリデーション
Section titled “バリデーション”- 無効で svelte-vitals が停止する(終了コード
2):ファイルを読み込めない(構文エラー、default export がない、または後述する Node のバージョンで.tsファイルを読み込めない場合)、rules内に未知のルール ID がある、weights内に未知のカテゴリまたは負の値・数値でない値がある場合。 - 無効だが無視され、警告が出る(分析は続行される):認識できない
treatDynamicAsまたはfailOnの値(フラグ/デフォルトにフォールバック)、認識できないトップレベルキー(将来の設定フィールドとの前方互換性のため)。
TypeScript の設定ファイル
Section titled “TypeScript の設定ファイル”svelte-vitals.config.ts は Node 22.18 以降または 23.6 以降であれば無フラグでそのまま動作します(このバージョンで Node のネイティブな TypeScript 型ストリッピングがフラグなしで使えるようになりました)。svelte-vitals のフロアは Node 22.13 なので、22.13〜22.17 では .ts 設定ファイルの読み込みが分かりやすいエラーで失敗します。次のいずれかを選んでください:
- Node 22.18 以降にアップグレードする(同じ 22 系の LTS のままで済みます)。
node --experimental-strip-typesを付けて再実行する。- ファイルを
.mjsまたは.jsにリネームする — プレーンな JavaScript はサポートされているすべての Node バージョンでフラグなしに動作します。
Vite プラグインで設定ファイルを再利用する
Section titled “Vite プラグインで設定ファイルを再利用する”@svelte-vitals/vite は CLI と同じ方法で svelte-vitals.config.* を読み込みます — 追加の配線は不要です。ビルド時のゲート(vite build)とライブダッシュボード(vite dev)のどちらも、プロジェクトルート(svelteVitals({ ... }) に渡す cwd、省略時は Vite の config root)からこのファイルを解決し、CLI と同じフィールド単位の優先順位を適用します: svelteVitals({ ... }) に明示的に渡したオプションが優先され、次に設定ファイルの値、最後に組み込みのデフォルトが使われます。これには weights も含まれており、CLI や MCP サーバーと同様にプラグインの Health スコアに反映されるようになりました。
import { sveltekit } from '@sveltejs/kit/vite';import { svelteVitals } from '@svelte-vitals/vite';
export default { plugins: [sveltekit(), svelteVitals({ report: 'console' })]};プロジェクトルートに svelte-vitals.config ファイル(サポートされる3つの拡張子のいずれか)を置くだけで、上記のプラグインはその treatDynamicAs / metaComponents / rules / failOn / weights を自動的に読み込みます — vite.config.ts 側で自分でファイルを import する必要はありません。設定ファイルの非致命的な警告(未知のトップレベルキー、無効な列挙値など)は、CLI と同じ svelte-vitals: というプレフィックス付きの文言でコンソールに出力されます。