為什么需要這個?
使用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% 在資源管理器中打開當前文件夾,方便將壓縮后的打包文件發送給其他開發人員