我想把一些文件放在bower_components
文件夹下。在我的网站中,bower_components
文件夹树如下:
├── bower_components
│ └── angular
│ ├── README.md
│ ├── angular-csp.css
│ ├── angular.js
│ ├── angular.min.js
│ ├── angular.min.js.gzip
│ ├── angular.min.js.map
│ └── bower.json
我只想将angular.min.js
文件复制到output/bower_components/angular/angular.min.js
文件夹。
为此,我修改了规则文件,如下所示:
compile "/bower_components/*.min.js" do
#item.identifier.chop + '.' + item[:extension]
end
route "/bower_components/*.min.js" do
item.identifier.chop + '.' + item[:extension]
end
编译网站时,出现以下错误:
RuntimeError: Found 4 content files for content/bower_components/angular/angular; expected 0 or 1
Compilation stack:
(empty)
Stack trace:
0. /Users/neva/.rvm/gems/ruby-1.9.3-p448@global/gems/nanoc-3.6.7/lib/nanoc/data_sources/filesystem.rb:164:in `block in all_split_files_in'
1. /Users/neva/.rvm/gems/ruby-1.9.3-p448@global/gems/nanoc-3.6.7/lib/nanoc/data_sources/filesystem.rb:154:in `each_pair'
2. /Users/neva/.rvm/gems/ruby-1.9.3-p448@global/gems/nanoc-3.6.7/lib/nanoc/data_sources/filesystem.rb:154:in `all_split_files_in'
3. /Users/neva/.rvm/gems/ruby-1.9.3-p448@global/gems/nanoc-3.6.7/lib/nanoc/data_sources/filesystem.rb:78:in `load_objects'
4. /Users/neva/.rvm/gems/ruby-1.9.3-p448@global/gems/nanoc-3.6.7/lib/nanoc/data_sources/filesystem.rb:37:in `items'
5. /Users/neva/.rvm/gems/ruby-1.9.3-p448@global/gems/nanoc-3.6.7/lib/nanoc/base/source_data/site.rb:325:in `block in load_items'
6. /Users/neva/.rvm/gems/ruby-1.9.3-p448@global/gems/nanoc-3.6.7/lib/nanoc/base/source_data/site.rb:324:in `each'
7. /Users/neva/.rvm/gems/ruby-1.9.3-p448@global/gems/nanoc-3.6.7/lib/nanoc/base/source_data/site.rb:324:in `load_items'
8. /Users/neva/.rvm/gems/ruby-1.9.3-p448@global/gems/nanoc-3.6.7/lib/nanoc/base/source_data/site.rb:243:in `load'
9. /Users/neva/.rvm/gems/ruby-1.9.3-p448@global/gems/nanoc-3.6.7/lib/nanoc/base/source_data/site.rb:127:in `layouts'
... 27 more lines omitted. See full crash log for details.
问题是什么?
你有什么想法吗?
答案 0 :(得分:1)
由于将输入文件名映射到输出路径的方式,Nanoc要求content
下每个文件的基本名称(即文件名少扩展名)是唯一的。从Nanoc的角度来看,您将为它提供四个共享基本名称angular
的文件,因此不能具有唯一的输出路径,因此它会为您提供此错误。
由于你真正想要的是逐字地在你网站的这一部分上复制Nanoc,你应该设置一个静态数据源来加载它。然后,Nanoc将直接复制文件,而不尝试处理或重命名它们。 Nanoc网站上的"Troubleshooting"页面有关于如何执行此操作的说明;请参阅"Error: “Found 3 content files for X; expected 0 or 1”下的“解决方案#2”。