• 技术文章 >web前端 >js教程

    了解两个强大的Node包管理器:npm 和 yarn

    青灯夜游青灯夜游2022-08-25 11:00:50转载394
    本篇文章带大家了解一下Node.js的两个强大包管理器:npm 和 yarn,希望对大家有所帮助!

    大前端成长进阶课程:进入学习

    学习Node的第一步就是要了解node的包管理器npm,对于npm相信大家并不陌生,因为我们常用它去下载一些包资源

    但因为npm的资源库(https://www.npmjs.com/)在国外,使用它下载资源的速度比较慢,于是就出现了yarn这些第三方node包管理器以及国内的跟npm仓库同步更新的淘宝镜像(cnpm)

    接下来我们就将深入去学习这些内容,让我们开始吧!

    Node系列专栏开始更新了,关注博主,订阅专栏,学习Node不迷路!

    一、npm的使用

    npm是什么

    使用npm前首先要了解什么是npm,在Node系列专栏的第一篇文章【Node.js | 从前端到全栈的必经之路】中提到npmNode的开源仓库,并且是全球最大的开源仓库

    这个仓库地址是:https://www.npmjs.com/

    截至2020年3月17日,npm为大约1200万开发人员提供了130万个软件包,这些开发人员每月下载这些软件包达750亿次

    要想去下载使用npm仓库里面的资源可以使用npm的指令npm开头的,如npm i axios 下载axios)或使用其它第三方的指令(第三方的Node包管理器),如yarn等

    官方说法:npmNodeJS的包管理和分发工具

    包管理就体现在它是个NodeJS的仓库,存放并管理着NodeJS的各种软件包

    分发工具就体现在使用npm的指令去下载npm仓库里的包

    在我们配置NodeJS环境时,npm指令模块是随着NodeJS一起安装的,我们可以通过终端运行npm -v 查看安装的版本:

    在这里插入图片描述

    但如果默认安装的npm版本太老,你也可以自己手动安装更新npm

    npm i npm@latest -g

    @latest 代表安装最新版本,-g代表全局安装,这些npm指令将在后面讲到

    上面可以发现一个神奇的事情,我们正在通过npm安装npm,自己安装自己?

    这其实很好理解,npm的指令模块也是作为一个包存放于npm这个仓库中的,并且这个包的名字就叫npm,见npm地址:https://www.npmjs.com/package/npm

    在这里插入图片描述

    所以我们一般称呼的npm都只是指npm的这个指令模块(这个名为npm的包)

    但其实npm这个词即代指了npm指令模块,也代指了npm这个NodeJS开源仓库本身
    所以就有了我们在npm中(这个npm代表NodeJS的开源仓库)下载npm(这个npm代表名为npm的这个包,这个包是npm的指令模块)的说法

    npm常用指令

    npm的指令非常多,这里只列举出常用的,更多信息可见npm官方文档

    几点补充:

    1. install可简写为i,如:npm install axios可简写为npm i axios

    2. uninstall 可简写为un

    3. 在包名后加@符可指定包的版本,如:npm i md5@1下载1版本的md5,npm i md5@latest表示下载最新版本的md5

    npm指令后缀

    关于-g,--save,--save-dev的具体作用和区别可看我的这篇文章:npm install -g/–save/–save-dev的区别

    npm指令后缀也可以放到包名的前面:npm i -g npm@latest

    依赖包管理

    npm 中,熟知的依赖是 :dependenciesdevDependencies

    除此之外,其实还有包括 :

    在内的几种依赖,这些都是在package.json中进行记录的:

    在这里插入图片描述

    上面我们说npm指令后缀时提到了这几种依赖,这里详细说一下它们代表什么:

    dependenciesdevDependencies

    可查看我的另一篇文章: npm install -g/–save/–save-dev的区别

    peerDependencies

    可查看大佬的文章:一文搞懂peerDependencies

    optionalDependencies

    可选依赖,如果有一些依赖包即使安装失败,项目仍然能够运行或者希望npm继续运行,就可以使用optionalDependencies,另外optionalDependencies会覆盖dependencies中的同名依赖包,所以不要在两个地方都写

    bundledDependencies / bundleDependencies

    打包依赖,bundledDependencies是一个包含依赖包名的数组对象,在发布时会将这个对象中的包打包到最终的发布包里,数组里面的包必须先在devDependenciesdependencies声明过,否则打包会报错

    package.json中需要注意的包版本问题

    通过npm下载的所有包的版本信息都会记录在package.json

    在运行npm i时就会根据package.json中记录的包信息进行下载,它的下载规则如下:

    解决npm速度慢的问题

    因为npm仓库在国外,我们在国内使用npm指令下载这个国外仓库的内容速度会比较慢

    这时我们就可以运行以下指令将npm的仓库源切换到国内的淘宝镜像(cnpm) 的源:

    npm config set registry https://registry.npmmirror.com

    使用npm config get registry查看当前源:

    在这里插入图片描述

    往后再使用npm时就会自动从国内的淘宝镜像仓库下载了,速度就会很快

    淘宝镜像之前的源地址为http://registry.npm.taobao.org,现在更改为了http://registry.npmmirror.com,查看详情

    但我们这样通过修改npm的配置进行源的切换难免会有点麻烦,我们可以全局安装一个nrm来帮助我们快速的切换npm

    使用nrm快速切换npm源

    全局安装nrm

    npm install -g nrm

    执行nrm ls查看可切换的npm源

    在这里插入图片描述

    使用npm use 切换源,如切换到淘宝源:nrm use taobao

    在这里插入图片描述

    使用nrm test 源名测试相应源的响应时间:

    在这里插入图片描述

    可以看到淘宝源的响应速度要比npm的默认源快很多

    中国npm镜像:cnpm

    cnpm是一个完整的npmjs.org镜像,可以用它代替官方版本

    cnpm与官方版本的同步频率为10分钟一次,cnpm官网

    下载cnpm

     npm install -g cnpm --registry=https://registry.npmmirror.com

    cnpm就是淘宝镜像,上面我们使用淘宝镜像只是将npm的源更改为淘宝镜像(cnpm)的源(这个源其实就是指仓库的地址),之后还是通过npm指令进行使用

    而这里是直接下载cnpm这个完整镜像,之后就可以使用cnpm指令而不是npm指令:

    cnpm installcnpm i axios -g
    
    // ....

    cnpm的指令与npm的指令完全相同,使用时直接使用cnpm代替npm就行

    二、yarn的使用

    yarn是Facebook发布的一款依赖管理工具,它比npm更快、更高效

    安装:

    npm install -g yarn

    更新yarn:

    yarn set version latest
    yarn set version from sources

    优点

    yarn常用指令

    yarn指令后缀

    结语

    本篇文章介绍了npmyarn,以及npm派生出的nrmcnpm

    博主一直使用的是npm + nrm切换源的组合,因为这样不仅能保证速度快,能够方便的切换源,还不用下载像cnpmyarn这些额外的包

    npmyarn的内容都比较多,本篇文章只是讲解了最常用的内容,如果想要了解更多可移步到对应的官网进行查看

    更多node相关知识,请访问:nodejs 教程

    以上就是了解两个强大的Node包管理器:npm 和 yarn的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    快捷开发Web应用及小程序:点击使用

    支持亿级表,高并发,自动生成可视化后台。

    上一篇:5个常见的JavaScript内存错误 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• vue底层是用node写的吗• node.js环境变量什么意思• 聊聊Node如何实现前后端数据传输加密解密• 一文解析node中的模块系统• 【整理分享】一些Node.js可运用的测试框架
    1/1

    PHP中文网