#!/usr/bin/env node
import path from 'path';
import tar from 'tar';
import fs from 'fs';
const cwd = process.cwd();
const cwdName = path.basename(cwd);
const bundleFileNames = [`${cwdName}.tar.gz`, `${cwdName}.tgz`];
const bundleFileName = bundleFileNames[0];
const bundleFileList = getFileAndFolderList(cwd);
await bundleFiles(bundleFileName, bundleFileList, cwdName);
moveFileToPrevDir(bundleFileName);
console.log(`生成成功, 文件保存为在上级目录的 ${bundleFileName}`);
async function bundleFiles(bundleFileName, bundleFileList, prefix) {
const options = {
gzip: true,
file: bundleFileName,
sync: true,
}
if (prefix) options.prefix = prefix;
return await tar.create(options, bundleFileList);
}
function getFileAndFolderList(dir, options = {}) {
let list = fs.readdirSync(dir);
list = list.filter(item => {
if (bundleFileNames.includes(item)) return false;
if (options.excludeGit && item === '.git') {
return false;
}
return true;
})
return list;
}
function moveFileToPrevDir(fileName) {
fs.renameSync(fileName, `../${fileName}`);
}