在使用cruisecontrol做持续集成过程中,我们可能需要将在这个过程中将源码js文件经过相关关工具进行压缩,再打包发布,这样能大大减少网络传输的流量。正常情况下,可以使用诸如hdjso、jsmin进行处理,其中jsmin是开源的,并且方便在dos中通过命令行的方式对相关文件(js)进行压缩,主要是出去大部分空格、注解等。
在cruisecontrol,只需要简单在build.xml中加入相关脚本如下:
<target name="compressed_js" depends="copy">
<exec executable="cmd" dir="${compressed}" failonerror="false"
append="true" >
<arg line="/c call RunJSMin.bat ../projects/REPORT/${dist}/${warDest} " />
</exec>
<echo>####自动压缩静态JS文件完成</echo>
</target>
其中RunJSMin.bat接受参数是一个js的目录,然后递归遍历,最后得到压缩的类,其中要使用jsmin.exe工具,可以到官网下载使用。
@echo off
rem 参数1为项目复制后的web目录,主要进行的js压缩文件夹主要
set JSDir=%1
set pageRoot=%JSDir%/pages
rem 遍历文件夹中的js文件
for /R %pageRoot% %%i in (*.js) do (
rem 获取文件路径
rem echo %%~dpi
rem 获取文件名
rem echo %%~nxi
CALL JsMinfy.bat %%~dpi %%~nxi
)
JSMinfy.bat:
set DirName=%1
set FileName=%2
jsmin.exe < %DirName%/%FileName% > %DirName%/compressed.%FileName% "auto compressed this file at:%date% %time%"
del /f %DirName%\%FileName%
ren %DirName%\compressed.%FileName% %FileName%
这样,就可以运行起来整个集成压缩。