一文搞懂npm、cnpm、nvm、nrm以及npx的区别

954 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情

什么是npm?

npm是node package manager的简称,中文意思是node包管理工具,主要用于安装项目中的npm市场中的依赖包

使用场景:
    npm是一个node包管理工具,也是前端开发者经常使用的依赖包安装管理工具,使用较普遍,可进行全局安装和局部安装

什么是cnpm?

cnpm也是阿里推出的一个node包管理工具,它是一个完整官方npm.org镜像,完全可以代替官方版本,由于官方的服务器在国外,国内开发者使用时下载依赖包会比较慢,所以阿里推出了cnpm工具,该工具会每隔10分钟同步一次官方镜像源,以保证尽量与官方服务同步。当使用cnpm安装的时候发现安装的模块还没有同步过来, cnpm会自动在后台进行同步, 并且会让使用者从官方进行安装. 下次再安装这个模块的时候, 就会直接从cnpm安装了。

使用场景:
    国内开发者需要快速安装依赖包开发时

什么是nvm?

nvm是node version manager的简称,中文意思是node版本管理工具,主要用于在同一台机器中,同时安装多个node版本,动态切换使用

使用场景:
    在项目开发中,经常会遇到不同的项目依赖包,对node的版本有特殊要求,所以,不可能频繁的卸载安装指定的node版本,当前场景下,我们可以采用nvm下载安装多个node版本,根据需要动态切换所需版本

什么是nrm?

nrm是node registry manager的简称,中文意思是node安装源管理工具,主要用于在同一台机器中,管理多个不同的安装源,动态切换使用

常用命令:
    nrm ls 查看所有镜像源
    nrm use <registry> 切换镜像源
    nrm add <registry> <address> 自定义新增镜像源
    nrm del <registry> 删除镜像源

什么是npx?

npx是npm从5.2.0版本开始,新增的一个命令,主要用于命令行的寻址,避免安装不必要的node包

原理:运行npx命令的时候,会自动到node_modules/.bin路径和全局环境变量$PATH里面,检查命令是否存在,如果不存在,npx会将所需包先下载到一个临时目录,使用之后再删除

场景一:执行项目中已安装包A,如查看版本
    普通方法:./node_modules/.bin/A --version
    npx方法:npx A --version

场景二:测试未安装包B,如查看版本
    普通方法:采用npm全局安装或局部安装包B,安装成功后,执行相关命令,测试完成后卸载依赖包
        全局安装:B --version
        局部安装:./node_modules/.bin/B --version
    npx方法:npx B --version
  

总结

除nvm是针对node包多版本进行管理的工具外,nrm以及cnpm通常用于切换npm镜像源进行使用的,cnpm除了不能执行发布命令外,其他命令与npm无异(看到网上有讨论不建议使用cnpm,个人感觉,工具的使用因人而异吧),此外,nrm比较特殊,主要用于便捷执行命令,避免全局安装过多的依赖包