YUICompressor 压缩前端js、css文件
程序员文章站
2022-03-31 08:40:27
...
在项目中,前端的js、css会随着项目周期的增加而变的繁多,浏览器下载效率低且费流量,这时我们可以使用各种压缩工具对其进行压缩
本文使用的是maven环境,在项目的pom.xml添加:
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <groupId>com.xx</groupId> <artifactId>xx-xx</artifactId> <version>3.0.0-SNAPSHOT</version> <packaging>war</packaging> <name>xx-xx</name> <properties> <!-- 主要依赖库的版本定义 --> <jetty.version>7.6.15.v20140411</jetty.version> <java.version>1.6</java.version> <!-- Plugin的属性定义 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <prerequisites> <maven>3.0.0</maven> </prerequisites> <dependencies> <!-- 服务依赖 --> </dependencies> <build> <plugins> <!-- compiler插件, 设定JDK版本 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> <showWarnings>true</showWarnings> </configuration> </plugin> <!-- war打包插件, 设定war包名称不带版本号 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.4</version> <configuration> <warName>${project.artifactId}</warName> <packagingExcludes>*.shtml</packagingExcludes> </configuration> </plugin> <!-- YUI Comoress配置 --> <plugin> <groupId>net.alchim31.maven</groupId> <artifactId>yuicompressor-maven-plugin</artifactId> <version>1.3.0</version> <executions> <execution> <phase>prepare-package</phase> <goals> <goal>compress</goal> </goals> </execution> </executions> <configuration> <!-- 读取js,css文件采用UTF-8编码 --> <encoding>UTF-8</encoding> <!-- 不显示js可能的错误 --> <jswarn>false</jswarn> <!-- 若存在已压缩的文件,会先对比源文件是否有改动 有改动便压缩,无改动就不压缩 --> <force>true</force> <!-- 在指定的列号后插入新行 --> <linebreakpos>-1</linebreakpos> <!-- 压缩之前先执行聚合文件操作 --> <preProcessAggregates>true</preProcessAggregates> <!-- 压缩后保存文件后缀 --> <suffix></suffix> <nosuffix>true</nosuffix> <disableOptimizations>false</disableOptimizations> <!-- 源目录,即需压缩的根目录 --> <sourceDirectory>${basedir}/src/main/webapp/static</sourceDirectory> <includes> <include>js/*.js</include> <include>css/*.css</include> </includes> <outputDirectory>${basedir}/target/compress</outputDirectory> <!-- 合并:如果不合并,则可以不配置该项 --> <aggregations> <aggregation> <!-- 合并每一个文件后插入一新行 --> <insertNewLine>true</insertNewLine> <!-- 需合并文件的根文件夹 --> <inputDir>${basedir}/src/main/webapp/mergejscss</inputDir> <!-- 最终合并的输出文件 --> <output>${basedir}/src/main/webapp/mergejscss/js/merge.js </output> <!-- 把以下js文件合并成一个js文件,是按顺序合并的 --> <includes> <include>js/xx.js</include> </includes> </aggregation> <aggregation> <!-- 合并每一个文件后插入一新行 --> <insertNewLine>true</insertNewLine> <!-- 需合并文件的根文件夹 --> <inputDir>${basedir}/src/main/webapp/mergejscss</inputDir> <!-- 最终合并的输出文件 --> <output>${basedir}/src/main/webapp/mergejscss/css/merge.css</output> <!-- 把以下css文件合并成一个css文件,是按顺序合并的 --> <includes> <include>css/xx.css</include> </includes> </aggregation> </aggregations> </configuration> </plugin> <!-- jetty插件 --> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>8.0.0.RC0</version> <configuration> <scanIntervalSeconds>0</scanIntervalSeconds> <webAppConfig> <contextPath>/</contextPath> <!-- <descriptor>${project.basedir}/src/test/resources/web-test.xml</descriptor> --> </webAppConfig> <!-- <classesDirectory>${project.basedir}/target/classes</classesDirectory> <testClassesDirectory>${project.basedir}/target/test-classes</testClassesDirectory> <useTestClasspath>true</useTestClasspath> --> <webAppSourceDirectory>${project.basedir}/src/main/webapp</webAppSourceDirectory> <connectors> <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> <port>80</port> <maxIdleTime>60000</maxIdleTime> </connector> </connectors> </configuration> </plugin> </plugins> </build> </project>
2、使用maven命令
只压缩:mvn yuicompressor:compress
打包自动压缩:mvn package -Dmaven.test.skip=true -U
注意:如果js文件中带有js调试断言:debugger; 是无法打包压缩成功的,可以使用eval('debugger');代替。
上一篇: [转]ZooKeeper典型应用场景一览