【问题标题】:Get unminified JS from rails assets pipeline从 Rails 资产管道中获取未缩小的 JS
【发布时间】:2020-05-30 13:03:49
【问题描述】:

如何从终端运行 rails assets 管道以获取未缩小的 javascript?

我能够运行RAILS_ENV=development bundle exec rake assets:precompile,但这似乎已经生成了捆绑包,而我正在寻找的只是将所有咖啡脚本转译为 javascript,而不是缩小和捆绑。我们只需要从我们的代码库中删除 coffeescript。

我也尝试过 npm 模块 decaffeinate,但这会从 rails 资产管道产生不同的结果,并破坏我们所有的测试。

【问题讨论】:

标签: ruby-on-rails asset-pipeline sprockets


【解决方案1】:

有人把我引到这篇文章: http://scottwb.com/blog/2012/06/30/compile-a-single-coffeescript-file-from-your-rails-project/ 我更新了它,让我可以选择在目录上递归运行,或者在单个文件上运行一次。我将此添加到lib/tasks/,它就像一个魅力。我添加了一个以#= require 开头的链轮式指令的测试,因为CoffeeScript 编译器会删除所有cmets,这会导致一切中断。相反,我手动将所有跳过的文件转换为 JS,并将指令包含为//= require,这样就可以了。

namespace :coffee do

  def do_one(filepath)
    File.write(filepath.chomp(".coffee"), CoffeeScript.compile(File.open(filepath)))
    File.rename(filepath, filepath.chomp(".js.coffee") + ".backup")
  end

  def cs_task(path)
    Dir.glob("#{path.chomp("/")}/*.js.coffee").each do |filename|
      file = File.open(filename)

      if (file.read[/\= require/])
        puts "skip #{filename}"
      else
        puts "process #{filename}"
        do_one(filename)
      end
    end
    Dir.glob("#{path.chomp("/")}/*/").each do |child_path|
      cs_task(child_path)
    end
  end

  task :cancel, :path do |t, args|
    cs_task(args.path)
  end

  task :show, :path do |t, args|
    puts CoffeeScript.compile(File.open(args.path))
  end

  task :one_off, :path do |t, args|
    do_one(args.path)
  end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多