このプロジェクトについて
nccはVercelが保守するコマンドラインツールで、Node.jsプログラムとその全依存関係を単一の出力ファイルにバンドルする。gccスタイルのコンパイルの精神に基づく。設計目標はゼロ設定で、エントリファイルを指定するだけでコンパクトなビルドを生成し、tsconfig.jsonが存在する場合はTypeScriptをネイティブに処理する。
主なコマンドは`build`(バンドルファイルを出力ディレクトリに生成、デフォルトは`dist/index.js`)、`run`(一時ディレクトリにビルドして実行し、テストやデバッグ用に完全なソースマップをサポート)、`cache`(ビルドキャッシュのクリーン、検査、サイズ確認)である。オプションは一般的なバンドルニーズをカバーする:`--minify`、`--source-map`、`--external`(特定モジュールのバンドルをスキップ)、`--watch`(増分リビルド)、`--target`(ECMAScript出力レベル設定)、`--v8-cache`(V8コンパイルキャッシュ出力)、`--license`(ライセンス情報添付)、`--stats-out`(webpack統計をJSONで出力)、`--asset-builds`(ワーカースクリプトなどのネストされたJSアセットを再帰的にバンドル)。モジュール形式は入力から推測され、`.mjs`入力や`"type": "module"`パッケージ境界内のファイルはESモジュール出力を生成し、`.cjs`入力はCommonJS拡張子を維持する。
CLIに加えて、nccはNode.jsからプログラムAPIを公開する。`require('@vercel/ncc')`を入力パスとオプションオブジェクトで呼び出すと、`{ code, map, assets }`に解決するプロミスを返す。assetsはファイル名からソース、パーミッション、シンボリックリンクメタデータへのマップである。オプションはCLIフラグを反映し、カスタムキャッシュパス、外部化、最小化、ソースマップ、ウォッチモード、ライセンス生成、ターゲット選択を含む。ウォッチモードでは、返されるオブジェクトはプロミスの代わりに`handler`、`rebuild`、`close`コールバックを公開する。
プロジェクトの動機は、最小限のnpmパッケージ公開、サーバーレス環境への関連コードのみの出荷、バンドラー設定のオーバーヘッド回避、起動時間とI/Oの改善である。入力と出力の両方でNode.jsプログラムを対象とし、すべてのNode.jsパターンとnpmモジュールをサポートすることを目指す。文書化された注意点として、ファイルとアセットの再配置は静的評価器に依存するため、静的に分析できない動的ロードアセットは正しく再配置されない可能性がある。一部のパッケージは完全な互換性のために追加オプションが必要で、リポジトリのパッケージサポートドキュメントにカタログ化されている。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.