从 rails 资产管道中获取未缩小的 JS
Get unminified JS from rails assets pipeline
如何运行 来自终端的 rails 资产管道得到未缩小的 javascript 输出?
我能够 运行 RAILS_ENV=development bundle exec rake assets:precompile
,但这似乎已经生成了包,而我正在寻找的只是将所有 coffeescript 转换为 javascript,但是没有缩小也没有捆绑。我们只需要从我们的代码库中删除 coffeescript。
我也尝试过 npm 模块 decaffeinate,但这会从 rails 资产管道生成不同的结果,并破坏我们所有的测试。
有人引导我阅读这篇文章:
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
如何运行 来自终端的 rails 资产管道得到未缩小的 javascript 输出?
我能够 运行 RAILS_ENV=development bundle exec rake assets:precompile
,但这似乎已经生成了包,而我正在寻找的只是将所有 coffeescript 转换为 javascript,但是没有缩小也没有捆绑。我们只需要从我们的代码库中删除 coffeescript。
我也尝试过 npm 模块 decaffeinate,但这会从 rails 资产管道生成不同的结果,并破坏我们所有的测试。
有人引导我阅读这篇文章:
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