$ 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}}]})
編譯後,您可以接著在 Chrome 中開啟一個連結到生成的 js 檔案的 HTML 檔案。請確保已透過Chrome 開發人員工具設定啟用 Chrome 中的原始碼對應。
原始碼對應也適用於將 :optimizations
設定為 :none
的情況。在這種情況下,:source-map
的值不會控制檔案名稱。只要該值為真值(參見上面的 leiningen 範例),就會為每個 ClojureScript 原始碼檔案產生一個單獨的原始碼對應檔案。
重要的是要注意,當使用 :optimizations
設定為非 :none
的其他值時,存在一些原始碼對應選項的限制。在這些情況下,:output-to
、:output-dir
和 :source-map
必須都共享完全相同的父目錄。產生的 JavaScript 檔案 (:output-to
) 將在末尾包含一行,將其連結到其原始碼對應,如下所示
//# sourceMapping=<sourceMapURL>
sourceMapURL
是 :source-map
路徑,相對於 :output-to
,因為這是瀏覽器之後將如何解析它的方式。例如,當給定
{: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
。