import path from 'path'; import unzipper from 'unzipper'; /** * 解压云函数包,如果已经存在根目录就是云函数名称直接解压,否则增加一层 */ async function unzipCloudFunction(name: string, src: string, dist: string): Promise { const directory = await unzipper.Open.file(src); // 检测下载包里面有没有程序入口 const entry = directory.files.find((item) => { return item.path === `${name}/index.js`; }); const functionDist = entry ? dist : path.join(dist, name); await directory.extract({ path: functionDist, }); return functionDist; } export default unzipCloudFunction;