Grails 2.4现在正在使用资产管道来管理和处理Grails应用程序中的静态资产,而不是资源系统.这是相当新的,在互联网上没有太多的文档.
我的问题是,如何正确处理第三方图书馆?
例如,select2(http://ivaynberg.github.io/select2/)库中的所有.css,.js,图像文件都放在一个单一的文件夹中.
我应该将不同的文件类型复制到相应的资产/ javascripts /,资产/样式表/等子文件夹中吗?如果文件没有明确的位置,如.json,text或doc文件,该怎么办?
我应该创建一个vendor / select2 /文件夹吗?哪里,在资产/或网络应用程序/?那么我应该如何从我的GSP加载所有必要的文件?
这个lib也仅在窗体视图中需要,因此除非需要,否则不应该被加载.
Baxxabit的答案让我解决了我的问题.我一直在努力地做同样的事情,但希望充分利用管道,以便我可以使用资源少的管道插件.
以引导为例,我创建了一个供应商文件夹作为标准资产文件夹的对等体,然后删除了引导文件.
application.js中:
//This is a javascript file with its top level require directives //= require jquery //= require bootstrap-3.1.1/javascript/bootstrap //= require_tree views //= require_self ...
和application.css:
/* *= require_self *= require main *= require mobile *= require bootstrap-3.1.1/stylesheets/bootstrap *= encoding UTF-8 */
要覆盖boostrap自定义,我可以简单地将一个自定义的无变量文件放入./grails-app/assets/vendor/bootstrap-3.1.1/stylesheets/variables.less中.当覆盖文件时,资产上的第一个文件夹将被忽略,此后,路径需要匹配您在供应商下的所有内容.
这给我这种层次结构:
grails-app/assets/ ├── images ... ├── javascripts │ └── application.js ├── stylesheets │ ├── application.css │ ├── bootstrap-3.1.1 │ │ └── stylesheets │ │ └── variables.less │ ├── errors.css │ ├── main.css │ └── mobile.css └── vendor └── bootstrap-3.1.1 ├── javascript │ ├── bootstrap.js │ └── bootstrap.min.js └── stylesheets ├── alerts.less ... ├── variables.less └── wells.less
我喜欢结果.我已经将分发的包干净地描绘并相对容易地升级了,我把我的更改包分成了一个清晰可辨的定制文件.
我已经在https://github.com/ggascoigne/grails-pipeline-scss使用sass-asset-pipeline插件的例子.