NodeJS之npm、cnpm、npx、yarn
一、npm
1,概念
2,常用命令
npm help 查看npm命令列表
npm -l 查看各个命令的简单用法
npm -v 查看npm的版本
npm config list -l 查看npm的配置
npm init -y 初始化项目
npm config set registry http://registry.npm.taobao.org 设置为淘宝镜像源
npm list 列出安装的模块
npm info 查看模块具体信息
npm install/i $module@$version [-global/-g] [--save]/[-S] [--save-dev]/[-D] [-f] 安装包
全局安装会安装到node安装目录的node_modules并且安装的模块命令在系统环境变量中,而本地安装只会安装到本项目的node_modules中。
[--save]/[-S]代表是否将依赖信息添加到package.json的dependencies中。
[--save-dev]/[-D]代表将依赖信息以开发模式添加到package.json的devDependencies中。
-f代表无论以前是否安装过某模块,都重新安装
npm uninstall $module 删除包,参数同install
npm update 更新包,参数同install
npm install 安装 dependencies 字段和 devDependencies 字段中的所有模块
npm [run] $script 执行package.json 文件scripts 字段中的脚本
npm bin 列出当前项目可执行脚本目录
npm config set prefix "E:/nodejs/npm_global" 修改npm全局包路径
npm config set cache "E:/nodejs/npm_global/npm_cache" 修改npm全局包缓存路径
查看则是把set改成get
二、cnpm
1,概念
淘宝团队做的国内镜像,因为npm的服务器位于国外可能会影响安装。
2,命令
npm install cnpm -g --registry=https://registry.npm.taobao.org 安装cnpm
npm config get registry 查看正在使用的镜像地址
npm config set registry https://registry.npm.taobao.org 设置新镜像地址
cnpm其他命令同npm
三、npx
1,概念
npx是npm5.2之后发布的一个命令。官网说它是“execute npm package binaries”,就是执行npm依赖包的二进制文件,简而言之,就是我们可以使用npx来执行各种命令。使用npx可以在命令行直接执行本地已安装的依赖包命令,不用在scripts脚本写入命令,也不用麻烦的去找本地脚本。使用npx,可以在不全局安装依赖包的情况下,运行命令,而且运行后不会污染全局环境。
2,运行原理
step1:去node_modules/.bin路径检查npx后的命令是否存在,找到之后执行;
step2:找不到,就去环境变量$PATH里面,检查npx后的命令是否存在,找到之后执行;
step3:还是找不到,自动下载一个临时的依赖包最新版本在一个临时目录,然后再运行命令,运行完之后删除,不污染全局环境。
四、yarn
1,概念
Yarn是由Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 ,正如官方文档中写的,Yarn 是为了弥补 npm 的一些缺陷而出现的。
2,对比npm
npm缺点:
1:npm install的时候巨慢。特别是新的项目拉下来要等半天,删除node_modules,重新install的时候依旧如此。
2:同一个项目,安装的时候无法保持一致性。由于package.json文件中版本号的特点,下面三个版本号在安装的时候代表不同的含义。
-"5.0.3" : 表示安装指定的5.0.3版本;
-"~5.0.3" :表示安装5.0.x中最新的版本;
-"^5.0.3" :表示安装5.X.X中最新的版本,
3:安装的时候,包会在同一时间下载和安装,中途某个时候,一个包抛出错误,但是npm会继续下载和安装包。因为npm会把所有日志输出到终端,有关错误包的信息就会在一大堆npm打印的警告中丢失掉,并且你不会注意到实际发生的错误。
yarn优点:
1:并行安装:无论 npm 还是 Yarn 在执行包的安装时,都会执行一系列任务。npm 是按照队列执行每个 package,也就是说必须要等到当前 package 安装完成之后,才能继续后面的安装。而 Yarn 是同步执行所有任务,提高了性能。
2:离线模式:如果之前已经安装过一个软件包,用Yarn再次安装时之间从缓存中获取,就不用像npm那样再从网络下载了。
3:安装版本统一:为了防止拉取到不同的版本,Yarn 有一个锁定文件 (lock file) 记录了被确切安装上的模块的版本号。每次只要新增了一个模块,Yarn 就会创建(或更新)yarn.lock 这个文件。这么做就保证了,每一次拉取同一个项目依赖时,使用的都是一样的模块版本。npm 其实也有办法实现处处使用相同版本的 packages,但需要开发者执行 npm shrinkwrap 命令。这个命令将会生成一个锁定文件,在执行 npm install 的时候,该锁定文件会先被读取,和 Yarn 读取 yarn.lock 文件一个道理。npm 和 Yarn 两者的不同之处在于,Yarn 默认会生成这样的锁定文件,而 npm 要通过 shrinkwrap 命令生成 npm-shrinkwrap.json 文件,只有当这个文件存在的时候,packages 版本信息才会被记录和更新。
3:更简洁的输出:npm 的输出信息比较冗长。在执行 npm install <package> 的时候,命令行里会不断地打印出所有被安装上的依赖。相比之下,Yarn 简洁太多:默认情况下,结合了 emoji直观且直接地打印出必要的信息,也提供了一些命令供开发者查询额外的安装信息。
4:多注册来源处理:所有的依赖包,不管他被不同的库间接关联引用多少次,安装这个包时,只会从一个注册来源去装,要么是 npm 要么是 bower, 防止出现混乱不一致。
5:更好的语义化: yarn改变了一些npm命令的名称,比如 yarn add/remove,感觉上比 npm 原本的 install/uninstall 要更清晰。
npm5.0的改进:
默认新增了类似yarn.lock的 package-lock.json;
git 依赖支持优化:这个特性在需要安装大量内部项目(例如在没有自建源的内网开发),或需要使用某些依赖的未发布版本时很有用。在这之前可能需要使用指定 commit_id 的方式来控制版本。
文件依赖优化:在之前的版本,如果将本地目录作为依赖来安装,将会把文件目录作为副本拷贝到 node_modules 中。而在 npm5 中,将改为使用创建 symlinks 的方式来实现(使用本地 tarball 包除外),而不再执行文件拷贝。这将会提升安装速度。目前yarn还不支持。
总结:
在npm5.0之前,yarn的优势特别明显。但是在npm之后,通过以上一系列对比,我们可以看到 npm5 在速度和使用上确实有了很大提升,值得尝试,不过还没有超过yarn。
3,命令
另一篇博客有关于yarn的详述,点击这里。
NodeJS之npm、cnpm、npx、yarn的更多相关文章
- npm cnpm npx nvm 傻傻分不清
用过 npm cnpm吗?知道 npx nvm 吗? 唔~ npm npm 的全称是 Node Package Manager 是 JavaScript 世界的包管理工具,并且是 Node.js 平台 ...
- 大话npm,cnpm和yarn
npm:基于node.js的包管理工具; 常用命令 npm install 包名; 缺点:因服务器在国外,所以下载包的速度超级慢,所以出现了cnpm和yarn cnpm:跟npm是一样的,这是淘宝出的 ...
- windows安装 Nodejs,NPM, CNPM
1, dowload Nodejs from : http://nodejs.cn/download/ 下载完毕后,可以安装node,建议不要安装在系统盘(本例安装在 D:\vueProject) ...
- npm cnpm node yarn
1.yarn: windows 下需要下载msi文件, 2.npm,node 安装绿色版本 3.cnpm安装:npm install -g cnpm --registry=https://regist ...
- 【Nodejs】npm cnpm 淘宝镜像
一.通过命令配置 1. 命令 npm config set registry https://registry.npm.taobao.org 2. 验证命令 npm config get regist ...
- 如何在Window下安装node\npm\cnpm,并安装vue.js,创建项目
1.安装node.js node.js的官方地址为:https://nodejs.org/en/download/. 根据windows版本后,选择要下载的安装包,下载完毕,按照windows一般应用 ...
- centos7 yum 安装nodejs、npm、cnpm、pm2、yarn
一.环境准备 1.1 查看系统环境 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [ ...
- npm 加速之 yarn cnpm pnpm
npm 加速之 yarn cnpm pnpm 有没有感觉到使用 npm 的时候很慢? 安装速度 几Kb/s 不说, 还装着装着出错了, 奇奇怪怪的问题.这种情况大多数还是因为网络的原因, 很多时候虽然 ...
- npm init & npx create & yarn create
npm init & npx create & yarn create https://create-react-app.dev/docs/getting-started/#creat ...
- npm cnpm yarn 安装
安装node.js,其中已经集成了npm,可以将npm切换到国内镜像 $ npm config set registry https://registry.npm.taobao.org -- 配置后可 ...
随机推荐
- Vue-组件传值:子传父和兄弟组件间常见的传值方式
前言 上篇介绍了我对vue组件化的理解和父组件对子组件传值的方式,这篇介绍下常见的子传父和兄弟组件间的传值方式 目录 子组件向父组件传值 任意组件间的传值方式 正文 子组件向父组件传值 关键知识点:$ ...
- ATS push cache 测试
测试 ATS 注入缓存 参考了: http://serverfault.com/questions/471684/push-content-to-apache-traffic-servers-cach ...
- SQL学习(三) 复杂查询
我们本节考察的数据库如下所示: 3.1 创建出满足下述三个条件的视图(视图名称为 ViewPractice5_1).使用 product(商品)表作为参照表,假设表中包含初始状态的 8 行数据. 条件 ...
- LightningChart解决方案:XY和3D图表(Polymer Char GPC-IR®-工程案例)
LightningChart解决方案:XY和3D图表(Polymer Char GPC-IR-工程案例) 所在行业:石化公司成立时间:1992年LightningChart解决方案:XY和3D图表 P ...
- linux操作系统及常用命令
GUN:GUN is Not UnixGPL:General Public License.通用公共许可证,版权 Copyright,Copyleft 开源协议LGPL:lesserGPLv2GPLv ...
- C#中使用NPOI提示(找到的程序集清单定义与程序集引用不匹配)
问题 找到的程序集清单定义与程序集引用不匹配. (异常来自 HRESULT:0x80131040) 描述 使用NPOI导出word文档,需要C#的解压缩类,所以引用了ICSharpCode.Sharp ...
- [.NET] - 初步认识AutoMapper
初步认识AutoMapper AutoMapper 初步认识AutoMapper 前言 手动映射 使用AutoMapper 创建映射 Conventions 映射到一个已存在的实例对象 前言 通常 ...
- 浅谈 WebRTC 的 Audio 在进入 Encoder 之前的处理流程
在 WebRTC 中,Audio 数据在被送入编码器之前,有 2 大部分需要特别关注,一是数据采集,二是 Audio Processing. 作者:方来,技术专家,从事 voip 应用开发. 数据采集 ...
- Centos7 根目录存储空间扩展方法
Centos7 根目录存储空间扩展方法 一.首先通过 df -hl 命令查看磁盘占用情况,其中根目录已经被占满,此时需要对其进行扩容 二.针对虚拟机环境的centos7系统根存储空间扩容,可利 ...
- vue3系列:vue3.0自定义弹框组件V3Popup|vue3.x手机端弹框组件
基于Vue3.0开发的轻量级手机端弹框组件V3Popup. 之前有分享一个vue2.x移动端弹框组件,今天给大家带来的是Vue3实现自定义弹框组件. V3Popup 基于vue3.x实现的移动端弹出框 ...