vue-webpack項目自動打包壓縮成zip文件批處理


為什么需要這個?

使用vue框架開發項目,npm run build這個命令會一直用到,如果需要給后端發包,那你還要打包成zip格式的壓縮包,特別是項目提測的時候,一天可能要執行重復好幾次,所以才有了寫這個批處理的沖動。

雖然說以前沒寫過,但至少用過。找了份批處理命令的文章了解了下,按自己預先想好的思路,百度了關鍵的執行命令,然后就自己不斷的修改調試,最終完成了這個集webpack打包、壓縮成zip格式文件、打開當前文件夾這三個功能的批處理。

怎么用?

只需要把這個批處理文件放在項目根目錄下,輕松一點,等命令自行運行完畢打開文件夾,就可以直接復制打包后的壓縮包給后端人員了。

完整代碼:

title 項目自動打包壓縮批處理工具
cls
@echo off
echo  ┌────────────────────────────────────┐
echo.   
echo   vue+webpack 項目自動打包壓縮批處理工具     
echo.   
echo   author:cuichunhua@qq.com            
echo.         
echo   功能說明:
echo.   
echo   1.vue+webpack項目自動打包
echo.   
echo   2.打包完成之后會自動壓縮為zip文件,自定義名稱
echo.   
echo   3.壓縮完成,在資源管理器中自動打開當前文件夾
echo.   
echo  └────────────────────────────────────┘
echo.

rem 1. vue項目打包
echo  即將進行打包處理,請稍后。。。
echo.  
call npm run build

rem 返回代碼為>=1就跳至標題1處執行壓縮,>=0就跳至標題exit處執行終止

IF ERRORLEVEL 1 (
    echo  項目打包出錯了,快去看看怎么回事吧!!!
    echo.  
    goto exit
)
IF ERRORLEVEL 0 (
    echo  打包完成,自動壓縮中。。。
    echo.  
    goto zip
)

rem 2. 自動壓縮成zip文件,並以code_yyMMddhhmmss格式
:zip
echo  開始壓縮文件。。。
echo. 
cd /d dist
rem 打包成zip格式文件就需要WinRAR.exe,不然會報"未知選項:afzip"
set rar=%ProgramFiles%\WinRAR\WinRAR.exe 
set name=code_%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
(echo static    
echo index.html)>R.lst
"%rar%" a -afzip "%name%.zip" -ep1 -rr -av -ao -m5 @R.lst -ibck -xR.lst 
del R.lst
goto 2

rem 3. 自動打開當前文件夾
:2
echo  壓縮完成,自動打開當前文件夾。。。
echo.  
explorer %cd%
goto exit

rem 4. 終止命令繼續執行
:exit
pause

代碼說明:

這個批處理主要有三個處理過程:

1. vue項目打包;

1)使用call來執行npm run build,這樣打包處理之后就不會自動退出命令行窗口,后續命令才能執行,切記切記。

2)處理結果處理:

IF ERRORLEVEL 1 (
    echo  項目打包出錯了,快去看看怎么回事吧!!!
    echo.  
    goto exit
)
IF ERRORLEVEL 0 (
    echo  打包完成,自動壓縮中。。。
    echo.  
    goto zip
)

去除多余代碼,上邊代碼可以精簡為:

IF ERRORLEVEL 1 goto exit

IF ERRORLEVEL 0 goto zip

這段代碼的意思是:如果上一步命令執行失敗,則執行exit命令塊,成功則執行zip命令塊。

其中:

  • ERRORLEVEL 為上一個命令執行結果,成功返回0,失敗默認返回1;
  • IF ERRORLEVEL 1  的意思是 如果 ERRORLEVEL >= 1,所以判斷失敗的命令要放在判斷成功的命令之前,不可顛倒,切記!
  • exit、zip可以理解為命令塊,類似js中的函數代碼塊,這個命令塊是以:開頭定義的,如 :exit ,這就是一個簡單的命令塊;
rem 4. 終止命令繼續執行
:exit
pause

2. 壓縮成zip文件;

   這里的關鍵代碼如下:

cd /d dist
set
rar=%ProgramFiles%\WinRAR\WinRAR.exe set name=code_%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2% (echo static echo index.html)>R.lst "%rar%" a -afzip "%name%.zip" -ep1 -rr -av -ao -m5 @R.lst -ibck -xR.lst del R.lst

其中:

  • set rar=%ProgramFiles%\WinRAR\WinRAR.exe  很明顯,這行代碼是定義壓縮程序變量;
  • set name=code_%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%  這一行是定義壓縮文件名稱,默認code_yyyyMMddhhmmss格式,可以根據需要自行修改,%date:~0,4%為截取本機日期的年份,%time:~0,2%為截取本機時間的小時,記住寫法,可以用js的截取字符串輔助理解;
  • 下面這行是指定導報目錄或文件:
  • (echo static echo index.html)>R.lst
  • -afzip  是壓縮成zip格式文件(配合rar變量要指向WinRAR.exe才生效)
  • "%name%.zip"  以變量name命名的 

3. 打開當前文件夾(dist)

   explorer %cd%  在資源管理器中打開當前文件夾,方便將壓縮后的打包文件發送給其他開發人員


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM