为什么需要这个?

使用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%  在资源管理器中打开当前文件夹,方便将压缩后的打包文件发送给其他开发人员

vue-webpack项目自动打包压缩成zip文件批处理的更多相关文章

  1. Vue -- webpack 项目自动打包压缩成zip文件

    这段时间用 Vue2.0 开发项目,每次打包都会用到 npm run build 命令,但是每次部署时给后端发包都要手动zip压缩,这样一两次还行,但遇到项目板块测试和临时加急功能测试的时候,一天可能 ...

  2. linux下压缩成zip文件解压zip文件

    linux  zip命令的基本用法是: zip [参数] [打包后的文件名] [打包的目录路径] linux  zip命令参数列表: -a     将文件转成ASCII模式 -F     尝试修复损坏 ...

  3. PPT文件流转为图片,并压缩成ZIP文件输出到指定目录

    实现流程: 接收InputStream流->复制流->InputStream流转为PPT->PPT转为图片->所有图片压缩到一个压缩文件下 注意: 1.PPT文件分为2003和 ...

  4. vue -- vue-cli webpack项目打包后自动压缩成zip文件

    用vue2.0开发项目,使用npm run build 命令 ,但是只会生成dist文件夹,以下是生成zip压缩包方法 1,插件安装 webpack插件安装 filemanager-webpack-p ...

  5. .net 生成html文件后压缩成zip文件并下载

    这里只做一个简单的实例 public ActionResult Index() { string path = Server.MapPath("/test/");//文件输出目录 ...

  6. QT发布的EXE打包压缩成单文件

    Enigma virtual box 是免费的软件虚拟化工具,它可以将多个文件封装到您的应用程序主文件,这样您的软件就可以制作成为单文件的绿色软件. enigma virtual box 支持所有类型 ...

  7. (转)windows环境vue+webpack项目搭建

    首先,vue.js是一种前端框架,一般利用vue创建项目是要搭配webpack项目构建工具的,而webpack在执行打包压缩的时候是依赖node.js的环境的,所以,要进行vue项目的开发,我们首先要 ...

  8. java 实现Excel压缩成Zip导出

    1 概述 在web项目中常见的一种场景就是将文件导出为Excel,但是当需要导出多个Excel时,使用者将频繁操作,这样就严重降低了项目的友好交互性以及易用性,那么怎么才能优雅的解决这个问题呢?笔者今 ...

  9. Java实现将文件或者文件夹压缩成zip

            最近碰到个需要下载zip压缩包的需求,于是我在网上找了下别人写好的zip工具类.但找了好多篇博客,总是发现有bug.因此就自己来写了个工具类.         这个工具类的功能为: ( ...

随机推荐

  1. Collection List接口

    常用的:ArrayList,Vector 特点:有序的,允许多个空值

  2. 死无对证:tomcat7 + 中文cookie + goLang

    查了下资料,很多人遇到这个问题,但是goLang使用得相对少 java.lang.IllegalArgumentException: Control character in cookie value ...

  3. 机器学习进阶-图像梯度计算-scharr算子与laplacian算子(拉普拉斯) 1.cv2.Scharr(使用scharr算子进行计算) 2.cv2.laplician(使用拉普拉斯算子进行计算)

    1. cv2.Scharr(src,ddepth, dx, dy), 使用Scharr算子进行计算 参数说明:src表示输入的图片,ddepth表示图片的深度,通常使用-1, 这里使用cv2.CV_6 ...

  4. jquery接触初级----jquery 对象和Dom对象

    1. DOM 对象,每一份DOm对象(Document Object model)都可以表示成一棵树,一个基本的网页如下: <!DOCTYPE html> <html lang=&q ...

  5. U3D MemoryProfiler

    MemoryProfiler Unity 5.3a4 has a new very lowlevel memory profiler API. It can tell you which object ...

  6. Kubernetes 1.8.x 全手动安装教程----转自Kubernetes中文社区(部分内容根据实验环境做了些修改,特此感谢Kubernetes中文社区)

    Kubernetes 提供了许多云端平台与操作系统的安装方式,本章将以全手动安装方式来部署,主要是学习与了解 Kubernetes 创建流程.若想要了解更多平台的部署可以参考 Picking the ...

  7. 测试Array对象的sort方法的作用。将1985,1970,1999,1998,2000,1963这些年份按升序输出。

    <script type="text/javascript">var years = new Array(1985,1970,1999,1998,2000,1963); ...

  8. serclet监听器

    1:监听servlet上下文 2:监听会话 3:监听请求 使用,必须是实现对应的接口,然后在web.xml中配置自己写的监听器的实现类 过滤器之后,servlet之前(有待深入研究) 下一集预告:过滤 ...

  9. C# windows服务:如何检测指定的Windows服务是否启动

    public void CheckServerState(string ServiceName) { ServiceController[] service = ServiceController.G ...

  10. (Unity4.7)assetbundle 坑爹总结

    使用版本Unity4.7 一.关于依赖打包 1.当一个被打包的资源A引用了其他的资源B,并且没有被打成一个包时,要选用[BuildAssetBundleOptions.CollectDependenc ...