[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.pswp.cn/bicheng/18649.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18649.shtml
英文地址,請注明出處:http://en.pswp.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;…