0.3.0 • Published 5 years ago

@front-lib/deploy-base v0.3.0

Weekly downloads
4
License
ISC
Repository
github
Last release
5 years ago

deploy-base

差异化上传的基础类

// 安装为正式依赖
npm i @front-lib/deploy-base -S

// 安装为环境依赖
npm i @front-lib/deploy-base -D

用法

引入基础类

const DeployBase = require('@front-lib/deploy-base')

继承并扩展基础类

class MyDeploy extends DeployBase {
  // 实现同步单个文件, 必须实现
  async syncFile ({ uri, id, hash, current, total, times }) {
    // uri为文件的绝对路径
    // id为文件在localRoot下的路由
    // hash为文件内容的 md5+sha1
    // current 当前是第几个文件
    // total 需要上传的文件总数
    // times 当前文件是第几次重试,从1开始
  }
  // 实现同步单个目录
  async syncDoc ({ uri, id, current, total, times }) {
    // uri为目录的绝对路径
    // id为文件在localRoot下的路由
    // current 当前是第几个文件
    // total 需要上传的文件总数
    // times 当前文件是第几次重试,从1开始
  }
  // 获取远程的地图文件
  async getRemoteMap () {
    // 读取远程地图文件,并返回json数据
    return {
      dirs: {},
      files: {}
    }
  }
  // 把地图文件写到远程
  async setRemoteMap ({ dirs, files }) {}
}

实例化继承类并执行deploy方法

const ins = new MyDeploy({
  // 一共可以重试上传的次数, 默认一共尝试3次上传,如果全部失败则中断上传
  times: 3,
  
  // 要deploy的文件夹根目录
  localRoot: path.join(__dirname, 'path/to'),

  // localRoot 下要忽略的文件,遵守glob规则,支持数组/字符串格式
  // ignores: '**/.git/**',
  ignores: ['**/.git/**', 'node_modules/**'],

  // 是否把文件内容hash后与远程地图里面的文件hash比较后,只deploy有变化的文件
  // 如果设置为false,则不与远程地图比较,全部重新deploy
  compare: true,

  // glob的options设置
  glob: {}
})

async function foo () {
  // 开始 deploy
  await ins.deploy()
  // deploy 结束
}
foo()

相关

ignores与glob pattern关系

  • 如果ignores为字符串,则直接作为glob pattern
  • 如果ignores为数组且长度为1,则ignores[0]作为glob pattern
  • 如果ignores为数组,则经'{' + ignores.join(',') + '}'处理后作为glob pattern

ignores参数怎么配置?

glob pattern文档

glob参数怎么配置?

glob options文档