$ 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 源文件生成一个单独的源代码映射文件。
需要注意的是,在使用除 :none
之外的 :optimizations
设置时,有一些源代码映射选项限制。在这些情况下,: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
。