npm#

概念: npm 是 Node.js 的包管理工具,用来安装各种 Node.js 的扩展。

它于 2010 年发布,开启了 web 开发的新时代。在此之前,项目依赖库都是手动下载和管理的,npm 是把 WEB 开发推向了一个更高的阶段。

npm 是 JavaScript 的包管理工具,也是世界上最大的软件注册表。有超过 60 万个 JavaScript 代码包可供下载,每周下载约 30 亿次。npm 让 JavaScript 开发人员可以轻松地使用其他开发人员共享的代码。(转自openchina)

npm 主要做三件事:

  • 一个用于管理 npm 体验各个方面的网站

  • 用于访问广泛的 JavaScript 包公共数据库的注册表

  • 用于通过终端与 npm 交互的命令行界面(CLI)

安装:下载Node安装的同时会默认安装npm

Node安装方式一, 通过官网https://nodejs.org下载安装方式二: 通过Node版本管理工具nvm安装

Node中文文档: https://www.nodeapp.cn/

npm中文文档: https://www.npmjs.cn/

菜鸟教程:https://www.runoob.com/nodejs/nodejs-npm.html

设置淘宝镜像: npm config set registry https://registry.npm.taobao.org
检查镜像地址: npm config get registry

常用命令:

命令 说明
npm -v 输出版本号,一般用于检查是否安装成功
npm init 初始化管理文件, 自己输入
npm init -y 初始化管理文件, 使用默认值
npm i 安装项目的全部依赖包,package.json文件中记录的
npm i express i表示install,下载包,加上@可指定版本,默认下载最新版
npm i express -g -g 全局安装express框架
npm list -g 输出全局安装的所有包以及版本信息
npm uninstall express 卸载express框架
npm ls 查看node_modules文件夹中安装的所有包
npm search express 搜索express框架
npm update express 更新包
npm publish 发布包

版本号#

使用 NPM 下载和发布代码时都会接触到版本号。NPM 使用语义版本号来管理代码,这里简单介绍一下。语义版本号分为X.Y.Z三位,分别代表主版本号、次版本号和补丁版本号。当代码变更时,版本号按以下原则更新。

  • 如果只是修复bug,需要更新Z位。

  • 如果是新增了功能,但是向下兼容,需要更新Y位。

  • 如果有大变动,向下不兼容,需要更新X位。

帮助#

  • npm 查看全部命令

  • npm <command> -h 查看命令基本用法

  • npm help <command> 在浏览器中查看命令完整用法

  • npm help npm 查看npm的完整说明文档

npx#

介绍: npx 是 npm5.2.0版本新增的一个工具包,定义为npm包的执行者,相比 npm,npx 会自动安装依赖包并执行某个命令。

eg: 用 create-react-app 脚手架创建一个 react 项目

1
2
3
4
5
// 第一步
npm i -g create-react-app

// 第二步
create-react-app my-react-app
1
2
// 使用npx一步到位
npx create-react-app my-react-app

npx 会在当前目录下的./node_modules/.bin里去查找是否有可执行的命令,没有找到的话再从全局里查找是否有安装对应的模块,全局也没有的话就会自动下载对应的模块,如上面的 create-react-app,npx 会将 create-react-app 下载到一个临时目录,用完即删,不会占用本地资源。

npm自带npx,可以直接使用,如果没有可以手动安装一下:npm i -g npx

nvm#

官方介绍: nvm allows you to quickly install and use different versions of node via the command line.

翻译过来就是: nvm允许您通过命令行快速安装和使用不同版本的Node。

1
2
3
4
5
6
7
8
9
10
11
12
13
## 使用样例
$ nvm use 16
Now using node v16.9.1 (npm v7.21.1)
$ node -v
v16.9.1
$ nvm use 14
Now using node v14.18.0 (npm v6.14.15)
$ node -v
v14.18.0
$ nvm install 12
Now using node v12.22.6 (npm v6.14.5)
$ node -v
v12.22.6

安装:

1
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
1
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

window安装: https://github.com/coreybutler/nvm-windows/releases

推荐下载: nvm-setup.exe

使用:

1
2
3
4
nvm install 8.11.1 #下载8.11.1
nvm use 8.9.0 #使用8.9.0
nvm alias default 6.10.0 #设置默认版本
nvm uninstall 10.16.3 # 卸载版本
1
2
3
4
# 查看下载的所有node版本, 并标出当前使用的版本
$ nvm ls

* 16.17.0 (Currently using 64-bit executable)

nrm#

介绍: 管理镜像源

有些功能淘宝镜像不可用, 需切换官方镜像

安装:

1
npm i nrm -g

使用:

  • 切换官方镜像: nrm use npm

  • 切换淘宝镜像: nrm use taobao

  • 查看所有可用源nrm ls

  • 测试延迟: nrm test npm

npkill#

介绍: 快速删除node_modules文件夹, 重装依赖

使用方式一:

  1. 全局安装: npm i -g npkill

  2. npkill 选择要删除的node_modules文件夹, 按空格删除

使用方式二: npx npkill 选择要删除的node_modules文件夹, 按空格删除

cnpm#

官网: https://npmmirror.com/

  • 安装并设置镜像: npm install -g cnpm --registry=https://registry.npm.taobao.org

  • 使用: cnpm install express

yarn#

官网: https://www.yarnpkg.cn/

介绍: yarn 包管理器是 npm 的一个替代方案,由 Facebook 于 2016 年 10 月发布。yarn 最初的目标是处理 npm 的缺点,比如性能和安全问题。yarn 很快被定位为一个安全、快速、可靠的 JavaScript 依赖管理工具。

特点

  • 离线模式:如果您之前下载了软件包,则可以在没有任何互联网连接的情况下安装。

  • 确定性:无论安装顺序如何,相同的依赖关系将以相同的方式安装在计算机上。

  • 网络性能:Yarn 有效地将请求排序,避免请求堆积,以最大限度地提高网络利用率。

  • 多个注册表:无论从 npm 或 Bower 安装任何包,能保持包工作流程相同。

  • 网络恢复:单个请求失败不会导致安装失败。 请求在失败时会自动重试。

  • 平面模式:将不兼容版本的依赖项解析为单个版本,以避免创建重复项。

安装: npm install -g yarn

使用:

  • npm install | yarn:安装依赖

  • npm install [package] | yarn add [package]:安装一个包

  • npm install --save-dev [package] | yarn add --dev [package]:安装包作为开发依赖项

  • npm uninstall [package] | yarn remove [package]:卸载一个包

  • npm uninstall --save-dev [package] | yarn remove [package]:卸载开发依赖包

  • npm update | yarn upgrade:更新的依赖关系

  • npm update [package] | yarn upgrade [package]:更新包

pnpm#

官网: https://pnpm.io/zh

介绍: pnpm代表performant npm(高性能的npm),同npmYarn,都属于Javascript包管理安装工具,它较npmYarn在性能上得到很大提升,被称为快速的,节省磁盘空间的包管理工具

当使用 npmYarn 时,如果你有 100 个项目使用了某个依赖(dependency),就会有 100 份该依赖的副本保存在硬盘上,而在使用 pnpm 时,依赖会被存储在内容可寻址的存储中,所以:

  1. 如果你用到了某依赖项的不同版本,只会将不同版本间有差异的文件添加到仓库。 例如,如果某个包有100个文件,而它的新版本只改变了其中1个文件。那么 pnpm update 时只会向存储中心额外添加1个新文件,而不会因为仅仅一个文件的改变复制整新版本包的内容。
  2. 所有文件都会存储在硬盘上的某一位置。 当软件包被安装时,包里的文件会硬链接到这一位置上对应的文件,而不会占用额外的磁盘空间。 这允许你跨项目地共享同一版本的依赖。

因此,您在磁盘上节省了大量空间,这与项目和依赖项的数量成正比,并且安装速度要快得多!

安装#

  • 直接powershell安装: iwr https://get.pnpm.io/install.ps1 -useb | iex

  • 通过npm安装: npm install -g pnpm

使用#

  • 安装项目全部依赖: pnpm i

  • 添加包: pnpm add express

推荐文章:JavaScript 包管理器简史(npm/yarn/pnpm)