Node.js第三方模块

【图书介绍】《Node.js+MongoDB+Vue.js全栈开发实战》-CSDN博客

《Node.js+MongoDB+Vue.js全栈开发实战(Web前端技术丛书)》(邹琼俊)【摘要 书评 试读】- 京东图书 (jd.com)

2.3.1 什么是第三方模块

别人写好的、具有特定功能的、我们能直接使用的模块即为第三方模块。由于第三方模块通常由多个文件组成并被放置在一个目录中,因此又叫包。

第三方模块有两种存在形式:

  1. 以.js文件的形式存在,提供实现项目具体功能的API接口。
  2. 以命令行工具形式存在,辅助项目开发。

2.3.2 获取第三方模块

我们可以从https://www.npmjs.com/中获取第三方模块,它是第三方模块的存储和分发仓库。

获取第三方模块主要有npm(node package manager)和yarn两种方式,接下来分别对这两种方式进行讲解。

1. npm

当我们安装Node.js的时候,会自动安装npm工具,它是Node.js的第三方模块管理工具。

由于npm安装插件默认是从国外服务器下载,这可能会受到网络环境的影响,导致下载速度慢并且有时可能会出现连接异常。很多开发者希望能有一个在中国境内的npm服务器以提升安装速度。为了满足这一需求,乐于分享的淘宝团队(属于阿里巴巴旗下的阿里云业务)创建了一个完整的npm镜像。根据官方网站的说法:"这是一个完整npmjs.org镜像,你可以用此代替官方版本(只读),同步频率目前为10分钟一次,以保证尽量与官方服务同步。"这意味着开发者可以使用阿里云在中国境内部署的服务器来安装Node.js包,从而获得更快的下载速度和更稳定的服务体验。

1)使用淘宝镜像

(1)使用阿里定制的cnpm命令行工具代替默认的npm,输入下面代码进行安装:

npm install -g cnpm --registry=https://registry.npm.taobao.org

(2)检测cnpm版本:

cnpm -v

如果安装成功可以看到cnpm的基本信息。

(3)将淘宝镜像设置成全局的下载镜像:

直接在命令行设置

npm config set registry https://registry.npm.taobao.org

配置后可以通过下面方式来验证是否成功:

npm config get registry

如果看到运行结果是:

C:\Users\zouqi>npm config get registry

https://registry.npm.taobao.org/

说明我们已经将npm的镜像改为了淘宝镜像。

使用npm下载和卸载模块的命令如下:

  1. 下载:npm install模块名称。
  2. 卸载:npm unintall package模块名称。

该命令在哪里执行就会把包下载到哪里,默认会下载到node_modules目录中。node_modules会自动生成,我们不要改这个目录,当然也不支持改。

2)全局安装与本地安装

在使用npm进行包管理时,添加-g参数表示全局安装,这通常用于那些提供命令行工具的包。而如果没有添加-g参数,则默认进行本地安装,这适用于作为项目依赖的库文件。

npm install和npm i命令是等价的,它们都可以用来安装包。

在npm版本5.0.0之后,--save参数已经不是必需的,因为默认行为已变为将依赖信息添加到 package.json文件的dependencies部分。这些依赖被视为生产阶段的依赖,意味着它们是项目运行时所必需的,即使在程序上线后也是如此。

--save-dev或-D参数用来将包信息添加到devDependencies部分。这些依赖是在开发阶段需要的,例如测试框架或构建工具,它们不会在生产环境中被安装或使用。

2. yarn

yarn是由Facebook、Google、Exponent和Tilde联合推出的一个新的JS包管理工具,它具有如下特点:

(1)超级快。yarn缓存了每个下载过的包,所以再次使用时无须重复下载;同时利用并行下载以最大化资源利用率,因此安装速度更快。

(2)超级安全。在执行代码之前,yarn会通过算法校验每个安装包的完整性。

(3)超级可靠。使用详细、简洁的锁文件格式和明确的安装算法,yarn能够保证在不同系统上无差异地工作。

Yarn的安装示例如下:

yarn安装

npm install -g yarn

查看yarn版本

yarn --version 或者yarn --v

yarn设置淘宝镜像

yarn config set registry https://registry.npm.taobao.org --g

yarn换成原来的镜像

yarn config set registry http://registry.npmjs.org/

yarn常用命令如下:

(1)初始化项目:

yarn init // 同npm init,执行输入信息后,会生成package.json文件

(2)安装包:

yarn install //安 装package.json里的所有包,并将包及其所有依赖项保存进yarn.lock

yarn add [package] // 在当前的项目中添加一个依赖包,会自动更新到package.json和yarn.lock文件中

// 不指定依赖类型时默认安装到dependencies里,当然也可以指定依赖类型

yarn add --dev/-D // 安装到 devDependencies

(3)运行脚本:

yarn run脚本名称

例如yarn run dev,用来执行在package.json中scripts属性下定义的脚本。

3. npm和yarn的区别

1)npm

用过npm的都知道,npm装包非常慢,即使使用了镜像也还是很慢。当我们删除node_modules再重新安装的时候更是慢得难以接受。有时同一个项目在安装的时候也无法保持一致性。

npm5.0之后做了一些改进。

  1. 新增了类似yarn.lock的package-lock.json。
  2. git依赖支持优化:这个特性在需要安装大量内部项目(例如没有自建源的内网开发)或需要使用某些依赖的未发布版本时很有用。在npm5之前可能需要使用指定commit_id的方式来控制版本。
  3. 文件依赖优化:在之前的版本,如果将本地目录作为依赖来安装,将会把文件目录作为副本复制到node_modules中,而在npm5中,将改为使用创建symlinks的方式来实现(使用本地tarball包除外),不再执行文件拷贝,这将会提升安装速度。目前yarn还不支持该功能。

通过以上一系列改进,npm5在速度和使用上确实有了很大提升,值得尝试,不过它还是没有超过yarn。

2)yarn

yarn的优点如下:

  1. 速度快。
  2. 并行安装:无论npm还是yarn在执行包的安装时,都会执行一系列任务。npm是按照队列执行每个package,也就是说必须等到当前package安装完成之后,才能继续后面的安装。而yarn是同步执行所有任务,因而提高了性能。
  3. 离线模式:如果之前已经安装过一个软件包,用yarn再次安装时可以直接从缓存中获取,而不用像npm那样再次从网络下载。
  4. 安装版本统一:为了防止拉取到不同的版本,yarn提供了一个锁定文件(lock file),用来记录被确切安装上的模块的版本号。每次只要新增了一个模块,yarn就会创建(或更新)yarn.lock这个文件。这么做就保证了每一次拉取同一个项目依赖时,使用的都是一样的模块版本。npm其实也有办法实现处处使用相同版本的packages,但需要开发者执行npm shrinkwrap命令。这个命令将会生成一个锁定文件,在执行npm install的时候,该锁定文件会先被读取,这和yarn读取yarn.lock文件的原理相同。npm和yarn两者的不同之处在于,yarn默认会生成这样的锁定文件,而npm要通过shrinkwrap命令生成npm-shrinkwrap.json文件,只有当这个文件存在的时候,packages版本信息才会被记录和更新。
  5. 更简洁的输出:npm的输出信息比较冗长。在执行npm install<package>的时候,命令行里会不断地打印出所有被安装上的依赖。相比之下,yarn简洁太多:默认情况下,yarn结合emoji直观且直接地打印出必要的信息,此外也提供了一些命令供开发者查询额外的安装信息。
  6. 多注册来源处理:所有的依赖包,不管它被不同的库间接关联引用多少次,在安装这个包时,都只会从一个注册来源去安装,要么是npm要么是bower,防止出现混乱不一致。
  7. 更好的语义化:yarn改变了一些npm命令的名称,比如yarn add/remove,感觉上比npm原本的install/uninstall要更清晰。yarn和npm命令的对比如表2-1所示。
相关推荐
街尾杂货店&5 小时前
webpack说明
前端·webpack·node.js
bpmf_fff6 小时前
二四(Node3)、Webpack打包、开发服务器dev、开发模式 生产模式、解析别名路径
node.js
老大白菜8 小时前
在 Node.js 中安装和使用 TensorFlow.js 的完整指南
javascript·node.js·tensorflow
爱宇阳10 小时前
如何更新项目中的 npm 或 Yarn 依赖包至最新版本
前端·npm·node.js
HappyAcmen10 小时前
Node.js教程入门第一课:环境安装
前端·vue.js·node.js
zybishe10 小时前
计算机毕业设计原创定制(免费送源码):Node.JS+Express+MySQL Express 流浪动物救助系统
android·深度学习·机器学习·小程序·node.js·课程设计·express
算是难了13 小时前
Vite 与 Webpack 的区别
前端·webpack·node.js
2401_895366001 天前
Node.js 文件系统
node.js
大饼酥1 天前
使用Nexus3搭建npm私有仓库
前端·npm·node.js