我刚尝试使用yuicompressor for 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.StackOverflowError
at java.util.regex.Pattern$Loop.match(Pattern.java:4663)
在这些行之后有一千个错误。
我在这里查看了另一篇文章,但它并没有解决它。它说了一些关于增加堆栈大小(?)的信息,如果这就是解决方案,我该怎么做?谷歌不会给我任何有用的回答。
提前感谢。
答案 0 :(得分:0)
要增加堆栈大小,需要将-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