你不知道的npm命令

841 阅读2分钟

看到很多人在用很复杂的npm命令,那就写一篇文章来简化大家的操作。

npm i --save安装依赖

看似很简单,但是里面却包含了很多内容。很多人对--save的理解仅停留安装到运行时依赖。

你是否遇到过——本地安装了react@15的版本,但是现在已经更新到了react@17的版本,你想用npm update去更新包的时候,却不起作用?

那是因为--save会锁定版本号,使得你下次再更新包的时候,不能超过比这个大版本还要新的包。

想要跨版本号更新,只能用@版本号来更新。(目前我找不到更好的解决锁定大版本的办法,有的话可以说一下)

npm i [包名]@version

npm un卸载依赖

卸载依赖可以用npm uninstall,也可以简写成npm un

npm un [包名]

npm up更新依赖

更新依赖可以用npm update,也可以简写成npm up,则更新全部的包。

npm up [包名]

npm outdate手动更新某几个包

npm没有这个功能❌

yarn有yarn upgrade-interactive --latest可以手动选择指定的某几个包更新。

image.png

但是npm只能查看有哪些依赖更新了,而不能手动指定更新。 image.png 还是没有yarn方便,如果要更新其中某几个依赖,还是要手动npm install [包名]。如果需要全部更新,则npm update。

npm repo打开github

用这个指令,可以打开这个包所在的github地址。

npm repo [包名]

npm link调试私有包

比如在D盘写了A模块,并且导出了几个方法。然后你在E盘又写了B文件,此时你想要使用A模块,要么就只能将A模块复制到E盘文件。但是如果只使用一次,也就是做测试的话,可以用link,将A模块添加到全局环境,把它当作一个在本地的npm包引入,这样不用复制文件你也可以使用A模块。A-module

image.png image.png 在D盘新建一个文件,并且暴露出去两个变量(用node规范),然后初始化包,再添加到全局环境。

npm init -y
npm link

出现这个箭头→地址就说明成功了。 image.png 接着操作E盘中的B模块,B-module

image.png image.png

npm link A-module

则会发现多了一个node_modules出来

image.png 然后只需要把它当作模块引入就行了

image.png 不需要使用A的时候,关闭A的连接就行了

npm unlink -g

B也是

npm unlink A-module

则刚才生成的node_modules就删除了。 image.png

npm ls查看安装的依赖列表

npm list 也可以简写成npm ls

npm ls

image.png 但是展现的是所有依赖,嵌套的层级太深了。可以用参数 --depth指定层级,0为第一层,1为第二层,以此类推

npm ls --depth=0

image.png