Pau*_*aul 14 ruby-on-rails asset-pipeline
我可以运行rake assets:precompile
特定的JavaScript文件吗?
否则,完整的预编译将持续5分钟,并且快速更改JavaScript文件非常烦人.
Dav*_*row 13
如果您只想预编译一个文件,则可以使自定义rake任务相当容易.
namespace :assets do
desc "compile one js file"
task :compile_one_file => :environment do
dest = "#{Rails.root}/vendor/assets/javascripts/compiled/"
js_asset = "your_jsfile.js"
File.write(dest + js_asset, Uglifier.compile(Rails.application.assets.find_asset(js_asset).to_s))
end
end
Run Code Online (Sandbox Code Playgroud)
然后从命令行
rake assets:compile_one_file
Run Code Online (Sandbox Code Playgroud)
希望这有帮助,我发现这对我不经常更改的供应商js文件很有用,例如jquery和jquery插件.这样,当我开发时,它加快了我的页面加载,使资产管道不必为我的供应商文件路由所有单独的请求.它只提供我所有供应商js的一个缩小的js文件.
简短:你做不到.
在预编译期间,Rails会遍历Application.js文件并将所有导入合并为一个,因此只是更改一个文件是不可能的,因为在那里进行了压缩.(它对未从application.js引用的文件没有任何作用)
接下来:您不应该运行rake资产:在进行快速修复时在开发期间进行预编译.只有部署在哪里(取决于你的耐心),任务运行5分钟应该没问题.
您应该在开发期间使用开发环境,其中不需要资产预编译,因为Rails将为未绑定和未缩小的资产提供服务.如果您在Web服务器中运行Rails构建,则rails s
默认情况下应该是这样,但您可以使用以下命令显式启动rails服务器:
rails s RAILS_ENV=development
如果资产仍未正确显示,或者您发现错误,请确保您有 config.assets.debug = true
@Tigraine部分正确.Rails 3.1+资产旨在由Rails完全管理,默认情况下,所有资产将被编译为一个js和一个css资产.
然而...
编译为单个资产依赖于使用由Sprockets gem处理的资产清单(application.js和application.css).默认情况下,这些清单包括require_tree指令,它是包含所有文件的指令.如果删除该指令,则需要做更多的工作来编译资产.
如果要构建单独的资产,可以在application.rb中设置配置选项.
config.assets.precompile += %w( additional/asset.css funky/stuff.js )
Run Code Online (Sandbox Code Playgroud)
上面的行会将文件additional/asset.css和funky/stuff.js添加到资源预编译时生成的文件列表中(请注意,'+ ='用于扩展默认列表).为了尽可能明确,这意味着您将预编译四个资产:application.js,funky/stuff.js,application.css和additional/asset.css.
也就是说,你可能想看看guard-rails-assets gem.宝石在支持预编译方面具有灵活性; 只能预编译已更改的资产.我听说过一些很好的反馈,但我自己没有用过.
归档时间: |
|
查看次数: |
11385 次 |
最近记录: |