繁体   English   中英

Rails资产管道生产预编译

[英]rails asset pipeline production precompile

我有一个目录projName/vendor/assets/bootstrap/css/我处于生产模式。 production.rb包含:config.assets.precompile << /(^[^_\\/]|\\/[^_])[^\\/]*$/当我运行rake资产时:precompile我得到projName/public/assets/css/但我想要projName/public/assets/bootstrap/css/我不明白为什么引导目录不存在。 实际上, public assets/中缺少供应商/资产和应用/资产下的所有顶级目录。

编译后的资产将写入config.assets.prefix指定的位置。 默认情况下,这是public/assets目录。

要了解这一点,您必须首先了解什么是预编译和做什么。 让我解释

运行时(耙任务)

rake assets:precompile

它会创建一个public应用程序文件夹内的文件夹,这将编译你的所有资产清单(即你的application.cssapplication.js

这到底是怎么发生的? -> Rails捆绑了一个rake任务,它将编译所有这些。 上面显示的是该耙任务。

编译后的资产将写入config.assets.prefix指定的位置。 默认情况下,这是public/assets目录。

用于编译文件的默认匹配器包括application / assets文件夹(包括您的gems)中的application.js,application.css和所有非JS / CSS文件(这将自动包括所有图像资产)。

这正是regex的含义(将所有内容包括在app / assets文件夹中),您也可以显式提供它,如上面的答案所示。

希望这会有所帮助。

这里有一些链接供您参考

http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets

http://dennisreimann.de/blog/precompiling-rails-assets-for-development/

正则表达式是什么意思? 如果要预编译所有内容,请尝试此操作。

config.assets.precompile = ['*.js', '*.css']

实际上,如果您想预编译所有内容,请尝试以下操作:

def precompile?(path)
  %w(app lib vendor).each do |asset_root|
    assets_path = Rails.root.join(asset_root, 'assets').to_path
    return true if path.starts_with?(assets_path)
  end
  false
end

# Precompile all assets under app/assets (unless they start with _)
Rails.application.config.assets.precompile << proc do |name, path|
  starts_with_underscore = name.split('/').last.starts_with?('_')
  unless starts_with_underscore
    path = Rails.application.assets.resolve(name).to_path unless path # Rails 4 passes path; Rails 3 doesn't
    precompile?(path)
  end
end

(基于Rails Guide中代码 。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM