我正在使用rails / sprockets来管理我的资产管道和bower来管理我的资产。
当我运行以下代码来预编译我的资产时,vendor / assets / bower_components中的所有资产都会缩小。
RAILS_ENV=production rake assets:precompile
是否可以仅缩小和连接application.js和application.css文件中指定的文件以及图片和字体?
在application.rb中,我有以下几行:
config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif *.ico)
config.assets.paths << Rails.root.join('vendor', 'assets', 'bower_components', 'bootstrap-sass-official', 'assets', 'fonts')
config.assets.precompile << %r(.*.(?:eot|svg|ttf|woff)$)
config.assets.precompile = ['*.js', '*.css', '*.css.erb']
最大的问题是sprockets试图预编译所有资产,包括我不使用的bootstrap-sass-official,这样做会出现以下错误:
Sass::SyntaxError: Undefined variable: "$alert-padding".
(/vendor/assets/bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_alerts.scss:10)
我甚至没有更改_alerts.scss文件。
答案 0 :(得分:0)
config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif *.ico)
config.assets.paths << Rails.root.join('vendor', 'assets', 'bower_components', 'bootstrap-sass-official', 'assets', 'fonts')
config.assets.precompile << %r(.*.(?:eot|svg|ttf|woff)$)
config.assets.precompile = ['*.js', '*.css', '*.css.erb']
最后一行覆盖前两行,将图像资源添加到预编译列表,而是编译包含bootstrap gem中的每个javascript和css文件。
您需要通过显式添加需要预编译的文件来限制该列表。另外,请将其设为+=
而不是=
。