背景:将自己用VS2010开发的一个项目中的JS、CSS文件按顺序进行打包(bundle)、压缩(compress)。
前置工作:安装java、下载yuicompressor-2.4.6.jar
已js进行举例,CSS类推:
第一步:根据项目中使用js的顺序,将文件列表写入release.bundle,内容如下(相对于release.bundle的路径):
jquery-1.5.1.js
MessageAlertmsgbox.js
jquery.form.js
application.js
第二步:制作cmd文件,在VS的启动项目根目录下添加文件:bundle.cmd;文件内容如下:
@ECHO off
TITLE Static Content Compressor And Bundle
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
CLS
FOR /f %%i IN ("%0") DO SET CUR_PATH=%%~dpi
ECHO Working folder !CUR_PATH:~0,-1!
ECHO.
SET FILENAME=""
SET YUI_COMPRESSOR_PATH="%CUR_PATH%yui-compressoryuicompressor-2.4.6.jar"
COLOR A
ECHO %YUI_COMPRESSOR_PATH%
ECHO compressing static content started
ECHO.
ECHO compressing javascripts...
ECHO.
CALL:compress_bundle_content Scripts,release.js,release.min.js,release.bundle,js
ECHO.
ECHO compressing css...
ECHO.
CALL:compress_bundle_content css,release.css,release.min.css,release.bundle,css
ECHO.
ECHO compressing static content done
GOTO:END
:compress_bundle_content
CD %~1
SET FILENAME=%~2
SET OUTFILENAME=%~3
FOR /f %%i in (%~4) DO ECHO %%i
ECHO DELETE %~1\%FILENAME% ,%~1\%OUTFILENAME%
IF EXIST %FILENAME% DEL %FILENAME%
IF EXIST %OUTFILENAME% DEL %OUTFILENAME%
FOR /f %%i in (%~4) DO TYPE %%i >> %FILENAME%
java -jar %YUI_COMPRESSOR_PATH% --type %~5 --charset utf-8 -o "%OUTFILENAME%" "!FILENAME!"
ECHO INTO: %~1\%OUTFILENAME%
CD ..
GOTO:END
:END
第三步:添加生成事件。启动项目—》属性—》生成事件—》预先生成事件命令行:添加如下内容
if '$(ConfigurationName)' == 'Release' (
cd $(ProjectDir)
bundle.cmd
)
第四步:以Release的配置重新生成项目。
第五步:查看结果。进入release.bundle所在文件间,查看release.min.js即为打包并压缩后的内容。
附:
输出窗口出现错误:identifier is a reserved word
原因:js文件中含有debugger,去掉即可。