我在lib / assets文件夹中有这些文件(sketchyPad是用于在html5画布上绘制的jQuery插件,而farbastic是sketchyPad使用的颜色选择器):
lib/
|-- assets
| |-- javascripts
| | `-- lib.js
| `-- sketchyPad
| |-- README.md
| |-- brushes
| | |-- simple.js
| | `-- smooth.js
| |-- example
| | |-- index.html
| | |-- jquery-ui-1.8.16.custom
| | | |-- css
| | | | `-- ui-lightness
| | | | |-- images
| | | | | |-- ui-bg_diagonals-thick_18_b81900_40x40.png
| | | | | |-- ui-bg_diagonals-thick_20_666666_40x40.png
| | | | | |-- ui-bg_flat_10_000000_40x100.png
| | | | | |-- ui-bg_glass_100_f6f6f6_1x400.png
| | | | | |-- ui-bg_glass_100_fdf5ce_1x400.png
| | | | | |-- ui-bg_glass_65_ffffff_1x400.png
| | | | | |-- ui-bg_gloss-wave_35_f6a828_500x100.png
| | | | | |-- ui-bg_highlight-soft_100_eeeeee_1x100.png
| | | | | |-- ui-bg_highlight-soft_75_ffe45c_1x100.png
| | | | | |-- ui-icons_222222_256x240.png
| | | | | |-- ui-icons_228ef1_256x240.png
| | | | | |-- ui-icons_ef8c08_256x240.png
| | | | | |-- ui-icons_ffd27a_256x240.png
| | | | | `-- ui-icons_ffffff_256x240.png
| | | | `-- jquery-ui-1.8.16.custom.css
| | | `-- js
| | | `-- jquery-ui-1.8.16.custom.min.js
| | |-- jquery.min.js
| | `-- mattfarina-farbtastic-4bb6bbf
| | |-- CHANGELOG.html
| | |-- LICENSE.txt
| | |-- README.html
| | |-- README.md
| | |-- demo1.html
| | |-- demo2.html
| | |-- farbtastic.css
| | |-- farbtastic.js
| | |-- farbtastic.min.js
| | |-- marker.png
| | |-- mask.png
| | `-- wheel.png
| |-- sketchyPad.css
| `-- sketchyPad.js
所以我想包括sketchyPad.js,sketchyPad.css以及templates文件夹中的所有j以及farbtastic.min js文件。
在app / assets / javascripts / application.js中我把:
//= require sketchyPad (this part works fine and correctly includes sketchyPad.js)
但我也希望包括
lib/assets/sketchyPad/brushes/simple.js
lib/assets/sketchyPad/brushes/smooth.js
和brush文件夹中的任何其他js文件,如果不在app / assets中,而是在lib / assets或vendor / assets中,如何使用require_directory?
更新
我试过了
require_tree sketchyPad
但错误:
require_tree argument must be a relative path
我试过了
require_tree ./sketchyPad
但错误:
require_tree argument must be a directory
我认为require_tree必须是相对于app / assets文件夹的,但是要放置类似
的内容require_tree ./../lib/assets/sketchyPad/brushes
也会出错:
require_tree参数必须是目录
无论如何,我不想包含整个sketchyPad树,因为它确实包含一些我不想包含的js文件...例如示例和它自己的旧版jQuery版本。
更新:
我最终做的是在lib / assets / javascripts文件夹中创建一个lib.js,其中包含一个清单,以包含相对于lib / assets文件夹而不是app / assets文件夹的sketchyPad js文件。
在app / assets / javascripts / application.js中的我把:
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require lib
并在lib / assets / javascripts / lib.js中我把:
//= require ./../sketchyPad/sketchyPad
//= require_tree ./../sketchyPad/brushes
//= require ./../sketchyPad/example/mattfarina-farbtastic-4bb6bbf/farbtastic.min
这似乎包含正确的文件。有更简单的方法吗?
答案 0 :(得分:2)
也许:
//= require_tree ./sketchyPad
答案 1 :(得分:2)
无需创建/更改清单,只需将以下行添加到application.rb
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
答案 2 :(得分:1)
Rails方式(根据this answer对我有用)将在index.js
中创建一个lib/assets/sketchyPad
文件,只需
//= require_tree .
虽然看起来插件非常广泛,但我想你必须将它进一步分解为子目录。