[Nodejs]使用adm-zip和fs-extra压缩打包后的文件

在此之前,操作目录、压缩文件是通过scripts来实现的,在windows机器上多有不便,需要通过linux命令行来实现cp、rm命令:

"cpdist": "cp -r ./dist/* ../../qw-portal/assetAllocation/",
"rmdist": "rm -rf ../../qw-portal/assetAllocation/*",
"build:test": "umi build && npm run rmdist && npm run cpdist",

还有使用7z命令来压缩文件,需要先在电脑上安装7z程序:

"build:h5:prod": "umi build && 7z a h5-prod.zip dist",

现在学到了一种新方法,通过nodejs环境来实现文件、文件夹的复制粘贴,还有压缩解压缩等操作,那就是使用adm-zip、fs-extra这两个工具。

首先是编写压缩脚本,在根目录下新建build文件夹,新建index.js:

const AdmZip = require("adm-zip");
const dayjs = require("dayjs");
const fse = require("fs-extra");/** 异步复制文件夹 */
const copyFilesAsync = async (source, target) => {if (fse.existsSync(source)) {await fse.copy(source, target);} else {console.warn(`未找到源文件夹[${source}],检查是否打包失败`);}
}//删除老文件夹,如果文件夹不存在,则不会做任何变更
fse.removeSync('./dist');
//创建文件夹
fse.mkdirpSync('./dist');Promise.all([copyFilesAsync('./packages/assetAllocation/dist/', './dist/assetAllocation/'),copyFilesAsync('./packages/fundDiagnosis/dist/', './dist/fundDiagnosis/'),copyFilesAsync('./packages/investmentAdvisor/dist/', './dist/investmentAdvisor/'),copyFilesAsync('./packages/productSalesCalendar/dist/', './dist/productSalesCalendar/'),copyFilesAsync('./packages/videoReview/dist/', './dist/videoReview/'),
]).then(() => {try {//如果存在老的,则改名作为备份if (fse.existsSync('./qw-portal.zip')) {fse.moveSync('./qw-portal.zip', `./qw-portal_${dayjs().format('YYYYMMDD')}.zip`, { overwrite: true });}} catch (error) {console.log('moveSync fail', error);}// 在内存中创建新的zip文件const distZip = new AdmZip();// 为zip添加本地文件夹distZip.addLocalFolder('./dist/', './qw-portal/');// 生成zip文件distZip.writeZip(`./qw-portal.zip`);
})

最后只需要在scripts中增加命令即可:

"gzip": "node build/index.js",
"build:prod": "pnpm -r --filter=./packages/* run build:prod && npm run gzip",

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/18649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实验八 单区域OSPF路由协议配置

一、实验目的 掌握 OSPF 动态路由协议的配置、诊断方法。 二、实验步骤 1、 运行Cisco Packet Tracer软件,在逻辑工作区放入三台路由器、两台工作站PC及一台笔记本,分别点击各路由器,打开其配置窗口,关闭电源,分别加…

如何选择云服务器

云服务器选择概述 在选择合适的云服务器时,需要综合考虑多个方面的因素,包括但不限于云服务器的类型、配置、价格、性能、安全性、可靠性、扩展性以及服务商的品牌信誉等。以下是根据搜索结果得出的详细分析和建议。 云服务器选择详解 云服务器类型选…

Python装饰器的应用

Python 中的装饰器是一种语法糖,可以在运行时,动态的给函数或类添加功能。装饰器本质上是一个函数,使用 函数名就是可实现绑定给函数的第二个功能 。它的作用就是在不修改被装饰对象源代码和调用方式的前提下为被装饰对象添加额外的功能。 …

策略模式代码

import java.util.*; enum TYPE { NORMAL,CASH_DISCOUNT,CASH_RETURN}; interface Cashsuper { public double acceptCash(double money); } class CashNormal implements CashSuper{// 正常收费子类 public double accptCash(double money){ return money; …

微信小程序如何在公共组件中改变某一个页面的属性值

需求 公共组件A改变页面B的属性isShow的值。 思路 首先目前我不了解可以直接在组件中改变页面的值的方法,所以我通过监听的方式在B页面监听app.js的某一属性值的改变从而改变B页面的值,众所周知app.js的某一属性值是很容易就能更改的。 app.js globa…

Ownips+Coze海外社媒数据分析实战指南

目录 一、引言二、ISP代理简介三、应用实践——基于Ownips和coze的社媒智能分析助手3.1、Twitter趋势数据采集3.1.1、Twitter趋势数据接口分析3.1.2、Ownips原生住宅ISP选取与配置3.1.3、数据采集 3.2、基于Ownips和Coze的社媒智能助手3.2.1、Ownips数据采集插件集成3.2.2、创建…

解锁未标记图像的力量:深入探索计算机视觉中无监督卷积神经网络

引言 近年来,计算机视觉领域取得了显著进步,这在很大程度上得益于深度学习,尤其是卷积神经网络(CNN)的发展。这些强大的模型在图像分类、目标检测和分割等任务上表现出色,主要依靠大规模标记数据集进行监督…

Flutter 中的 FadeTransition 小部件:全面指南

Flutter 中的 FadeTransition 小部件:全面指南 在 Flutter 中,动画是一种吸引用户注意力并提供流畅用户体验的强大工具。FadeTransition 是 Flutter 提供的一个动画小部件,它允许子组件在不透明度上进行渐变,从而实现淡入和淡出效…

git基础 -- 判断 Git 输入名称是分支名还是标签名

判断 Git 输入名称是分支名还是标签名 背景 在使用 Git 进行版本控制时,有时需要判断一个给定的名称是分支名还是标签名。分支和标签在 Git 中是两种不同的引用类型,但它们的名称空间是独立的,因此同一个名称可以同时存在于分支和标签中。为…

Linux备份脚本

作用 Linux文件备份的作用较多,推荐以下几种: 保护文件:备份可以帮助用户保护文件,防止文件被意外删除或损坏。保证系统安全和应用安全:Linux系统管理人员对系统和业务应用要有一个合理的备份恢复策略,完…

【Unity入门】认识Unity编辑器

Unity 是一个广泛应用于游戏开发的强大引擎,从 1.0 版本开始到现在,其编辑器的基本框架一直保持稳定。其基于组件架构的设计,使得界面使用起来直观且高效。为了更好地理解 Unity 的界面,我们可以将其比喻为搭建一个舞台。以下是对…

【AI+chat】推荐一款基于大模型的智能对话机器人,支持微信公众号、企业微信应用、飞书、钉钉接入

之前写了一篇文章, coze配置 kimichat集成到微信公众号聊天 【AIchat】手把手配置kimichat集成到微信公众号中对话聊天 。 有同学私信我有没有开源项目, 这里推荐一款chatgpt-on-wechat。 官方git地址:https://github.com/zhayujie/ch…

Yann LeCun 和 Elon Musk 就 AI 监管激烈交锋

🦉 AI新闻 🚀 Yann LeCun 和 Elon Musk 就 AI 监管激烈交锋 摘要:昨天,Yann LeCun 和Elon Musk 在社交媒体就人工智能的安全性和监管问题展开激烈辩论。LeCun 认为目前对 AI 的担忧和监管为时过早,主张开放和共享。而…

Ps:消失点滤镜 - 透视平面和网格

Ps菜单:滤镜/消失点 Filter/Vanishing Point 快捷键:Ctrl Alt V “消失点”滤镜中的透视平面 Plane和网格 Grid用于在编辑图像时保持正确的透视效果。 只有定义了与图像透视对齐的矩形平面,才能在消失点中进行编辑。平面的精确度确定了能否…

vue数字翻盘,翻转效果

数字翻转的效果 实现数字翻转的效果上面为出来的样子 下面为代码&#xff0c;使用的时候直接引入&#xff0c;还有就是把图片的路径自己换成自己或者先用颜色替代&#xff0c;传入num和numlength即可 <template><div v-for"(item, index) in processedNums&quo…

MOS管开关电路简单笔记

没错&#xff0c;这一篇还是备忘录&#xff0c;复杂的东西一律不讨论。主要讨论增强型的PMOS与NMOS。 PMOS 首先上场的是PMOS,它的导通条件&#xff1a;Vg-Vs<0且|Vg-Vs>Vgsth|&#xff0c;PMOS的电流流向是S->D,D端接负载&#xff0c;S端接受控电源。MOS管一般无法…

Java Web集成开发环境Eclipse的安装及web项目创建

第一步&#xff1a;下载安装JDK http://t.csdnimg.cn/RzTBXhttp://t.csdnimg.cn/RzTBX 第二步&#xff1a;下载安装Tomcat Tomcat下载安装以及配置_tomcat下载配置-CSDN博客文章浏览阅读2.5k次&#xff0c;点赞2次&#xff0c;收藏13次。Tomcat下载安装及其配置_tomcat下载配…

云WAF在应对新兴网络威胁时具备哪些优势?

云WAF&#xff08;Cloud Web Application Firewall&#xff09;是一种基于云计算技术的网络安全防护系统&#xff0c;它能够实时监测并分析网络流量&#xff0c;有效识别并防御各种Web攻击&#xff0c;如SQL注入、跨站脚本攻击&#xff08;XSS&#xff09;、文件上传漏洞等。云…

QSqlDatabase: QMYSQL driver not loaded

这个错误表明Qt没有加载MySQL驱动程序。在使用MySQL数据库之前&#xff0c;你需要确保已经正确加载了相应的数据库驱动程序。 首先&#xff0c;确保你的应用程序已经链接了Qt的SQL模块。在你的.pro文件中&#xff0c;添加如下行&#xff1a; QT sql 然后&#xff0c;确保你的…

【云原生】kubernetes中的认证、权限设置--RBAC授权原理分析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…