2012-08-01 69 views
2

我为maven使用yui-compressor插件,似乎无法使其压缩。所有js文件的附加工作正常。它不会删除注释,换行符,也不会缩小js(即将var var myVar转换为var a)。我的配置有问题吗?Maven&yui-compressor插件问题

<plugin> 
        <groupId>net.alchim31.maven</groupId> 
        <artifactId>yuicompressor-maven-plugin</artifactId> 
        <version>1.1</version> 
        <executions> 
         <execution> 
          <goals> 
           <goal>compress</goal> 
          </goals> 
          <configuration> 
           <jswarn>false</jswarn> 
           <disableOptimizations>false</disableOptimizations> 
           <insertNewLine>false</insertNewLine> 
           <preserveAllSemiColons>false</preserveAllSemiColons> 
           <aggregations> 
            <aggregation> 
             <removeIncluded>true</removeIncluded> 
             <!-- insert new line after each concatenation (default: false) --> 
             <output>${project.build.directory}/${project.build.finalName}/WEB-INF/scripts/all.js</output> 
             <!-- files to include, path relative to output's directory or absolute 
              path --> 
             <!--inputDir>base directory for non absolute includes, default to 
              parent dir of output</inputDir --> 
             <includes> 
              <include>${basedir}/src/main/webapp/WEB-INF/scripts/underscore.js</include> 
<include>${basedir}/src/main/webapp/WEB-INF/scripts/backbone.dev.js</include> 
<include>${basedir}/src/main/webapp/WEB-INF/scripts/modernizr.custom.83543.js</include> 
<include>${basedir}/src/main/webapp/WEB-INF/scripts/jquery.slider.min.js</include> 
<include>${basedir}/src/main/webapp/WEB-INF/scripts/myApp.js</include> 
             </includes> 
             <!-- files to exclude, path relative to output's directory <excludes> 
              <exclude>**/*.pack.js</exclude> <exclude>**/compressed.css</exclude> </excludes> --> 
            </aggregation> 
           </aggregations> 
           <includes> 
            <include>${basedir}/src/main/webapp/WEB-INF/scripts/*.js</include> 
           </includes> 
           <excludes> 
            <exclude>${basedir}/src/main/webapp/WEB-INF/scripts/*min*.js</exclude> 
            <exclude>${basedir}/src/main/webapp/WEB-INF/scripts/underscore.js</exclude> 
            <exclude>${basedir}/src/main/webapp/WEB-INF/scripts/backbone.js</exclude> 
            <exclude>${basedir}/src/main/webapp/WEB-INF/scripts/modernizr*.js</exclude> 
            <exclude>${basedir}/src/main/webapp/WEB-INF/scripts/*fancybox*.js</exclude> 
            <exclude>${basedir}/src/main/webapp/WEB-INF/scripts/jquery.easing*.js</exclude> 
           </excludes> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 

回答

1

我想清楚发生了什么事情。实际上,出现了一些问题:首先,整个配置块需要与执行块相邻,而不是在其内部。其次,insertNewLine选项需要位于聚合包中。第三,没有被删除的评论是/ *! * /注释,通常包含许可信息和yui-compressor不会删除。第四,也是最重要的一点,myApp.js中有一个eval,它被认为是“邪恶”,并且停止了yui压缩器的压缩。

希望这有助于人们!

0

我建议你使用jshint插件和lint你的js代码作为上一步压缩js。如果检测到eval,结束错误的逗号等,则在尝试压缩之前,您的Maven构建失败。

 <plugin> 
      <groupId>com.cj.jshintmojo</groupId> 
      <artifactId>jshint-maven-plugin</artifactId> 
      <version>1.6.0</version> 
      <executions> 
       <execution> 
        <phase>process-resources</phase> 
        <goals> 
         <goal>lint</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <options>forin,sub,evil,latedef,eqnull</options> 
       <directories> 
        <directory>src/main/webapp/</directory> 
       </directories> 
       <excludes> 
        <exclude>src/main/webapp/extjs-4.2</exclude> 
       </excludes> 
       <reporter>jslint</reporter> 
       <reportFile>target/jshint.xml</reportFile> 
       <failOnError>true</failOnError> 
      </configuration> 
     </plugin> 
+0

这并没有提供问题的答案。一旦你有足够的[声誉](http://stackoverflow.com/help/whats-reputation),你将可以在任何帖子上[评论](http://stackoverflow.com/help/privileges/comment)。另外检查这[我可以做什么,而不是](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an-i-do-instead )。 – thewaywewere 2017-06-02 06:33:15