当前位置: 首页 > 软件库 > 开发工具 > >

ibird-patch

项目补丁生成工具
授权协议 Apache
开发语言 JavaScript
所属分类 开发工具
软件类型 开源软件
地区 国产
投 递 者 钱毅
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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();

参数列表

参数 对象 描述 是否必输
output string 输出目录,相对或绝对路径皆可 必输
sources object 需要打包的路径对象,key为源文件或目录路径,value为目标文件或目录路径,相对或绝对路径皆可 必输
compress boolean 是否压缩 可选,默认为false
format string 仅支持zip和tar两种格式 可选,默认zip
filename string 压缩文件名,相对或绝对路径皆可,仅当compress为true时有效 可选
options object archiverjs初始化对象时的参数,参见高级应用章节 可选
callback function 打包完成后的回调函数,接收的第一个参数为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文档

 相关资料
  • 我发现一个 el-form 的小问题,于是我在自己项目里决定为element-ui打个补丁。 项目 vite@3.0.2, vue@2.7.7, pnpm, element-ui@^2.15.14 我运行 pnpm path element-ui@^2.15.14, 然后改了提交了 根目录 patches 文件也生成了 package.json 也有相应的更改 node_modules 相应的代码

  • 本文向大家介绍python 猴子补丁(monkey patch),包括了python 猴子补丁(monkey patch)的使用技巧和注意事项,需要的朋友参考一下 写了一段时间java切回写python偶尔会出现一些小麻烦,比如:在java中自定义对象变成json串很简单,调用一个方法就行,但同样的转换在python中却不太容易实现。在寻找python自定义对象转json串的过程中,接触到了猴子补

  • Git 中的一些命令是以引入的变更即提交这样的概念为中心的,这样一系列的提交,就是一系列的补丁。 这些命令以这样的方式来管理你的分支。 git cherry-pick git cherry-pick 命令用来获得在单个提交中引入的变更,然后尝试将作为一个新的提交引入到你当前分支上。 从一个分支单独一个或者两个提交而不是合并整个分支的所有变更是非常有用的。 在 变基与拣选工作流 一节中描述和演示了

  • 本文向大家介绍Python猴子补丁Monkey Patch用法实例解析,包括了Python猴子补丁Monkey Patch用法实例解析的使用技巧和注意事项,需要的朋友参考一下 属性在运行时的动态替换,叫做猴子补丁(Monkey Patch)。 为什么叫猴子补丁 属性的运行时替换和猴子也没什么关系,关于猴子补丁的由来网上查到两种说法: 1.这个词原来为Guerrilla Patch,杂牌军、游击队,

  • # 给ISO离线集成补丁 大家是否厌倦了每次安装补丁后又要打一堆补丁的感觉?使用微软的Dism打补丁又需要自己收集补丁,而且每个月有新补丁,还有老补丁被取代。现在Dism++重建了Windows Update,直接从WSUS服务器中导出补丁数据库,全自动获取最新更新,自动剔除过期老补丁,在通过CBS判断系统是否需要此更新。下面来看看怎么使用吧。 解压ISO 为了处理ISO里面的install.w

  • 向app store发布新的app版本可能需要一些时间。Tabris.js允许直接向你的用户发布热更新,而无需等待app store更新。 为了符合Apple App Store的规则,修补程序必须“[…] not change the primary purpose of the app by providing features or functionality that are incons