$ cljsc src '{:optimizations :whitespace :output-dir "out" :output-to "main.js" :source-map "main.js.map"}'
ClojureScriptは現在、HTMLソースマップをサポートしているため、:source-map構成オプションを使用して、ブラウザで直接ClojureScriptをデバッグできます。
:source-mapには、ブール値を指定するか、最適化が有効になっている場合は、マップのファイルへのパスを指定できます。
ここに記載されているbin/cljscスクリプトを使用すると、プロジェクトに合わせて調整した次のコマンドラインで実行できます。
$ cljsc src '{:optimizations :whitespace :output-dir "out" :output-to "main.js" :source-map "main.js.map"}'
Leiningenを使用してビルドしている場合、project.cljの同様のセクションは次のようになります。
:cljsbuild {
:builds [{:id "main"
:source-paths ["src"]
:compiler {
:output-to "main.js"
:output-dir "out"
:optimizations :none
:source-map true}}]})
コンパイル後、生成されたjsファイルにリンクするHTMLファイルを開きます。Chromeでソースマップが有効になっていることを確認してください。Chromeデベロッパーツール設定。
ソースマップは、:optimizationsが:noneに設定されている場合にも機能します。この場合、:source-map値はファイル名を制御しません。値が真偽値であれば(上記のLeiningenの例を参照)、ClojureScriptソースファイルごとに個々のソースマップファイルが生成されます。
:optimizations設定が:none以外の場合、ソースマップオプションにいくつかの制限があることに注意することが重要です。これらの場合、:output-to、:output-dir、および:source-mapはすべて、まったく同じ親ディレクトリを共有する必要があります。生成されたJavaScriptファイル(:output-to)には、ソースマップへのリンクが最後に追加されます。
//# sourceMapping=<sourceMapURL>
sourceMapURLは、ブラウザが解決する方法であるため、:output-toを基準とした:source-mapパスです。たとえば、次のように指定した場合
{:output-to "resources/public/js/compiled/main.js"
:output-dir "resources/public/js/compiled"
:optimizations :simple
:source-map "resources/public/js/compiled/main.js.map"}
結果のsourceMapURLはmain.js.mapになります。