确定从 Ant 运行 YUI 压缩程序时哪个文件出错



我们在 Jenkins CI Server 上运行的 ant 构建任务期间使用 YUI 压缩器压缩我们的 JavaScript(和 css 文件(。 但是,很难确定哪些 js 文件存在错误 YUI 压缩器。 我们看到一堆东西,比如:

[缩小-js][错误] 3:35:未终止的字符串文本[缩小-js][缩小-js][错误] 3:35:语法错误[缩小-js][缩小-js][错误] 4:8:语法错误[缩小-js][缩小-js][错误] 1:0:编译产生 3 个语法错误。[minify-js] org.mozilla.javascript.EvaluatorException:编译产生了 3 个语法错误。[minify-js] at com.yahoo.platform.yui.compressor.YUICompressor$1.runtimeError(YUICompressor.java:135([minify-js] at org.mozilla.javascript.Parser.parse(Parser.java:410([minify-js] at org.mozilla.javascript.Parser.parse(Parser.java:355([minify-js] at com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:312([minify-js] at com.yahoo.platform.yui.compressor.JavaScriptCompressor.(JavaScriptCompressor.java:533([minify-js] at com.yahoo.platform.yui.compressor.YUICompressor.main(YUICompressor.java:112([minify-js] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method([minify-js] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57([minify-js] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43([minify-js] at java.lang.reflect.Method.invoke(Method.java:616([minify-js] at com.yahoo.platform.yui.compressor.Bootstrap.main(Bootstrap.java:20([缩小-js]结果:2

在输出中,但我不知道错误来自数百个 JS 文件中的哪个。 我们的蚂蚁任务如下所示:

<target name="minify-js">
    <apply executable="yuicompressor" parallel="false" dest="${global.dir}/" taskname="minify-js" force="true">
        <fileset dir="${global.dir}/" includes="**/*.js">
            <exclude name="*.min.js" />
        </fileset>
        <arg value="--type=js" />
        <srcfile />
        <arg value="-o" />
        <targetfile />
        <mapper type="identity" />
    </apply>
</target>

不是 Ant 或 YUI 压缩器的专家,我们是否可以做些什么来将发生错误的文件名输出到某处?

我不知道

yuicompressor 是如何工作的,我假设它一次只能处理一个文件。

如果这是真的,你可以从ant-contrib中做。您需要先安装 ant-contrib。

<taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="${global.dir}/bin_data/ant-contrib-0.6.jar"/>
<for param="file">
  <path>
    <fileset dir="${global.dir}/" includes="**/*.js">
      <exclude name="*.min.js" />
    </fileset>
  </path>
  <sequential>
    <echo>youcompressor for @{file}</echo> <!-- Will output each file and help debugging -->
    <exec executable="yuicompressor"> <!-- I took the args from the official documentation-->
      <arg value="--type=js" />
      <arg value="-o" />
      <arg value="'.js$:-min.js'" />
      <arg value="@{file}" />
    </exec>
  </sequential>
</for>

尝试使用此选项:

-v, --verbose 显示信息性消息和警告。

对于像您这样的案例,文档中有一个很好的条目:

不要犹豫,使用 -v 选项。虽然不能替代 JSLint,当它检测到 您的代码可能有问题。

你试过吗

<apply … verbose="true">

执行后是否打印摘要。从蚂蚁 1.6 开始。

理想情况下,它会尝试对文件执行之前打印一条语句,但之后有一个摘要至少可以让您看到最后一个成功的文件,该文件应该指向损坏的文件,因为文件集通常是按字母数字顺序排列的。

相关内容

  • 没有找到相关文章

最新更新