带有第三方库的Grails Asset-Pipeline系统

seb*_*kem 19 grails assets asset-pipeline

Grails 2.4现在使用Asset Pipeline来管理和处理Grails应用程序中的静态资产,而不是资源系统.这是相当新的,在互联网上没有太多关于它的文档.

我的问题是,如何正确处理第三方库?

例如,select2(http://ivaynberg.github.io/select2/)库在其单个平面文件夹中附带所有.css,.js,图像文件.

我应该在复制不同的文件类型及其相应的assets/javascripts/,assets/stylesheets/等子文件夹?如何处理那些没有像.json,text或doc文件这样明显位置的文件?

我应该创建一个vendors/select2/文件夹吗?在哪里,assets/在里面web-app/?然后,我应该如何从我的GSP加载所有必要的文件?

此lib也只在表单视图中需要,因此除非需要,否则不应加载.

Guy*_*ord 20

Baxxabit的回答让我得到了解决方案.我一直在努力做同样的事情,但是想要充分利用管道,以便我可以使用less-asset-pipeline插件.

以bootstrap为例,我创建了一个供应商文件夹作为标准资产文件夹的对等文件,然后删除了那里的引导程序文件.

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
...
Run Code Online (Sandbox Code Playgroud)

和application.css:

/*
*= require_self
*= require main
*= require mobile
*= require bootstrap-3.1.1/stylesheets/bootstrap
*= encoding UTF-8
*/
Run Code Online (Sandbox Code Playgroud)

要覆盖boostrap自定义,我可以简单地将自定义的variables.less文件放入./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
Run Code Online (Sandbox Code Playgroud)

我喜欢这个结果.我已经清楚地描述了分布式软件包并且相对容易升级,并且我已将对该软件包的更改分离为可清晰识别的自定义文件.

我在https://github.com/ggascoigne/grails-pipeline-scss上使用了sass-asset-pipeline插件.