Grails 资源不适用于缓存破坏 CKEditor 版本 (4.5.5+)

Grails resources not working with cache-busting CKEditor release (4.5.5+)

我无法使用资源插件获得 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=G4CD 作为 http://localhost:8080/app-dir/static/thirdparty/ckeditor/skins/moono/editor.css?t=G4CD) .如果我直接查看此文件,它包含 icons.png 和 icons_hidpi.png 文件的以下内容,表明 resources 插件错误地替换了图像文件 link(除了第一个,实际上)带有 "resource:/..." url 不需要在那里,因此控制台错误。奇怪的是,只有带有 t 参数的 icons.png 和 icons_hidpi.png 文件以这种方式更改,同一 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, but that does not fix the problem. Disabling css rewriting altogether 只是破坏了其他插件。

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

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

这样可以避免影响其他不受升级后的 CKEditor 影响或受益于 grails resources 处理的其他文件。