彻底快速删除node_modules文件,避免缓存
在windows下安装了一个包,但是在删除node_modules文件夹时提示该文件夹包含名称过长删除不了或者删除过慢,还带有缓存。怎么才能彻底删除这个文件夹?
方法一:
1.安装npm包–rimraf
npm install rimraf -g
// 全局安装
2.在cmd指令下,进入所需删除的node_modules文件夹的位置,再输入指令
rimraf node_modules
// 删除
方法二:
另外在命令控制台下可以用 rmdir /s/q your_app_dir
来删除
以修改 vue-echarts包为例
1、在node_modules中查看该包实际安装的版本,假设为6.1.0版本
2、在package.json中锁定该版本
"vue-echarts": "6.1.0",
3、先删除项目中的node_modules包
安装或升级pnpm不小于7.4.0版本
npm install -g pnpm
4、运行 pnpm patch <pkg name>@<version>
pnpm patch vue-echarts@6.1.0
该命令将导致一个包被提取到一个可以随意编辑的临时目录中。
5、在该临时目录中修改三方的包
完成更改后,运行pnpm patch-commit <path>
(path为临时目录地址)以生成补丁文件并通过该字段<path>
将其注册到您的顶级清单中
运行后会在顶级目录
①、package.json中出现
"pnpm": {
"patchedDependencies": {
"vue-echarts@6.1.0": "patches/vue-echarts@6.1.0.patch"
}
}
②、多了一个patches目录
6、重新安装依赖pnpm i
会发现node_modules中对应的vue-echarts包相应的内容已经被更改
使用vue-echarts遇到的一个坑
vue-echarts 6.1.0版本使用图表配置autoresize=true时,在监控软件上会报ResizeObserver loop limit exceeded,查看源码发现是因为useAutoresize中throttle使用了防抖,造成图表的resize过于频繁的进行了更改。
function useAutoresize(chart, autoresize, root) {
var resizeListener = null;
vueDemi.watch([root, chart, autoresize], function (_a, _, cleanup) {
var root = _a[0], chart = _a[1], autoresize = _a[2];
if (root && chart && autoresize) {
resizeListener = core.throttle(function () {
chart.resize();
}, 100);
addListener(root, resizeListener);
}
cleanup(function () {
if (resizeListener && root) {
removeListener(root, resizeListener);
}
});
});
}
修改为
function useAutoresize(chart, autoresize, root) {
var resizeListener = null;
vueDemi.watch([root, chart, autoresize], function (_a, _, cleanup) {
var root = _a[0], chart = _a[1], autoresize = _a[2];
if (root && chart && autoresize) {
resizeListener = core.throttle(function () {
chart.resize();
}, 300,true);//1、加入true 让throttle用节流控制的方式运行,2、增加时间间隔变为300ms
addListener(root, resizeListener);
}
cleanup(function () {
if (resizeListener && root) {
removeListener(root, resizeListener);
}
});
});
}