このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します
バージョン履歴
- "ドキュメント初期化"v9.0.02026/6/25
このページのコンテンツはAIを使用して翻訳されました。
英語の元のコンテンツの最新バージョンを見るIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
intlayerMinify
intlayerMinifyは、本番ビルド(production build)時にコンパイルされた辞書JSONファイルを圧縮するViteプラグインです。不要な空白をすべて取り除き、intlayerPruneと組み合わせることで、コンテンツフィールド名を短いアルファベットのエイリアス(a、b、c、…)にオプションで変更し、バンドルサイズをさらに削減します。
intlayer()を使用する場合、このプラグインはすでに自動的に含まれ、設定されています。プラグインのスタックをご自身で構成する場合にのみ、手動で登録する必要があります。
使用方法
コードをクリップボードにコピー
// vite.config.tsimport { defineConfig } from "vite";import { intlayerMinify, intlayerPrune } from "vite-intlayer";import { createPruneContext } from "@intlayer/babel";const pruneContext = createPruneContext();export default defineConfig({ plugins: [ intlayerPrune(intlayerConfig, pruneContext), intlayerMinify(intlayerConfig, pruneContext), ],});有効化の条件
intlayerMinifyは、以下の3つの条件がすべて満たされている場合にのみ有効になります:
- Viteコマンドが
buildである(serve/ devではない)。 build.optimizeがtrueである(またはundefinedであり、ビルド時のデフォルトであるtrueになる)。- Intlayer設定で
build.minifyがtrueである。
エディタは完全で人間が読める辞書コンテンツを必要とするため、editor.enabledがtrueの場合、プラグインは自動的に無効になります。
圧縮される対象
プラグインは、2つの辞書の場所(intlayer.systemから解決される場所)をターゲットにします:
dictionariesDir— 静的な全言語共通の辞書(例:.intlayer/dictionaries/*.json)dynamicDictionariesDir— 言語ごとの動的な辞書
フェッチモード辞書(fetchDictionariesDir)は、実行時に元のフィールド名を使用してリモートAPIから提供されるため、決して圧縮されません。フィールド名を変更すると、サーバーの応答とクライアント側のプロパティアクセスとの間に不一致が生じるためです。
フィールド名の難読化(プロパティの圧縮)
intlayerPruneがコードベースを分析し、pruneContext.dictionaryKeyToFieldRenameMapにデータを入力すると、intlayerMinifyはコンテンツフィールド名を短いエイリアスに変更します。例えば:
コードをクリップボードにコピー
// 変更前{ "key": "myDict", "content": { "title": "Hello", "description": "World" } }// 変更後(難読化あり){ "key": "myDict", "content": { "a": "Hello", "b": "World" } }対応するソースファイルのプロパティアクセスは、intlayerOptimize内のBabelパスによって変更されるため、実行時の動作は変わりません。
Intlayerの内部フィールド(nodeType、translationなど)の名前が変更されることはありません。
エッジケースの辞書
pruneContext.dictionariesWithEdgeCasesでフラグが立てられた辞書(クリーンアップ(prune)フェーズで検出された構造的な異常)は、破損したデータを配信するのを防ぐために完全にスキップされ、圧縮も難読化もされません。
修飾子グループ(コレクション / バリアント / メタレコード)
qualifierTypes配列を持つ辞書(コレクション、バリアント、メタレコード)について、プラグインはqualifierTypes配列とmetaサイドマップをそのまま保持します。contentエントリのフィールド名のみが難読化されます。実行時のセレクターマッチングに使用される複合キーが変更されることはありません。