diff --git a/src/node/utils/Minify.js b/src/node/utils/Minify.js index 7cc05645b..2a9f2a5e7 100644 --- a/src/node/utils/Minify.js +++ b/src/node/utils/Minify.js @@ -426,17 +426,17 @@ function compressCSS(filename, content, callback) /* * Changes done to migrate CleanCSS 3.x -> 4.x: * - * 1. Disabling rebase is necessary because otherwise the URLs for the web - * fonts become wrong. + * 1. Rework the rebase logic, because the API was simplified (but we have + * less control now). See: + * https://github.com/jakubpawlowicz/clean-css/blob/08f3a74925524d30bbe7ac450979de0a8a9e54b2/README.md#important-40-breaking-changes * - * EXAMPLE 1: - * /static/css/src/static/font/fontawesome-etherpad.woff - * instead of - * /static/font/fontawesome-etherpad.woff - * EXAMPLE 2 (this is more surprising): - * /p/src/static/font/opendyslexic.otf - * instead of - * /static/font/opendyslexic.otf + * EXAMPLE: + * The URLs contained in a CSS file (including all the stylesheets + * imported by it) residing on disk at: + * /home/muxator/etherpad/src/static/css/pad.css + * + * Will be rewritten rebasing them to: + * /home/muxator/etherpad/src/static/css * * 2. CleanCSS.minify() can either receive a string containing the CSS, or * an array of strings. In that case each array element is interpreted as @@ -447,7 +447,13 @@ function compressCSS(filename, content, callback) * "content" argument, but we have to wrap the absolute path to the CSS * in an array and ask the library to read it by itself. */ - new CleanCSS({rebase: false}).minify([absPath], function (errors, minified) { + + const basePath = path.dirname(absPath); + + new CleanCSS({ + rebase: true, + rebaseTo: basePath, + }).minify([absPath], function (errors, minified) { if (errors) { // on error, just yield the un-minified original, but write a log message console.error(`CleanCSS.minify() returned an error on ${filename} (${absPath}): ${errors}`);