最近在维护一个小后台项目,有段JS需要压缩上传到CDN存储服务器。由于之前压缩的JS文件都比较少,都是手动压缩的。这次需要压缩的文件比较多,所以用了批量压缩。特此记录一下,方便大家和自己以后再用到的时候备忘。

v准备工作

安装nodejs

首先在本地安装node.js和npm,一般npm集成于nodejs,即安装nodejs,同时也安装了npm。node.js下载地址,下载以后直接不停下一步就行,全部使用默认选项即可。下载完成后打开CMD,node -v检测是否安装成功,安装成功则会显示nodejs版本号。

安装uglify插件

在cmd命令行执行:npm install uglify-js -g

v开始压缩

压缩的时候将下面的代码拷贝下来,然后生成bat文件,再运行bat文件(有些电脑可能需要windows管理员身份运行),然后依次输入当前的JS文件目录。再输入生成输出压缩后JS的目录即可。

@ECHO OFFsetlocal enabledelayedexpansionset source_path=%1set target_dir=%2IF [%1]==[] (       rem echo please input javascript file or directory       set /p  source_path=please input javascript file or directory:)IF [%2]==[] (       rem echo please input output directory       set /p target_dir=please input output directory:) rem source path exists?FOR %%i IN (%source_path%) DO SET FileAttrib=%%~aiif "%FileAttrib%" equ ""   (           rem not found file attribute, source path not exist      echo source path ^(%source_path%^) doesn't exist      exit /b 0)   ELSE   IF "%FileAttrib:~0,1%" equ "d" (      rem source path is directory and not end with \, append \ to source path      IF %source_path:~-1% neq \ (            set source_path=%source_path%\      )   )       echo source path is  %source_path%  rem target path exists?FOR %%i IN (%target_dir%) DO SET fa=%%~aiIF   [%fa%]==[]   (    rem target path not exist, make it    mkdir %target_dir%      )  IF %target_dir:~-1% neq \ (      rem append \ to target path      set target_dir=%target_dir%\)   echo target path is %target_dir% IF [%FileAttrib:~0,1%]==[d] (     for /r %source_path% %%I in (*.js) do (       set file_name=%%~nI      set parent=%%~dpI      set target_parent=%target_dir%!parent:%source_path%=!      if not exist !target_parent!  mkdir !target_parent!      cd !target_parent!      if [!file_name:~-4!] neq [.min] (                  set w= uglifyjs %%I -m -c -O ascii_only=true -o   !target_parent!%%~nI.min.js             rem uglify .js file            echo uglifyjs from "%%I" to "!target_parent!%%~nI.min.js"            start cmd /c  "!w!"      )  else (           rem copy min.js file           echo copy file from "%%~dpnI.js" to "!target_parent!%%~nI.js"            start cmd /c "copy  %%~dpnI.js  !target_parent!%%~nI.js"       )           )     ) else (    for %%I in (%source_path%) do (        IF    "%%~xI" EQU ".js"  (                 set file_name=%%~nI              if [!file_name:~-4!] neq [.min] (                     rem uglify .js file                  set val=%target_dir%%%~nI.min.js                         echo uglifyjs from "%%I" to "!val!"                  start cmd /c "uglifyjs  %%I  -m -c  -O ascii_only=true -o   !val!"                                ) else (                  rem copy min.js file                  echo copy file from "%%I" to "%target_dir%%%~nI.js"                  start cmd /c "copy  %%I %target_dir%%%~nI.js"                )                )    )      )echo done  

v源码地址

https://github.com/toutouge/javademosecond/tree/master/hellolearn

作  者:请叫我头头哥
出  处:http://www.cnblogs.com/toutou/
关于作者:专注于基础平台的项目开发。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!

#comment_body_3242240 { display: none }