npm、pnpm、yarn、nodemon、nvm的介绍、安装和使用

npm、pnpm、yarn、nodemon、nvm的介绍、安装和使用

一、 npm

1.1 简介

NPM 的全称是 Node Package Manager,是一个 NodeJS 包管理和分发工具,已经成为了非官方的发布 Node 模块(包)的标准。
2020 年 3 月 17 日,Github 宣布收购 npm,GitHub 现在已经保证 npm 将永远免费。
node.js 是 javascript 的一种运行环境,是对 Google V8 引擎进行的封装。是一个服务器端的 javascript 的解释器。

安装node.js会自带 npm,同时提供 npx 命令,使用 npx 命令可以直接调用模块命令。

1.2 镜像加速

方式一

设置淘宝镜像源:

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

或设置为阿里源:npm config set registry https://registry.npmmirror.com

查看配置是否成功:

npm config get registry

还原 npm 仓库:

npm config set registry https://registry.npmjs.org
方式二

使用 nrm

方式三

使用 cnpm,cnpm 是个中国版的 npm,是淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm。

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

该命令的作用:

  • 全局安装 cnpm
  • 将安装 ’ 包 '(各种包) 的地址切换到 国内的淘宝镜像

1.3 版本号

版本号说明

版本示例: a.b.c 表示 主版本号.次版本号.修补版本号

  • a 兼容版本,一般来讲版本 2.0.0 不一定向 1.0.0 兼容,所以这个版本号更新要慎重
  • b 次版本号,一般为功能上的升级
  • c 修订号,一般指对程序 bug 的修复
npm config set registry https://registry.npmjs.org
方式二

使用 nrm

1.3 版本号

版本号说明

版本示例: a.b.c 表示 主版本号.次版本号.修补版本号

  • a 兼容版本,一般来讲版本 2.0.0 不一定向 1.0.0 兼容,所以这个版本号更新要慎重
  • b 次版本号,一般为功能上的升级
  • c 修订号,一般指对程序 bug 的修复
npm config set registry https://registry.npmjs.org
方式二

使用 nrm

1.3 版本号

版本号说明

版本示例: a.b.c 表示 主版本号.次版本号.修补版本号

  • a 兼容版本,一般来讲版本 2.0.0 不一定向 1.0.0 兼容,所以这个版本号更新要慎重
  • b 次版本号,一般为功能上的升级
  • c 修订号,一般指对程序 bug 的修复
npm config set registry https://registry.npmjs.org
方式二

使用 nrm

1.3 版本号

版本号说明

版本示例: a.b.c 表示 主版本号.次版本号.修补版本号

  • a 兼容版本,一般来讲版本 2.0.0 不一定向 1.0.0 兼容,所以这个版本号更新要慎重
  • b 次版本号,一般为功能上的升级
  • c 修订号,一般指对程序 bug 的修复
指定版本

通过 ^、 ~、 *来指定版本号

^ 表示与版本兼容,指从最左边非 0 算起,该数值不能变

  • 版本号 ^2.1.0:指 >=2.1.0 但< 3.0.0
  • 版本号^0.2.1:指>=0.2.1 但 <0.3.0
  • 版本号^0.1.0: 指 >=0.1.0 但 <0.2.0

~ 表示次版本号的更新规则,指从最右边非 0 算起,该数值不能变

  • 版本号~2.1.0:指>=2.1.0 但 <2.2.0
  • 版本号~2.0.0:指>=2.0.0
  • *表示任意版本,永远更新最新版本
  • -表示版本区间
    1.2.1-1.6.5:指 1.2.1 与 1.6.5 间的任意版本
锁定版本

每次更新版本后会生成 yarn.lock 文件,用于记录当前项目的使用的软件版本号。

1.4 常用命令

初始化项目

根据提示填写内容,也可以按提供的默认值一路回车(Enter)。

npm init

加上 --yes 标志将自动使用默认值 npm init 填充所有选项:

npm init --yes

or

npm init -y

完成以上面操作后,将会生成一个 package.json 文件并将其放置在当前目录中。

安装

全局安装:

npm install -g <package_name>

安装软件包:
不修改 package.json 文件

npm install <package_name>
npm i <package_name>

安装开发环境依赖:

  • 在 package.json 文件 devDependencies 属性下增加记录
  • npm install 时会自动安装该软件包
  • 使用 npm install --production 或者 NODE_ENV 变量值为 production 时,不会安装该软件包
npm install --save-dev <package_name>
npm install -D <package_name>
npm i -D <package_name>

安装生产环境依赖(默认):

  • 在 package.json 文件 dependencies 属性下增加记录
  • npm install 时会自动安装该软件包
  • 使用 npm install --production 或者 NODE_ENV 变量值为 production 时,安装该软件包
npm install --save-prod <package_name>
npm install -S <package_name>
npm i -P <package_name>

同时安装多个包:

npm i express cheerio axios

安装具有相同前缀的多个包:

npm i eslint-{plugin-import,plugin-react,loader} express
清除包依赖

用于清除安装包依赖项。它通常用于自动化环境,如 CI/CD 平台。

npm ci
查看模块

查看安装的模块列表:

npm ls

查看本地已安装的包信息:

npm ls tailwindcss
或
npm ls | grep tailwind

查看包信息:

npm info tailwindcss
或
npm view tailwindcss

列出项目的依赖:

npm list
npm ls

列出项目的依赖,并限制显示的依赖深度:

npm list --depth=2
更新

更新 npm

npm install npm -g

更新所有包

npm update

更新指定包

npm update <package_name>
卸载

删除全局包

npm uninstall -g <package_name>

删除项目中的包

npm uninstall  <package_name>
npm un  <package_name>
调用某个包的命令

调用 mockjs 中的 random:

node_modules/mockjs/bin/random

使用 npx(在 node_modules/.bin 目录和环境变量$PATH 中查找命令并执行):

npx random

二、pnpm

2.1 简介

pnpm含义为 performant npm 意指『高性能的 npm』,与 npm 一样的都是软件包管理工具,但它还能够管理node.js的版本。它较npm和Yarn在性能上得到很大提升,被称为快速的、节省磁盘空间的包管理工具。

2.2 安装

用 npm 全局安装 pnpm:

npm install -g pnpm

2.3 镜像加速

使用 nrm

2.4 常用命令

和 npm 类似,把 npm 替换为 pnpm 就行。

npm命令pnpm命令
npm installpnpm install
npm ipnpm add pkg
npm run cmdpnpm cmd

安装命令,同样会在 package.json 文件 dependencies 属性下和 devDependencies 属性增加记录

2.5 管理 Node.js 环境,安装并使用指定版本的 Node.js

// 安装 LTS 版本的 Node.js 
pnpm env use --global lts
pnpm env use --global argon


// 全局安装v16
pnpm env use --global 16


// 安装最新版本的node js
pnpm env use --global latest


// 移除指定版本的nodejs
pnpm env remove --global 14.0.0

2.6 npm或yarn转移到pnpm包管理

  1. 删除npm或yarn生成的node_modules
rm -rf node_modules
  1. 从其他软件包管理器的lock 文件生成 pnpm-lock.yaml
pnpm import
  1. 安装依赖,使用--frozen-lockfile参数,防止没有lock文件意外升级依赖包
pnpm install --frozen-lockfile
  1. 删除npm或yarn生成的lock文件
# 删除package-lock.json
rm -rf package-lock.json
# 删除yarn.lock
rm -rf yarn.lock

三、nrm

3.1 nrm

nrm 管理多个镜像地址,帮助我们在不同的镜像间进行切换。

官方地址

3.2 安装

npm install -g nrm

如果遇到报错 node version v16.19.1 ERROR: ERR_REQUIRE_ESM:

const open = require('open');
             ^

Error [ERR_REQUIRE_ESM]: require() of ES Module /Users/123/.nvm/versions/node/v16.19.1/lib/node_modules/nrm/node_modules/open/index.js from /Users/123/.nvm/versions/node/v16.19.1/lib/node_modules/nrm/cli.js not supported.

详见

请降低版本:

npm install -g nrm open@8.4.2 --save

m1 芯片安装出错,执行如下命令:

npm uninstall -g nrm
npm i -g @adams549659584/nrm

3.3 常用命令

查看镜像列表:

nrm ls

output:

  npm ---------- https://registry.npmjs.org/
  yarn --------- https://registry.yarnpkg.com/
  tencent ------ https://mirrors.cloud.tencent.com/npm/
  cnpm --------- https://r.cnpmjs.org/
  taobao ------- https://registry.npmmirror.com/
  npmMirror ---- https://skimdb.npmjs.com/registry/

选择腾讯的镜像:

nrm use tencent

查看当前的源:

nrm test
nrm current

测试速度:

nrm test

四、nodemon

4.1 简介

nodemon 是一种工具,通过在检测到目录中的文件更改时自动重新启动 node 应用程序来帮助开发基于 Node.js 的应用程序。

一般只在开发时使用

用 nodemon 代替 node 来运行代码,这样当代码发生改变时,进程会自动重启。

特性:

  • 自动重新启动应用程序。
  • 检测要监视的默认文件扩展名。
  • 默认支持 node,但易于运行任何可执行文件,如 python、ruby、make 等。
  • 忽略特定的文件或目录。
  • 监视特定目录。
  • 使用服务器应用程序或一次性运行实用程序和 REPL。
  • 可通过 Node require 语句编写脚本。
  • 开源,在 github 上可用。

4.2 安装

npm add -g nodemon

4.3 使用

命令行配置选项

配置项说明
ignore忽略监测的文件或目录
colours输出信息颜色
verbose显示详细执行日志
restartable生起命令的字符串
watch监控的文件或目录路径
ext监控文件的扩展名
exec执行的程序

如:

更多示例

// 监控指定文件夹或者文件变化
nodemon --watch app --watch libs app.js
// 监控指定后缀名的文件,用空格间隔。
nodemon -e js,pug

配置文件示例:

{
	"ignore": [
		"node_modules",
		"dist"
	],
	"colours": true,
	"verbose": true,
	"restartable": "rs",
	"watch": [
		"*.*"
	],
	"ext": "html,js"
}

在 package.json 中配置:

{
  "name": "electron-camera",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "nodemon --exec electron . "
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "electron": "^22.0.2"
  }
}

五、nvm

nvm 官网

5.1 简介

nvm(node version manager)是 node 版本管理工具,为了解决 node 各种版本存在不兼容现象,让你在同一台机器上安装和切换不同版本的 node 的工具。

5.2 安装

如果之前使用 npm 安装过扩展包,现在想使用 NVM 进行管理。则首先需要从全局中删除 node_modules 目录,下面命令可以查看全局 node_modules 目录:

npm root -g
Mac OS
brew install nvm

.zshrc添加环境变量:

export NVM_DIR="$HOME/.nvm"
  [ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh"  # This loads nvm
  [ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm"  # This loads nvm bash_completion

重新加载配置

source ~/.zshrc
Windows

windows 用户请下载安装 nvm-windows

5.3 常用命令

获得帮助

nvm -h

列出所有可安装的 node 版本

nvm ls-remote

安装指定版本

nvm install 18

切换使用指定的版本 node

nvm use 18

查看本地已安装的 node 版本,同时也会显示当前使用的 node 版本

nvm list

显示当前版本

nvm current

删除指定版本,将删除该版本安装的所有包

nvm uninstall 18
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
npm、cnpmyarn、pnpmnvm都是基于npm的包管理工具,它们都有一些共同的功能,如安装、卸载和更新包。然而,它们也有一些区别和特点。 1. npm是Node.js官方的包管理器,是最常用的工具之一。它具有广泛的社区支持和丰富的生态系统。npm的速度和性能已经得到了很大的改进,因此现在与其他工具没有太大的区别。 2. cnpmnpm的一个国内镜像,提供了更快的下载速度。通过将npm仓库切换为淘宝镜像,可以使用cnpm来代替npm使用cnpm安装包的方式与使用npm是一样的。 3.***依赖关系管理。yarn采用了并行和缓存机制来提高性能和可靠性。此外,yarn还引入了锁定文件(yarn.lock),用于确保项目的依赖关系的一致性。 4. pnpm是另一种包管理工具,它与yarn类似,也是为了解决npm的一些问题而创建的。pnpm使用一种称为“硬链接”的技术,将依赖关系存储在一个地方,并在项目之间共享它们,从而减少了磁盘空间和网络带宽的使用。 5. nvm是Node.js版本管理工具,允许您在同一台机器上同时安装和切换不同版本的Node.js。通过nvm,您可以轻松地在不同的项目中使用特定的Node.js版本,以满足项目的要求。 综上所述,npm、cnpmyarn、pnpmnvm都是用于管理Node.js项目的工具,它们在性能、依赖关系管理和版本控制方面有一些区别。您可以根据具体的项目需求选择使用其中之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值