EasyDSS打包方法介绍
来源:互联网 发布:java开发重庆薪酬 编辑:程序博客网 时间:2024/05/20 08:43
EasyDSS 高性能流媒体服务器以打成压缩包的形式提供给客户使用, 同时支持 Linux 和 Windows 平台. Linux 平台打成 tar 包, Windows 平台打成 zip 包. 通过 NodeJS 运行打包脚本, 实现了打包过程的自动化.
打包核心库 archiver
用到一个打包的核心库 archiverjs, 这个 archiver 库, 支持 glob 表达式, 可以非常方便的指定 需要打包哪些文件和目录 和 排除哪些文件和目录. 关于 arhiver 对 glob 的支持, 可以点击这里查看. archiver 功能强大到可以指定工作目录 cwd
, 给压缩包指定前缀目录 prefix
.
字节大小格式化输出
pretty-bytes 一个将字节大小格式化成 human-readable 的库. 方便在压缩过程中显示进度信息.
commander 命令行工具
commander 结合 tj 创作的这个命令行工具, 快速生成一个打包的命令, 并将打包的格式做成命令行选项.
以下是执行 node release.js -h
输出
Usage: release [options] [command] Options: -V, --version output the version number -F, --format [tar,zip] archive format [tar] -h, --help output usage information Commands: clean
完整的打包脚本
const archiver = require('archiver');const prettyBytes = require('pretty-bytes');const os = require('os');const path = require('path');const fs = require('fs');const program = require('commander');var dir = path.basename(__dirname);function doArchive() { switch (program.format) { case 'zip': var output = fs.createWriteStream(`${__dirname}/${dir}.zip`); var archive = archiver('tar', { zlib: { level: 9 } }) break; case 'tar': var output = fs.createWriteStream(`${__dirname}/${dir}.tar.gz`); var archive = archiver('tar', { gzip: true }); break; default: console.log('unknow format'); program.help(); break; } output.on('close', function () { console.log(os.EOL + prettyBytes(archive.pointer()) + ' total bytes'); }); archive.on('warning', function (err) { if (err.code === 'ENOENT') { console.log(err); } else { throw err; } }).on('error', function (err) { throw err; }).on('progress', data => { process.stdout.clearLine(); process.stdout.cursorTo(0); process.stdout.write(`${prettyBytes(data.fs.processedBytes)} / ${prettyBytes(data.fs.totalBytes)}`); }) archive.pipe(output); archive.glob(`**`, { cwd: path.resolve(__dirname, "dist"), dot: true, ignore: ['logs/**/*', 'temp/**/*'] },{ prefix: dir }) console.log(`do ${program.format} ...`); archive.finalize();}program.version(require('./package.json').version) .option('-F, --format [tar,zip]', 'archive format [tar]', 'tar')program.command('clean').action(function () { if(fs.existsSync(path.resolve(__dirname, `${dir}.zip`))){ fs.unlinkSync(path.resolve(__dirname, `${dir}.zip`)); } if(fs.existsSync(path.resolve(__dirname, `${dir}.tar.gz`))){ fs.unlinkSync(path.resolve(__dirname, `${dir}.tar.gz`)); } console.log('clean done.'); process.exit();})program.command('*', '', { noHelp: true}).action(function () { program.help();})program.parse(process.argv);doArchive();
阅读全文
0 0
- EasyDSS打包方法介绍
- android批量打包方法介绍
- Python打包方法基本应用方式介绍
- EasyDSS流媒体解决方案之多方式虚拟直播方法
- iOS开发之-四种打包ipa的方法介绍
- 使用ffmpeg循环推流(循环读取视频文件)推送EasyDSS RTMP流媒体服务器的方法
- EasyDSS RTMP流媒体服务器的HTTP接口query url的C++实现方法
- easydss的一种简单的实现hls流量统计的方法
- 软件安装打包介绍
- IOS自动化打包介绍
- IOS自动化打包介绍
- IOS自动化打包介绍
- IOS自动化打包介绍
- IOS自动化打包介绍
- IOS自动化打包介绍
- IOS自动化打包介绍
- IOS自动化打包介绍
- IOS自动化打包介绍
- 机器学习大牛链接收藏
- 51nod1223 分数等式的数量
- python 生成器
- 深度学习入门---基本概念
- Codeforces Round #439 (Div. 2) C. The Intriguing Obsession
- EasyDSS打包方法介绍
- go--map
- CSS中强大的EM
- 17.10.7B组总结
- 纯干货,Spring-data-jpa详解,全方位介绍。
- 机器学习大牛链接收藏
- 约瑟夫环
- 制作html5游戏遇到的问题与心得
- Upload failed (403): Invalid or non-existent authentication information.