Closure ツールには、必要なものを正確に生成する calcdeps.py という python スクリプトがあります。
goog.provide/goog.require の使用を開始する:
必要な名前空間に一致するように、ファイルをディレクトリ構造に編成します。つまり、名前空間「grantys.awesome.lib.Math」を宣言する場合、ディレクトリ構造は grantys/awesome/lib/Math.js のようになります。
依存関係として追加する各ファイルでは、最初の JavaScript 関数呼び出しは goog.provide('grantys.awesome.lib.Math') にする必要があります。別のファイルに依存するには、 goog.require('grantys.awesome.lib.Constants') で要件を宣言します。*これは重要です。goog.provide は、calcdeps.py が各ファイルが提供できるものを把握するために使用するものです。コンパイルされていない場合、提供している名前空間がそのファイルで構築しているものであるという保証はまったくありません。
適切な引数 ( goog.provide('some.library') を含むか含まないファイルを検索するためのパス、書き込むファイル名など) を指定して calcdeps.py を実行します。これにより、手動で記述した goog.addDependency ステートメントを含むファイルが生成されます。また、calcdeps が生成する deps ファイルは、出力ファイルを書き込んでいるディレクトリから見た相対パスを使用することに注意してください (常にコマンドを実行するディレクトリとは限りません)。
calcdeps.py の出力例:
goog.addDependency("../site/ui/MurphyBed.js", ['site.ui.MurphyBed', 'site.ui.MurphyBed.State', 'site.ui.MurphyBed.EventType', 'site.ui.MurphyBed.Error'], ['goog.dom', 'goog.object', 'goog.events', 'goog.events.EventTarget', 'site.fx.easing', 'goog.fx.dom', 'goog.fx.AnimationSerialQueue']);
goog.addDependency("../site/ui/SliderButton.js", ['site.ui.SliderButton'], ['goog.ui.CustomButton', 'site.ui.SliderButtonRenderer', 'goog.fx.dom', 'site.fx.easing']);
注: 依存関係を変更した場合は、calcdeps.py を再実行する必要があります。私自身の解決策は、正しい引数を使用してシェルスクリプトでラップすることでした。そのため、ファイルの再スキャンが必要な変更を行うときは、./calcdeps.sh を実行するだけです。