Node包管理工具

391 阅读6分钟

Node包管理工具

npm和yarn都是JavaScript的包管理器,它们主要用于Node.js的插件管理和模块管理,包括安装、卸载、更新、查看、搜索、发布等。 总的来说,npm和yarn都是为了方便JavaScript开发者快速安装、更新、卸载和管理Node.js模块而诞生的工具,它们提供了丰富的命令和功能,让开发者可以更加高效地管理和使用Node.js生态系统中的资源。 在一个Node.js项目中,package.json几乎是一个必须的文件,它的主要作用就是管理项目中所使用到的外部依赖包,同时它也是npm命令的入口文件。

不同点

  1. 安装速度:通常,yarn的安装速度比npm快。这是因为在包的下载和安装过程中,yarn使用了并行下载和缓存等优化策略,而npm则是串行化处理这些操作。
  2. 缓存机制:yarn具有更强大的缓存机制,能够更好地利用缓存,减少重复下载。这对于团队协作和构建机器上的重复构建是有益的,可以节省时间和带宽。
  3. 版本控制:yarn解决了由于语义版本控制而导致的npm的不确定性问题,通过安装时创建的默认文件,确保使用的库的版本相同。
  4. 安全性:yarn在包的下载和安装过程中更加注重安全性。它通过使用yarn.lock文件来锁定依赖项的版本,确保在不同环境下使用的是相同的依赖版本,从而减少由于依赖项版本不一致导致的问题。
  5. 用户界面:yarn提供了更友好和直观的命令行界面,显示更详细的信息,如安装进度、依赖关系树等。相比之下,npm的命令行界面较为简洁。
  6. 生态系统:npm是Node.js生态系统的默认包管理工具,拥有庞大的包库和活跃的社区支持。大多数开源项目和文档都以npm为主要依赖管理工具。虽然yarn的用户数量在不断增加,但npm仍然是广泛使用的。

npm命令

#安装pnpm
npm install -g pnpm
#查看版本号
pnpm -v

#安装cnpm包管理器
npm install -g cnpm --registry=https://registry.npmmirror.com 
# 全局安装nrm
npm i -g nrm 

# nrm其实就是npm registry manager,管理npm源的简单cmd工具
# 切换为淘宝镜像
nrm use taobao 
# 切换到npm
nrm use npm    
# 查看源有哪些并且当前使用的是哪个
nrm ls         

# 安装指定的包
npm install <package name>
# 安装指定的包,并将其添加到package.json文件的依赖列中
npm install <package name> --save
# 安装指定的包,并将其添加到package.json文件的开发依赖列中
npm install <package name> --save-dev
# 全局安装指定的依赖包
npm install <package name> -g
# 更新指定包
npm update <package name>
# 卸载指定包
npm uninstall <package name>
# 列出当前项目中安装的所有包
npm list
# 运行当前package.json文件中定义的脚本命令
npm run <sript-name>
# 列出当前项目中需要更新的包名
npm outdated
# 列出当前项目中的依赖项是否存在安全漏洞
npm audit
# 发布开发包到npm库中
npm publish
# 登录到npm账号
npm login
# 注销当前npm账号 
npm logout


# 使用命令 设置npm命令服务器源
npm config set registry https://registry.npmmirror.com/ 
# 使用命令 设置淘宝源镜像
npm config set registry https://registry.npm.taobao.org/
# 使用命令 获取npm命令服务器源
npm config get registry
# 列出所有的npm配置信息 
npm config list
# 查看全局安装了哪些包  
npm ls -g

yarn命令

#-y 初始化包
yarn init/yarn init
# 添加依赖包 
yarn add source 
# 添加开发依赖包
yarn add source --save 
# 全局安装依赖包
yarn global add source 
# 删除依赖包
yarn remove source 
# 全局删除依赖包
yarn global remove source
# 设置淘宝镜像 
yarn config set registry https://registry.npmmirror.com/
# 查看 yarn 的配置项 
yarn config list 

nvm命令

tip nvm(Node.js Version Manager)是一个用于管理 Node.js 版本的工具,可以帮助用户快速切换 Node.js 版本。。 通过 nvm,用户可以在同一台计算机同时安装和使用多个不同的 Node.js 版本,并且可以方便地在它们之间进行切换。

tips: 一定要卸载已安装的 NodeJS,否则会发生冲突。 下载nvm-setup.exe github.com/coreybutler… :::

::: code-group

# 安装指定版本node.js
nvm install
# 切换指定版本 
nvm use 
# 当前正在使用版本
nvm current
# 列出已经安装的版本
nvm ls
# 卸载版本
nvm uninstall
# 切换版本后,重新安装全局的npm包
nvm reinstall-packages
# nvm自动切换 
nvm on
# nvm启动切换关闭 
nvm off 

:::

pnpm命令

管理依赖项

# 安装
npm install -g pnpm
# 安装xx到dependencies  
pnpm add sax	
# 保存到 devDependencies 配置项下
pnpm add -D sax	
# 安装软件包到全局环境中
pnpm add -g sax 
# 安装标记为 next 的版本
pnpm add sax@next	
# 安装指定版本 3.0.0
pnpm add sax@3.0.0	

认识package.json

# 项目名称
name

# 版本号
version

# 项目描述
description

# 项目主入口
main

# 项目的关键字列表,方便他人搜索和发现该项目
keywords

# 作者
author

# 项目许可证,如MIT ISC
license

# 项目所依赖包的列表,这些包会在项目运行时安装
dependencies

# 开发过程中需要的包列表,不会随项目发布
devDependencies

# 项目代码仓库的信息,包括类型、网址等。
repository

# 项目的 bug 报告地址。
bugs:

# 项目的官方网站地址或者文档地址。
homepage:

version 三段式版本号一般是1.0.0 大版本号 次版本号 修订号, 大版本号一般是有重大变化才会升级, 次版本号一般是增加功能进行升级, 修订号一般是修改bug进行升级

nrm

tip github.com/Pana/nrm nrm 是 Node.js 的 npm 源管理工具,允许您在使用 npm 安装或发布包时轻松切换不同的 npm 源。

nrm命令使用

# 查看可选源,其中带有 * 号的表示当前正在使用的版本
nrm ls

# 查看当前源
nrm current

# 切换源 eg: 使用 taobao 源
nrm use taobao

# 添加源
nrm add <registry> <url>
# eg: 
nrm add cnpm https://registry.npm.taobao.org

# 删除源
nrm del <registry>

# 测试源速度
nrm test taobao

PM2一个node进程管理工具

pm2 start app.js              # 启动app.js应用程序
pm2 start app.js -i 4         # cluster mode 模式启动4个app.js的应用    
pm2 start app.js --name="api" # 启动应用程序并命名为 "api"
pm2 start app.js --watch      # 当文件变化时自动重启应用
pm2 list  / pm2 ls            # 列表 PM2 启动的所有的应用程序
pm2 logs                      # 显示所有应用程序的日志
pm2 logs [app-name|id]        # 显示指定应用程序的日志
pm2 stop all                  # 停止所有的应用程序
pm2 stop 0                    # 停止 id为 0的指定应用程序
pm2 restart all               # 重启所有应用
pm2 delete all                # 关闭并删除所有应用
pm2 delete 0                  # 删除指定应用 id 0

Node推荐使用库

  • 官方API中文文档
  • os 模块可以跟操作系统进行交互
  • process 可以获取一些进程相关操作
  • [ffmpeg] 媒体处理工具(处理音频、视频)
  • pngquant 图片压缩
  • node-schedule 定时任务