【问题标题】:Source maps in Ruby on Rails through sprockets通过 sprockets 在 Ruby on Rails 中的源映射
【发布时间】:2014-09-27 02:51:06
【问题描述】:

我想在我正在开发的 Rails 3.2 应用程序上添加源映射支持。据我所知,Sprockets 不支持生成源地图,从它的 github 页面看来,该功能计划用于 4.0。我正在使用 Sprockets 2.2,我认为猴子修补是唯一的方法。主 Sprockets 模块下的模块 Processing 允许访问 js_compressor 函数,该函数可以被修补以生成单个文件的源映射。但是,当 JS 文件合并时,我不知道如何添加它。我使用 Uglifier 2.4 作为压缩器。

该项目混合了 CoffeeScript、JS 和 EJS 文件。所以,我认为这就是链轮将它们编译在一起的方式。首先,它将 Coffeescript 和 EJS 转换为 JS,然后使用 js_compressor 压缩单个文件,然后将它们组合成组。现在,由于多个文件的源映射组合到同一个文件是一个文件。因此,一旦连接完成,我将需要稍微更改编译过程并让 js_compressor 运行文件。那么,任何人都可以帮助解决这个问题吗?甚至解释 sprockets 的编译过程以及使用的模块和涉及的功能都会有很大的帮助。目前我不关心为 CoffeeScript 代码制作源映射文件。甚至映射到他们转换后的 JS 文件也可以。

另外,如果有一些可以帮助解决这个问题的宝石,我想补充一下。

【问题讨论】:

  • 这是一个可以提供帮助的宝石:github.com/markbates/coffee-rails-source-maps
  • 我很久以前就看过这个 gem,从那时起我就为我的需要编写了一个自定义解决方案。当时那个 gem 的问题是它不适用于缩小的资产,这就是代码在生产中的方式,从 github repo 看来它似乎一年没有更新了。
  • 太好了,然后用猴子补丁链接添加你的答案。
  • 是的。现在已经计划这样做很长时间了。它可以工作,但此时它处于非常丑陋的状态。将对其进行重构并在此处发布。
  • 我认识的人正在这样做,他们根本不使用资产管道,而是使用 grunt.js 或其他方式进行自制设置。我想要这个已经有一段时间了,但最终从来没有愿意潜入家庭资产管道的东西。祝你好运!

标签: ruby-on-rails sprockets source-maps


【解决方案1】:

Rails 4 也没有源地图。

据我所知,截至今天,这只是 rails 5 的一部分。

@SamSaffron 在话语中实现了一个非常好的方法来解决这个问题,并在此处解释: https://github.com/discourse/discourse/blob/master/lib/tasks/assets.rake

要点,在 sprockets 预编译过程中添加“之前”任务,并侵入编译过程以生成源映射文件和指令。

这种方法的好处是您不会丢失既是 js 又是 erb (*.js.erb) 的文件中的内容,这在 rails 中很常见。

我认为修补整个 sprockets 管道有点滥用和冒险。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    • 2013-05-30
    相关资源
    最近更新 更多