Grails资源无法使用缓存破坏CKEditor版本(4.5.5 +)

时间:2016-06-23 05:39:37

标签: grails ckeditor grails-resources-plugin

我无法使用资源插件获取Grails 2.5.2应用程序来处理cache-busting change made to CKEditor。资源插件配置如下:

grails.resources.adhoc.patterns = ['/js/*', '/images/*', '/css/*', '/plugins/*', '/thirdparty/*', '/templates/*']
grails.resources.adhoc.includes = ['/js/**', '/images/**', '/css/**', '/plugins/**', '/thirdparty/**', '/templates/**']

CKEditor代码位于app-dir/web-app/thirdparty/ckeditor下,目前版本为4.5.9。缓存中的更改在4.5.5中进行,版本4.5.4与grails resources完美匹配。

在使用4.5.9运行应用程序时,我在控制台中收到以下错误:

GET resource:/thirdparty/ckeditor/skins/moono/icons.png?t=a35abfe net::ERR_UNKNOWN_URL_SCHEME

似乎resources插件无法很好地处理ckeditor的editor.css文件中的值(应用程序提供的文件指向app-dir/thirdparty/ckeditor/skins/moono/editor.css?t=G4CDhttp://localhost:8080/app-dir/static/thirdparty/ckeditor/skins/moono/editor.css?t=G4CD)。如果我直接查看此文件,它包含以下for icons.png和icons_hidpi.png文件,表明resources插件错误地替换了图像文件链接(实际上除了第一个之外) resource:/ ...“不应该在那里的url,因此控制台错误。奇怪的是,只有icons.png和icons_hidpi.png文件及其t参数以这种方式更改,同一editor.css文件中的其他图像文件将保持不变。

.cke_button__bold_icon {background: url(icons.png?t=a35abfe) no-repeat 0 -0px !important;}
.cke_button__italic_icon {background: url(resource:/thirdparty/ckeditor/skins/moono/icons.png?t=a35abfe) no-repeat 0 -24px !important;}
.cke_button__strike_icon {background: url(resource:/thirdparty/ckeditor/skins/moono/icons.png?t=a35abfe) no-repeat 0 -48px !important;}
.cke_button__subscript_icon {background: url(resource:/thirdparty/ckeditor/skins/moono/icons.png?t=a35abfe) no-repeat 0 -72px !important;}

如果我添加以下配置,该应用程序将运行并完美显示。

grails.resources.processing.enabled = false

如果我使用

grails.resources.mappers.cssrewriter.excludes = ['/thirdparty/ckeditor/skins/moono/**']

试图阻止resources修改ckeditor's editor.css文件,似乎没有任何改变。

我该怎么办?我不能将ckeditor留在4.5.4,因为我正在尝试修复它与它的交互。我已经使用了相同的配置as recommended in another post,但这并不能解决问题。 Disabling css rewriting altogether只是破坏了其他插件。

1 个答案:

答案 0 :(得分:1)

最终解决方案(由同事推荐)是排除grails resources处理特定CSS文件:

resource url:"thirdparty/ckeditor/skins/moono/editor.css", exclude: "*"

这可以避免影响未受升级的CKEditor影响的其他文件,或者受益于grails resources完成的处理。