YUICompressor 压缩前端js、css文件
在项目中,前端的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');代替。
相关推荐
Kafka 2020-09-18
Wepe0 2020-10-30
windle 2020-10-29
mengzuchao 2020-10-22
Junzizhiai 2020-10-10
bxqybxqy 2020-09-30
风之沙城 2020-09-24
kingszelda 2020-09-22
大唐帝国前营 2020-08-18
yixu0 2020-08-17
TangCuYu 2020-08-15
xiaoboliu00 2020-08-15
songshijiazuaa 2020-08-15
xclxcl 2020-08-03
zmzmmf 2020-08-03
newfarhui 2020-08-03
likesyour 2020-08-01