新手问题 如何在 Asset Pipeline 中引入第三方 font 资源

lilijreey · 2016年12月08日 · 最后由 bianjp 回复于 2016年12月09日 · 2963 次阅读

我用 bower 安装的 bootstrap 上线后发现 bootstrap 的 icon 由于找不到资源文件无法显示 我在 application.scss 中引入了 bootstrap *= require bootstrap/dist/css/bootstrap.css 但是字体并没有打包到 pipeline 中,请问如何添加字体资源到 aseet 中

同问,对于非标准的,我要么改源码,要么把依赖的图片和 fonts 复制到 public 下面

#2 楼 @flowerwrong 感谢,改源码路径根蛋疼,我用 gem 版的 bootstrap 了

粗暴的话

FONT_TYPES = %w(*.eot *.woff *.woff2 *.ttf *.otf *.svg)
Rails.application.config.assets.precompile += FONT_TYPES

也接受 Proc 的,所以可以搞类似

ASSETS_TYPES = %w(.png .gif .jpg .eot .woff .woff2 .ttf .otf .svg)
config.assets.precompile << Proc.new { |path| !(path =~ /\/docs\//) && File.extname(path).in?(ASSETS_TYPES) }

但是这样粗暴的话,就会引入很多没用的文件进来,比较好的方法还是首选 gem 形态的 assets

#2 楼 @flowerwrong 如果可以复制进 app 或者是在项目目录范围的话 config.assets.paths << Rails.root.join('vendor', 'assets', 'fonts') 就可以享受到 assets pipeline 了

这块的技巧你直接建立新的 rails 5 工程,看一下 config/initializers/assets.rb 里面都有注释提示的

我最近也试了一下 bower-rails 但是很多项目文件结构太乱,导致总会让 assets pipeline 多编译很多没用的东西。。。

#6 楼 @jasl 这样也得改 css 源代码才行,就像 bower rails 的做法一样。应该可以弄个工具自动生成一个 gem,不知 rails-assets 是不是这么干的。

#7 楼 @flowerwrong 哦对,我想起来了...过去我也弄过这事... 另外 rails-assets bower-rails 之类,对于结构太奇葩的项目,都有问题,我最近本来在尝试这样管理 assets,后来还是退回老的方式了

#9 楼 @jasl 感谢,只是导入资源还不行,因为源码中写的路径和 asset 编译后生成的路径不一样!这个就比较恶心了。所以没办法,用回 gem 了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号