css 的 yuicompressor 对某些文件抛出错误

yuicompressor for css throws error for some files

我刚刚尝试使用 yuicompressor CSS。适用于大多数文件,但有一个文件不适用,并给我这个错误:

"C:\Program Files (x86)\JetBrains\PhpStorm 8.0.1\jre\jre/bin/java" -jar C:/nodejs/node_modules/yuicompressor/build/yuicompressor-2.4.8.jar style.css -o style.min.css
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.yahoo.platform.yui.compressor.Bootstrap.main(Bootstrap.java:21)
Caused by: java.lang.WhosebugError
at java.util.regex.Pattern$Loop.match(Pattern.java:4663)

这些行之后有上千个错误。

我在这里查看了另一个 post,但它并没有真正修复它。它说了一些关于增加堆栈大小(?)的内容,如果那是解决方案,我该怎么做? google 也不会给我任何有用的答案。

提前致谢。

要增加堆栈大小,您需要将 -Xss 选项传递给 java。默认为 512k,尝试增加它,例如 -Xss2048k.

为此,您需要相应地修改 node_modules\yuicompressor\nodejs\cli.js,添加 args.unshift('-Xss2048k');:

var spawn = require('child_process').spawn,
    fs = require('fs'),
    compressor = require('./index'),
    args = process.argv.slice(2);

args.unshift(compressor.jar);
args.unshift('-jar');
args.unshift('-Xss2048k');
...

然后在文件观察器的程序字段中指定 yuicompressor 二进制文件的路径(如 C:\Users\My.Name\AppData\Roaming\npm\yuicompressor.cmd)。

或者,使用 java 作为程序,以不同的方式设置文件观察器:

Program: C:\Program Files (x86)\JetBrains\PhpStorm 8.0.1\jre\jre\bin\java.exe
Arguments: -Xss2048k -jar "C:\Users\My.Name\AppData\Roaming\npm\node_modules\yuicompressor\build\yuicompressor-2.4.8.jar " $FileName$ -o $FileNameWithoutExtension$.min.css