Получите unminified JS от конвейера активов рельсов - PullRequest
0 голосов
/ 14 февраля 2020

Как я могу запустить конвейер ресурсов rails из терминала, чтобы получить неминифицированный javascript выход?

Мне удалось запустить RAILS_ENV=development bundle exec rake assets:precompile, но, похоже, сгенерированы пакеты, и что я Я просто хочу, чтобы весь coffeescript был перенесен в javascript, но не минимизирован и не упакован. Нам просто нужно удалить coffeescript из нашей кодовой базы.

Я также попробовал decaffeinate модуля npm, но он генерирует разные результаты из конвейера ресурсов rails и ломает все наши тесты.

1 Ответ

0 голосов
/ 20 февраля 2020

Кто-то направил меня к этой статье: http://scottwb.com/blog/2012/06/30/compile-a-single-coffeescript-file-from-your-rails-project/, и я обновил ее, чтобы дать мне возможность рекурсивно запускаться в каталоге или один раз в одном файле. Я добавил это к lib/tasks/, и это сработало как шарм. Я добавил тест для директив в стиле звездочек, которые начинаются с #= require, потому что компилятор CoffeeScript удаляет все комментарии, что приводит к поломке всего. Вместо этого я вручную преобразовал все пропущенные файлы в 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
...