Open GoogleCodeExporter opened 8 years ago
Original comment by joe.scylla
on 22 Mar 2011 at 9:46
A cssmin plugin would really be nice! I need to rewrite all
url("../gfx/foo.png") ... :(
Original comment by fiedler....@gmail.com
on 9 Jun 2011 at 3:17
I´ve done one using cssmin-v3.0.0.b7-source. See attachment.
How to use:
$css = CssMin::minify($css, array(), array(
"UrlPrefix" => array( "BaseUrl" => "http://www.xyz.de/your_css_folder/" )
));
Original comment by fiedler....@gmail.com
on 9 Jun 2011 at 4:46
Attachments:
Pardon my hard headedness, but I noticed this issue while searching for a
solution to a problem I'm having. A bit of background:
We have a core code base which a build system matches to a custom project
(customer) base. Using this melded system, we can override CSS files in the
core with files in the custom project by placing them in a doc-root/custom/ dir
(named the same as they are named in core). The following Apache mod rewrite
then causes the actual override:
RewriteCond %{DOCUMENT_ROOT}/custom%{REQUEST_FILENAME} -f
RewriteRule (.*) /custom/%{REQUEST_FILENAME} [L]
Basically, if a requested file exists in the custom/ dir, use it. If not,
allow the request to go through to the core dir as per normal.
The problem I am having comes into play when using CSSMinifier on a CSS file
with @import statements that point at a file which has been overridden in
custom. I can't tell CSSMinifier to try the custom URL and, if it doesn't find
the file, try the core as I only get one setting for import-base-path.
Is that what this issue is asking to be corrected?
Thanks,
Jim
Original comment by auldrid...@gmail.com
on 17 Jun 2011 at 3:28
@auldridgej
Fixing that issue will not fix your problem. My plan is to create a filter that
allows to use regular expressions to rewrite url's in the css source. But your
problem requires some special logic. You have to check every import at-rule and
rewrite the url if there is a css file with the same name in the custom
directory. With CSSMin version 3.x you can archive this by creating a custom
minifier filter.
Original comment by joe.scylla
on 17 Jun 2011 at 5:01
Thanks for the clarification.
Jim
Original comment by auldrid...@gmail.com
on 17 Jun 2011 at 5:39
[deleted comment]
The plugin works great for me but I made one modification:
{{{
private function urlPrefix($url) {
$url = str_replace(array('"', '\''), "", $url);
return $this->resolveHref($this->configuration["BaseUrl"], $url);
}
}}}
This is because sometimes people will use single quotes (I do). However, in any
case, quotes are not necessary.
Original comment by audvare
on 15 Oct 2011 at 10:28
Just wanted to post a little update here.
I downloaded the CssUrlPrefixMinifierPlugin.php added by Comment 4. With some
small changes it works really nice! :)
First I changed the reg exp a bit to find all url() parts. Because I had some
css that was like this:
background-image: url(image1.png),url(image2.png);
(Don't ask me if that works. It's in a theme we bought for the page we are
working on). :)
New regexp:
private $reMatch = "/url\s*\(\s*([^\)]+)\)/iS";
Then I changed the apply() function a bit to use preg_match_all() to catch all
those url()s.
public function apply(aCssToken &$token) {
if (get_class($token) === "CssRulesetDeclarationToken" && stripos($token->Value, "url") !== false) {
preg_match_all($this->reMatch, $token->Value, $m);
if (!empty($m)) {
foreach ($m[1] AS $index => $src) {
$token->Value = str_replace($src, $this->urlPrefix($src), $token->Value);
}
}
}
return false;
}
(There might be ways of making this nicer though).
Then I also changed urlPrefix() a bit because I wanted to remove all url(' ')
and url(" ") and unify them all to url(' ').
private function urlPrefix($url) {
$url = str_replace('"', "", $url);
$url = str_replace('\'', "", $url);
return "'" . $this->resolveHref($this->configuration["BaseUrl"], $url) . "'";
}
I have quite an advance minifier system now in a Silex env with Assetics. I
have to pre-minify with this url rewrite filter. Then merge the files. And
move. Because we have a theme that has a dark and a light versions. With a lot
of different css's in different places. But this filter seams to have helped me
a lot.
(I'll try to let you guys know here if I find any more "bugs").
Original comment by david.ma...@gmail.com
on 28 Nov 2012 at 9:28
[deleted comment]
Here is the new file...
Original comment by david.ma...@gmail.com
on 28 Nov 2012 at 9:31
Attachments:
We put a github fork up where the CssUrlPrefixMinifierPlugin is included in the
file. Easier to use. :)
https://github.com/ztormab/CssMin
Original comment by david.ma...@gmail.com
on 29 Nov 2012 at 9:30
Original issue reported on code.google.com by
robert.f...@gmail.com
on 14 Mar 2011 at 12:45