You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by "Poggenpohl, Daniel" <Da...@isst.fraunhofer.de> on 2015/07/28 20:14:29 UTC

YUICompressor tries to compress minified resources

Hello,

we enabled production mode in our application.
The Tapestry YUICompressor doesn't seem to recognize already minified JS or CSS files and tries to compress them.
This results in Exceptions like this one:
ERROR] AssetsModule.ResourceMinimizer JavaScript compression problems for resource context:bootstrap/js/bootstrap.min.js:
[ERROR] AssetsModule.ResourceMinimizer String index out of range: 40264
java.lang.StringIndexOutOfBoundsException: String index out of range: 40264
        at java.lang.String.substring(String.java:1951)
        at com.yahoo.platform.yui.compressor.JavaScriptCompressor.printSourceString(JavaScriptCompressor.java:267)
        at com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:330)
        at com.yahoo.platform.yui.compressor.JavaScriptCompressor.<init>(JavaScriptCompressor.java:533)
        at org.apache.tapestry5.internal.yuicompressor.JavaScriptResourceMinimizer.doMinimize(JavaScriptResourceMinimizer.java:148)
        at org.apache.tapestry5.internal.yuicompressor.AbstractMinimizer$1.perform(AbstractMinimizer.java:67)
       at org.apache.tapestry5.internal.TapestryInternalUtils$5.run(TapestryInternalUtils.java:582)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:51)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:49)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)

Can we set some options for the Compressor? How do we prevent this error?

Regards,
Daniel P.

AW: YUICompressor tries to compress minified resources

Posted by "Poggenpohl, Daniel" <Da...@isst.fraunhofer.de>.
Hello,

would I be able to decorate the YUICompressor with my own implementation which checks if the file is already minified?
Or could I configure the YUICompressor to exclude files?

Regards,
Daniel P.

-----Ursprüngliche Nachricht-----
Von: Howard Lewis Ship [mailto:hlship@gmail.com] 
Gesendet: Mittwoch, 29. Juli 2015 00:15
An: Tapestry users
Betreff: Re: YUICompressor tries to compress minified resources

Tapestry is not quite smart enough to know that .min.css means a minimized CSS file.

You should have access to the non-minimized CSS file, so change it from "context:bootstrap/bootstrap.min.css" to "context:bootstrap/bootstrap.css"
(or equivalent).

The whole concept of Tapestry doing the minimization is to simplify the developer; it's always the same file, but in production mode it gets all the desirable extras (minimization, etc.).


On Tue, Jul 28, 2015 at 11:14 AM, Poggenpohl, Daniel < Daniel.Poggenpohl@isst.fraunhofer.de> wrote:

> Hello,
>
> we enabled production mode in our application.
> The Tapestry YUICompressor doesn't seem to recognize already minified 
> JS or CSS files and tries to compress them.
> This results in Exceptions like this one:
> ERROR] AssetsModule.ResourceMinimizer JavaScript compression problems 
> for resource context:bootstrap/js/bootstrap.min.js:
> [ERROR] AssetsModule.ResourceMinimizer String index out of range: 
> 40264
> java.lang.StringIndexOutOfBoundsException: String index out of range: 40264
>         at java.lang.String.substring(String.java:1951)
>         at
> com.yahoo.platform.yui.compressor.JavaScriptCompressor.printSourceString(JavaScriptCompressor.java:267)
>         at
> com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:330)
>         at
> com.yahoo.platform.yui.compressor.JavaScriptCompressor.<init>(JavaScriptCompressor.java:533)
>         at
> org.apache.tapestry5.internal.yuicompressor.JavaScriptResourceMinimizer.doMinimize(JavaScriptResourceMinimizer.java:148)
>         at
> org.apache.tapestry5.internal.yuicompressor.AbstractMinimizer$1.perform(AbstractMinimizer.java:67)
>        at
> org.apache.tapestry5.internal.TapestryInternalUtils$5.run(TapestryInternalUtils.java:582)
>         at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:51)
>         at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:49)
>         at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(Operatio
> nTrackerImpl.java:74)
>
> Can we set some options for the Compressor? How do we prevent this error?
>
> Regards,
> Daniel P.
>



--
Howard M. Lewis Ship

Looking for Clojure engagements: coding, archiecture, mentoring & more!

Creator of Apache Tapestry

(971) 678-5210
http://howardlewisship.com
@hlship

Re: YUICompressor tries to compress minified resources

Posted by Howard Lewis Ship <hl...@gmail.com>.
Tapestry is not quite smart enough to know that .min.css means a minimized
CSS file.

You should have access to the non-minimized CSS file, so change it from
"context:bootstrap/bootstrap.min.css" to "context:bootstrap/bootstrap.css"
(or equivalent).

The whole concept of Tapestry doing the minimization is to simplify the
developer; it's always the same file, but in production mode it gets all
the desirable extras (minimization, etc.).


On Tue, Jul 28, 2015 at 11:14 AM, Poggenpohl, Daniel <
Daniel.Poggenpohl@isst.fraunhofer.de> wrote:

> Hello,
>
> we enabled production mode in our application.
> The Tapestry YUICompressor doesn't seem to recognize already minified JS
> or CSS files and tries to compress them.
> This results in Exceptions like this one:
> ERROR] AssetsModule.ResourceMinimizer JavaScript compression problems for
> resource context:bootstrap/js/bootstrap.min.js:
> [ERROR] AssetsModule.ResourceMinimizer String index out of range: 40264
> java.lang.StringIndexOutOfBoundsException: String index out of range: 40264
>         at java.lang.String.substring(String.java:1951)
>         at
> com.yahoo.platform.yui.compressor.JavaScriptCompressor.printSourceString(JavaScriptCompressor.java:267)
>         at
> com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:330)
>         at
> com.yahoo.platform.yui.compressor.JavaScriptCompressor.<init>(JavaScriptCompressor.java:533)
>         at
> org.apache.tapestry5.internal.yuicompressor.JavaScriptResourceMinimizer.doMinimize(JavaScriptResourceMinimizer.java:148)
>         at
> org.apache.tapestry5.internal.yuicompressor.AbstractMinimizer$1.perform(AbstractMinimizer.java:67)
>        at
> org.apache.tapestry5.internal.TapestryInternalUtils$5.run(TapestryInternalUtils.java:582)
>         at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:51)
>         at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:49)
>         at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
>
> Can we set some options for the Compressor? How do we prevent this error?
>
> Regards,
> Daniel P.
>



-- 
Howard M. Lewis Ship

Looking for Clojure engagements: coding, archiecture, mentoring & more!

Creator of Apache Tapestry

(971) 678-5210
http://howardlewisship.com
@hlship