1

我正在使用 nanoc 生成一个静态站点。

最近我添加了Bower来管理前端依赖项。

当我通过 Bower 添加 Bootstrap 时,我将包放入/assets/bower/

Bootstrap 包包含多个文件,包括:

bootstrap/js/tests/vendor/qunit.css
bootstrap/js/tests/vendor/qunit.js

我的Rules文件有这些规则:

route '/assets/*' do
  extension = item[:extension]
  if extension == 'coffee'
    extension = 'js'
  end
  item.identifier.chop + '.' + extension
end

compile '*', :rep => :spec do
  if !item[:spec_files].nil? && !item.binary?
    filter :erb
    layout 'spec'
  end
end

route '*', :rep => :spec do
  if !item[:spec_files].nil? && !item.binary?
     '/specs' + @item.identifier[0..-2] + '.html'
  end
end

compile '*' do
  if !item.binary?
    filter :erb
    layout_name = item[:layout] || 'default'
    layout layout_name
  end
end

route '*' do
  if item.binary?
     item.identifier.chop + '.' + item[:extension]
  else
     item.identifier[0..-2] + '.html'
  end
end

运行时nanoc出现以下错误:

 RuntimeError: Found 2 content files for
 content/assets/bower/bootstrap/js/tests/vendor/qunit; expected 0 or 1

我尝试为 /assets/bower/ 文件夹添加 2 个新的“空”规则,但仍然出现错误。

route '/assets/bower/*' do
end

compile '/assets/bower/*' do      
end

有什么建议么?

后期编辑:

看起来 nanoc 支持一个静态数据源,它也考虑了文件扩展名。

https://github.com/nanoc/nanoc-site/blob/master/content/docs/troubleshooting.md

仍然不确定我是否可以并行使用两个数据源。

4

1 回答 1

1

不幸的是,在最后一个扩展名之前,您不能在同一个目录中拥有两个同名的文件。对于 nanoc 4.0,它将被重写以改变它。

您绝对可以一次使用多个数据源,但这意味着您不能对qunit文件应用过滤器,只能重定向输出。

您是否明确必须能够像 Bower 安装文件一样组织文件?将它们拆分为更好的主意scriptsstyles如果可以的话,无论如何 - 你几乎肯定会根据文件类型进行过滤,无论如何,这意味着在规则中你可以去

compile '/whatever-path/scripts/' do
    filter :concatenate
    filter :uglify_js
end

而不是

compile '/whatever-path/ do
  case item[:extension]
  when 'js'
    filter :uglify_js
  when 'scss'
    filter :sass
  end
end
于 2013-04-26T17:33:44.727 回答