最近一段时间一直在做桌面混合应用,跟以往做web端不同的是,无法再通过在浏览器上输入内部的域名来随时跟踪开发版本的状况了,只能通过打包代码让产品或领导随时跟踪进度。

这里就涉及到一些问题了:

1,需要打包成zip文件便于传输

2,需要排除一些仅是开发中需要的文件,如node_modules,一些不必要的config等

然后,首当其冲gulp,关于gulp和grunt的比较,流式(stream)操作比较快之类的云云就不多废话了。

一,生成zip文件

使用gulp-zip插件

首先是安装

npm install gulp -g
npm install gulp gulp-zip --save-dev

这里存在两个问题:

  1. 为什么要装两次gulp,一次全局一次本地?全局安装是为了随时随地可以在命令行中使用gulp,命令行并不认识local安装的gulp命令,本地安装是为了维护你当前的项目所依赖的gulp版本,且本地运行更快,当然如果你实在不爽两地安装或者到发布环境再去全局安装gulp显得很多余,你当然可以这样做,在项目根目录下的package.json中这样写:

    {
    ...//此处省略100行
    "main": "src/js/index.js",
    "scripts": {
    "zip": "gulp zip"
    },
    ...//此处省略100行
    }

    如此就可以不用全局安装gulp了,因为npm-script会自动到local的node_modules目录中查找到gulp命令。

  2. 为什么使用--save-dev而不用--save?是因为该插件仅为开发所依赖,不为使用所依赖,说白了就是只有开发者才需要用这个插件,使用者是不需要的,所以使用--save-dev。

安装完了之后,就开始编写gulpfile.js(如果要使用es6语法,需改名为gulpfile.babel.js,并需安装babel,题外话,不展开):

const gulp = require('gulp');
const zip = require('gulp-zip'); gulp.task('zip', function() {
return gulp.src('**/*.*')
.pipe(zip('test.zip'))
.pipe(gulp.dest('export'));
});

gulp的使用问题不在这里赘述。然后就可以在根目录下运行

gulp zip

或使用npm-script方式

npm run zip

然后就在export/下能看到你导出的test.zip文件,里面包含了根目录下的所有文件。

二,排除某些不需要的目录和文件

一些常见的需要排除的目录有node_modules,本地config等,gulp.src提供了强大的路径匹配,我们都知道src能接受数组来做多个匹配。

一开始你可能会这样写:

gulp.src(['!**/node_modules/**/*.*','!config/**/*.*'])

然后就出错了:Error: Missing positive glob

原来反匹配在gulp.src中是不可以写在第一位的,第一项一定是正匹配,于是这样写:

gulp.src(['**/*.*','!**/node_modules/**/*.*','!config/**/*.*'])

一切大吉了,压缩出来的文件不包含这些文件夹里的东西了。也许你要问,就排除个文件夹,为什么不能直接写**/node_modules?据我实验下来,这边过滤的只能是文件而不是一个路径,如果你只写路径,是没有效果的,必须匹配到该路径下的所有文件。

使用gulp在开发过程中合理导出zip文件的更多相关文章

  1. flash 中无法导出swf文件的解决方法

    近一个星期,我的flash cs6一直导不出swf文件,郁闷了好长时间,今天终于在网上找到了解决办法:总结了一下,如下:      一.是把文字打散,变成形状.      二.是把汉字的字体设成fla ...

  2. mysql中导入导出sql文件

    1.导出整个数据库: mysqldump -u用户名 -p密码 数据库名 > 导出的文件名 例:mysqldump -uroot -proot user > user.sql 2.导出一个 ...

  3. 在ASP.NET中实现压缩多个文件为.zip文件,实现批量下载功能 (转载并优化处理篇)

    转自:http://blog.csdn.net/yanlele424/article/details/6895986 这段时间一直在做一个网站,其中遇到了一个问题,就是在服务器端压缩多个服务器端的文件 ...

  4. 通过javascript在网页端解压zip文件并查看压缩包内容

    WEB前端解压ZIP压缩包 web前端解压zip文件有什么用: 只考虑标准浏览器的话, 服务器只要传输压缩包到客户端, 节约了带宽, 而且节约了传输时间, 听起来好像很厉害的说:     如果前端的代 ...

  5. jxl导出Excel文件

    一.java项目实现读取Excel文件和导出Excel文件 实现读取和导出Excel文件的代码: package servlet; import java.io.FileInputStream; im ...

  6. 利用ITextSharp导出PDF文件

    最近项目中需要到处PDF文件,最后上网搜索了一下,发现ITextSharp比较好用,所以做了一个例子: public string ExportPDF() { //ITextSharp Usage / ...

  7. Android Zip文件解压缩代码

    2011-04-01 17:58:52|  分类: Android |举报 |字号 订阅   在Android平台中如何实现Zip文件的解压 缩功能呢? 因为Android内部已经集成了zlib库,对 ...

  8. C# 利用ITextSharp导出PDF文件

    最近项目中需要导出PDF文件,最后上网搜索了一下,发现ITextSharp比较好用,所以做了一个例子: public string ExportPDF() { //ITextSharp Usage / ...

  9. ASP.NET Core导入导出Excel文件

    ASP.NET Core导入导出Excel文件 希望在ASP.NET Core中导入导出Excel文件,在网上搜了一遍,基本都是使用EPPlus插件,EPPlus挺好用,但商用需要授权,各位码友若有好 ...

随机推荐

  1. Window 下安装Redis

    下载地址:https://github.com/dmajkic/redis/downloads. 下载到的Redis支持32bit和64bit.根据自己实际情况选择,将64bit的内容cp到自定义盘符 ...

  2. 或许有一两点你不知的C语言特性

    关键字篇 volatile关键字 鲜为人知的关键字之一volatile,表示变量是'易变的',之所以会有这个关键字,主要是消除编译优化带来的一些问题,看下面的代码 ; int b = a; int c ...

  3. swift官方文档中的函数闭包是怎么理解的?

    官方文档中的16页: numbers.map({ (number: Int) -> Int in let result = * number return result }) 不知道这个怎么用, ...

  4. (C语言)char类型与int类型相加

    #include <stdio.h> int main(void) { ; ; int c = a + b; a += b; printf("c=%d",c); //p ...

  5. IOSアプリケーション開発環境の構築

    IOSアプリケーション開発環境の要求 1) IOSシステムの構造はそのようになっています: 2) ハードウエアの方の要求: コンピューター a)    デュアルコアCPU b)    8 gメモリ(開 ...

  6. python 学习笔记整理

    首先自我批评一下,说好的一天写一篇博客,结果不到两天,就没有坚持了,发现自己做什么事情都没有毅力啊!不能持之以恒.但是,这次一定要从写博客开始来改掉自己的一个坏习惯. 可是写博客又该写点什么呢? 反正 ...

  7. windows server 2003 服务器

    服务器基本知识:可通过我的电脑属性里面查看服务器的系统. 设置固定Ip:本地连接(控制面板-网络连接)使用下面的Ip地址.通过ipconfig/all,查看DNS和ip. 远程访问服务器:我的电脑属性 ...

  8. 小游戏 Lights Out (关灯) 的求解 —— 异或方程组

    Author : Evensgn  Blog Link : http://www.cnblogs.com/JoeFan/ Article Link : http://www.cnblogs.com/J ...

  9. 《Effective C++》内存管理

    如果global new-hander没有成功配置,会抛出一个std::bad_alloc的exception. #include<iostream> #include<new> ...

  10. [QT]构建正则表达式测试

    正则表达式是个强大的东西 暂时先记录一个用法: QString str = "Peak memory: KEY s"; QString data = "Peak memo ...