Grails资产管道系统与第三方库

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插件的例子.

翻译自:https://stackoverflow.com/questions/23702532/grails-asset-pipeline-system-with-3rd-party-libs

转载注明原文:Grails资产管道系统与第三方库