我想在我正在开发的 Rails 3.2 应用程序上添加源映射支持。据我所知,Sprockets 不支持生成源地图,从其 github 页面来看,该功能似乎计划在 4.0 中使用。我正在使用 Sprockets 2.2,我认为猴子修补是唯一的方法。主链轮模块下的处理模块可以访问 js_compressor 函数,可以修补该函数以生成单个文件的源映射。但是,我不知道当 JS 文件合并时如何添加它。我使用 Uglifier 2.4 作为压缩器。
该项目混合了 CoffeeScript、JS 和 EJS 文件。所以,我认为这就是链轮将它们编译在一起的方式。首先,它将 Coffeescript 和 EJS 转换为 JS,然后使用 js_compressor 压缩单个文件,然后将它们分组连接。现在,由于组合到同一文件的多个文件的源映射是一个文件。因此,一旦连接完成,我将需要稍微更改编译过程并让 js_compressor 运行文件。那么,有人可以帮忙解决这个问题吗?即使解释一下 sprocket 的编译过程以及使用的模块和涉及的功能也会有很大的帮助。我目前不关心为 CoffeeScript 代码制作源映射文件。甚至映射到转换后的 JS 文件也可以。
另外,想补充一下,如果有一些宝石可以帮助解决这个问题,那将是非常受欢迎的。
Rails 4 也没有源映射。
据我所知,截至今天,这只是 Rails 5 的一部分。
现在解决这个问题的一个非常好的方法是由 @SamSaffron 在 discourse 中实现的,并在这里进行了解释:https://github.com/discourse/discourse/blob/master/lib/tasks/assets.rake https://github.com/discourse/discourse/blob/master/lib/tasks/assets.rake
要点是,在链轮预编译过程中添加一个“之前”任务,并侵入编译过程以生成源映射文件和指令。
这种方法的好处是,您不会丢失 js 和 erb (*.js.erb) 文件中的内容,这在 Rails 中很常见。
我认为修补整个链轮管道有点滥用且有风险。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)