npm指令卸载node_modules
这是前端开发中很常见的操作,下面介绍最常用、最高效的方法。
1.最直接:删除整个 node_modules 文件夹
这是最常用的方式,直接删除项目中所有已安装的依赖包。
Windows 系统(CMD/PowerShell) :
# PowerShell 推荐(强制删除,无确认提示)
Remove-Item -Recurse -Force node_modules
# CMD 命令
rmdir /s /q node_modules
Mac/Linux 系统(终端) :
# 快速删除(-rf 表示递归+强制,无确认提示)
rm -rf node_modules
2.补充:npm 自带清理(非删除文件夹)
果只是想清理 npm 缓存或无用依赖,而非删除整个 node_modules,可使用:
# 清理 npm 全局缓存(解决依赖下载异常)
npm cache clean --force
# 卸载指定单个依赖(保留其他依赖)
npm uninstall 依赖包名 # 例如:npm uninstall axios
3.操作注意事项
- 执行命令前,务必确保终端 / 命令行的当前目录是你的项目根目录(即
node_modules所在目录),否则会删错文件。 rm -rf/Remove-Item -Force是强制删除,删除后无法恢复,确认无误后再执行。- 删除后若需重新安装依赖,只需在项目根目录执行
npm install,会根据package.json重新下载所有依赖。
npm 更新依赖包三种用法
一、基本命令使用
- 查看全局安装的包
npm list -g --depth 0
- 查看安装包
packageName最新发布的版本信息
npm view | info packageName version
- 查看远程安装包
packageName的所有发布的版本信息
npm view | info packageName versions
- 检查过时的安装包
npm outdated [packageName]
版本信息说明
Package 显示包名。若使用了 --long / -l 则还是显示这个包属于 dependencies 还是devDependency
Current 当前依赖包安装版本
Wanted 根据 package.json 包版本前缀规则可以更新的最新版本号
Latest 最新包版本号【默认情况下是最新的,这取决于开发人员的包管理制度】
Location 是该依赖包在所居于的依赖树中所在的位置
package 字体颜色含义
- 红色
package.json中包版本前缀规则可更新的依赖包 - 黄色
package.json中包版本前缀规则不可更新的依赖包
依赖版本认知
项目对应依赖包一般保存在 package.json 文件中,相对应版本号的形式为mojor.minor.patch
major表示非兼容的重大 API 改变(主要的)
minor表示向后兼容的功能性改变(次要的)
patch表示向后兼容的 bug 修正(修补的)
依赖包对应版本号前缀符号含义
*匹配最新的major版本依赖包^匹配最新的minor版本依赖包,eg:1.1.0可以更新匹配所有1.x.x的包,不会更新匹配2.x.x~匹配最新的patch版本依赖包,eg:1.1.0可以更新匹配所有1.1.x的包,不会更新匹配1.2.x- 没有前缀表示固定版本号, 版本不会更新匹配任何其他版本。【需要手动修改
package.json包版本】
二、npm update
-
更新指定依赖安装包【不一定包括
major位的更新,有时需要在package.json手动更改依赖包相应版本号在更新】- -S
dependencies生产环境下依赖安装(--save),默认安装 - -D
devDependencies开发环境下依赖安装(--save-dev)
- -S
npm update packageName (-D | -S)
npm i 与npm update之间的区别
下面描述:
package表示 package.json 依赖版本管理文件lock表示 package-lock.json 锁定依赖版本文件
lock文件存在
-
npm i会按照lock对应包版本进行安装,不会自动升级- 手动更改
package中对应包,lock会按照package前缀版本规范更新到最新版本,package版本为手动版本不变
- 手动更改
-
npm update会按照package对应包版本前缀升级规范安装到最新到版package中对应包版本号改变【按前缀规范最新版与lock中相同则不变,不同则改变】lock中对应包版本号改变
lock文件不存在
-
npm i会按照package.json对应包版本前缀升级规范安装到最新到版本package.json仍然是之前的前缀规范版本号package-lock.json中按版本前缀规范升级到最新的版本
-
npm update和npm i相似- 但会忽略
devDependencies下的对应包更新安装 - 添加了
-D才会在安装更新dependencies下的前提下更新安装devDependencies下对应的依赖包
- 但会忽略
三、npm-check-updates
- 全局安装依赖 npm-check-updates
npm install npm-check-updates -g
- 检查可更新模块
ncu
或
npm-check-updates
- 更新可更新模块【并不建议一次性更新所有可更新依赖包】(更新包括 major 位的更新)
ncu -u [packageName]
四、npm-check
- 全局安装依赖 npm-check
npm install npm-check -g
- 查看可更新包信息
npm-check
- 选择并更新相应的依赖包【空格选择、enter更新】
npm-check -u
五、三种方法的区别
区别:
npm update
npm update [packageName]会同步更新package-lock.json文件中对应的包的版本,不需要重新安装 npm 包
npm-check-updates 和 npm-check
- 二者基本大致相同,只是在更新过程中的一些交互表现形式存在一定的差异
- 更新
package.json文件中可更新的安装包,但不会更新对应的package-lock.json文件中对应的包的版本 - 需要使用下面命令重新安装依赖:
rm -rf package-lock.json && npm i
参考链接