本地JS文件批量压缩

最近在维护一个小后台项目,有段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 OFF
setlocal enabledelayedexpansion
set source_path=%1
set target_dir=%2
IF [%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=%%~ai
if "%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=%%~ai
IF [%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/
关于作者:专注于基础平台的项目开发。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是作者坚持原创和持续写作的最大动力!

作者:请叫我头头哥原文地址:https://www.cnblogs.com/toutou/p/js_min.html

%s 个评论

要回复文章请先登录注册