项目补丁生成工具 ibird-patch

Apache
JavaScript
跨平台
2017-04-18
yinfxs

ibird-patch,补丁工具

这是一个为了方便生成项目补丁的工具模块,主要的工作就是复制指定文件或文件夹到目标目录,复制后可以选择是否压缩打包。

安装模块

npm i ibird-patch -D

使用步骤

首先你需要新建一个项目配置文件,把所有补丁的配置项都在里面定义好,后面当需要打补丁时,你的工作就是执行这个文件而已,配置文件的内容大致如下所示:

// 0. 引用模块
const patch = require('ibird-patch');

// 1. 配置打包
patch.config({
    output: 'string,输出目录,相对路径或绝对路径皆可',
    compress: 'bool,是否生成压缩文件,默认false',
    sources: {
        "输入相对路径文件1": "string,输出目标路径1",
        "输入绝对路径文件2": "string,输出目标路径2",
        "输入相对目录1": "string,输出目标目录1",
        "输入绝对目录2": "string,输出目标目录2",
        "输入相对目录地址1": {
            "输入选择文件名1": "string,输出目标路径1",
            "输入选择文件名2": "string,输出目标路径2",
            "输入选择目录名1": "string,输出目标目录1",
            "输入选择目录名2": "string,输出目标目录2"
        },
        "!输入相对目录地址1": {
            dest: "输出目标目录1",
            filter: "string或array,需要忽略的文件或目录名称,通过英文空格分隔" // 这里只能指定文件或文件夹的名称
        }
    }
});

// 2. 输出补丁
patch.output();

参数列表

参数对象描述是否必输
outputstring输出目录,相对或绝对路径皆可必输
sourcesobject需要打包的路径对象,key为源文件或目录路径,value为目标文件或目录路径,相对或绝对路径皆可必输
compressboolean是否压缩可选,默认为false
formatstring仅支持zip和tar两种格式可选,默认zip
filenamestring压缩文件名,相对或绝对路径皆可,仅当compress为true时有效可选
optionsobjectarchiverjs初始化对象时的参数,参见高级应用章节可选
callbackfunction打包完成后的回调函数,接收的第一个参数为Error对象,成功生成时该对象为空。需要注意,配置后该参数后不会再出现控制台提示可选

打包配置

使用打包的第一步是初始化配置,配置对象的格式如下所示:

const config = {
    output: '/home/ibird/output', // string,输出目录,相对路径或绝对路径皆可
    compress: false, // bool,是否生成压缩文件,默认false
    sources: {
        'relative/file': "/home/ibird/output/relative/file",
        "/home/ibird/project/absolute/file": "/home/ibird/output/absolute/file",
        "relative/dir": "/home/ibird/output/relative/dir",
        "/home/ibird/project/absolute/dir": "/home/ibird/output/absolute/dir",
        "relative/dir2": {
            "file01": "/home/ibird/output/relative/dir2/file01",
            "file02": "/home/ibird/output/relative/dir2/file02",
            "dir01": "/home/ibird/output/relative/dir2/dir01",
            "dir02": "/home/ibird/output/relative/dir2/dir02"
        },
        "!relative/dir3": {
            dest: "/home/ibird/output/relative/dir3",
            filter: "skipFile1 skipFile2 skipDir1 skipDir2"
        },
        "/home/ibird/project/absolute/dir3": {
            "file01": "/home/ibird/output/absolute/dir3/file01",
            "file02": "/home/ibird/output/absolute/dir3/file02",
            "dir01": "/home/ibird/output/absolute/dir3/dir01",
            "dir02": "/home/ibird/output/absolute/dir3/dir02"
        },
        "!/home/ibird/project/relative/dir4": {
            dest: "/home/ibird/output/relative/dir4",
            filter: "skipFile1 skipFile2 skipDir1 skipDir2"
        }
    }
};

定义好配置之后,需要调用config接口将配置初始化到patch模块中:

patch.config(config);

当你需要打多个环境的补丁时,就需要多次调用config接口,当然也可以一次性批量初始化所有配置:

patch.config([config1, config2, config3]);

输出补丁

待所有配置都初始化成功之后,就可以调用output接口输出补丁文件了:

patch.output();

输出完成后,控制台会出现相应的提示信息:

生成补丁成功:/Users/yinfxs/patch_dest/k11-dist-pro
生成补丁成功:/Users/yinfxs/patch_dest/k11-dist-wosoft
生成补丁成功:/Users/yinfxs/patch_dest/k11-dist-test
生成补丁成功:/Users/yinfxs/patch_dest/just_for_test.zip

高级应用

本章节描述了工具对于以下几个应用场景的支持:

  1. 当你需要打包的文件夹下有很多文件,但你只想要打包其中几个文件或文件夹的时候

  2. 当你需要打包的文件夹下同样有很多文件,但你只想将指定的几个文件或文件夹忽略,其他全部打包的时候

  3. 当你想要打tar.gz格式的压缩包文件

  4. 当你想要更改压缩级别时

如果你想打包一个目录下的某几个文件或文件夹,你可以这样配置sources:

const config = {
    output: '/home/ibird/output',
    sources: {
        "relative/dir2": {
            "file01": "/home/ibird/output/relative/dir2/file01",
            "file02": "/home/ibird/output/relative/dir2/file02",
            "dir01": "/home/ibird/output/relative/dir2/dir01",
            "dir02": "/home/ibird/output/relative/dir2/dir02"
        },
        "/home/ibird/project/absolute/dir3": {
            "file01": "/home/ibird/output/absolute/dir3/file01",
            "file02": "/home/ibird/output/absolute/dir3/file02",
            "dir01": "/home/ibird/output/absolute/dir3/dir01",
            "dir02": "/home/ibird/output/absolute/dir3/dir02"
        }
    }
};

如果你想忽略一个目录下的某几个文件或文件夹,其余全部打包,你可以这样配置sources:

const config = {
    output: '/home/ibird/output',
    sources: {
        "!relative/dir3": {
            dest: "/home/ibird/output/relative/dir3",
            filter: "skipFile1 skipFile2 skipDir1 skipDir2"
        },
        "!/home/ibird/project/relative/dir4": {
            dest: "/home/ibird/output/relative/dir4",
            filter: "skipFile1 skipFile2 skipDir1 skipDir2"
        }
    }
};

如果需要修改压缩相关的配置,可以配置options属性,options属性可参见Archiver文档

的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

git patch 的用法

1使用git format-patch生成所需要的patch: 当前分支所有超前master的提交: git format-patch -M master 某次提交以后的所有patch: git format-patch 4e16 --4e16指的是commit名 从根到指定提...

2015/09/09 19:12
316
0
Git的Patch功能

#本博客已迁移至 [www.0x520.com][1] [1]:http://www.0x520.com UNIX世界的软件开发大多都是协作式的,因此,Patch(补丁)是一个相当重要的东西,因为几乎所有的大型UNIX项目的普通贡献者,...

2013/12/30 17:44
33
0
git: 如何用git-am来合并git format-patch生成的一系列的patch.

这篇文章主要介绍一下git-am 和 format-patch 的使用。 因为在git使用当中, 会有很多时候别人(供应商或者其他的开发人员)发过来一系列的patch,这些patch通常的是类似这样的名字: 0001--...

2012/09/13 16:06
204
0
Git-Patch功能浅析

#Git:Git的Patch功能浅析 UNIX世界的软件开发大多都是协作式的,因此,Patch(补丁)是一个相当重要的东西,因为几乎所有的大型UNIX项目的普通贡献者,都是通过 Patch来提交代码的。作为最重...

2013/11/13 22:40
48
0
生成和打上patch的方法

在团队开发的过程中,经常需要生成patch,或者打上别人提供的patch,那么一般情况是如何操作的呢。 首先生成patch需要有两个工程,一个修改前的A工程,一个修改后的B工程。 使用linux命令dif...

2013/12/02 13:24
10.7K
0
如何利用git制作和提交patch

UNIX世界的软件开发大多都是协作式的,因此,Patch(补丁)是一个相当重要的东西,因为几乎所有的大型UNIX项目的普通贡献者,都是通过 Patch来提交代码的。作为最重要的开源项目之一,Linux...

2015/04/03 10:11
20
0
linux打补丁和git打patch方法

一、linux打补丁方法 1、处理单个文件补丁的方法: # 产生补丁 diff -uN from-file to-file >to-file.patch # 打补丁 patch -p0 < to-file.patch # 取消补丁 patch -RE -p0 < to-file.patch ...

2013/12/10 20:29
266
0
patch 命令用法详解(转)

patch,是打补丁的命令,有很多用法,见帮助#man patch patch -p0 (“p”指的是路径,后面的数字表示去掉路径的第几部分。"0",表示不去掉,为全路径) patch -p1 (“p”后面的数字"1",表示去...

2018/10/24 13:49
20
0
Linux下patch的制作和应用

转自:http://blog.chinaunix.net/u3/100239/showart_1984963.html 首先介绍一下diff和patch。在这里不会把man在线文档上所有的选项都介绍一下,那样也没有必要。在99%的时间里,我们只会用...

2015/04/16 17:59
47
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部