Node.js 包管理工具 npm、pnpm、cnpm、yarn

目录

什么是 npm

npm 主要功能

什么是 package.json 

package.json 版本范围规则

安装配置 npm 环境

使用 npm

npm 版本和帮助命令

npm 包相关命令

安装包

卸载包

升级第三方包

升级自己开发的包

查看已安装的包

清除缓存和修复

package.json 相关

运行命令脚本

全局配置

npm 包发布相关

代理(Proxy)相关

npm 仓库镜像源

配置 cnpm

什么是 npx

npm、pnpm 和 yarn 的区别


什么是 npm

npm(Node Package Manager)是 Node.js 的官方包管理工具。它用于管理 JavaScript 包和模块,尤其是针对 Node.js 环境下的应用程序。npm 使开发者能够轻松地安装、共享和更新 JavaScript 代码包或库。

npm 主要功能

  npm 官方仓库地址:npm

  1. 安装依赖包:npm 让你能够方便地第三方安装库(比如express),把lodash它们react作为项目的依赖项。
  2. 管理依赖:它帮助您管理项目中所有的依赖项,并确保版本的一致性,避免出现不同开发环境中版本不兼容的情况。
  3. 分享和发布包:你可以将自己编写的代码压缩成npm包,把它们发布到npm官方仓库,供其他开发者使用。

什么是 package.json 

package.json 是 Node.js 项目的配置文件,通常位于项目的根目录。它用于管理项目的依赖、脚本、元数据等,类似于 Java 项目中的 pom.xml(Maven)或 build.gradle(Gradle)。


package.json 版本范围规则

版本写法 允许升级的范围 示例
^x.y.z 大版本不变,次版本和补丁可升级 ^4.17.21可升级到 4.x.x,但不会升到 5.0.0
~x.y.z 次版本不变,仅补丁可升级 ~4.16.0可升级到 4.16.x,但不会变成 4.17.0
x.y.z 完全锁定,不会升级 0.21.1 只能安装 0.21.1
latest 始终安装最新版本 始终获取 npm 仓库的最新版本

语义化版本说明 (Semantic Versioning,SemVer)

..

  • Major version(主版本):表示有 破坏性变更,不向后兼容。例如,从 2.x.x 升级到 3.0.0。
  • Minor version(次版本):表示添加了 新特性,但向后兼容。例如,从 2.1.x 升级到 2.2.0。
  • Patch version(补丁版本):表示 修复 bug,且向后兼容。例如,从 2.1.0 升级到 2.1.1。

安装配置 npm 环境

 请查看:Node.js 环境配置


使用 npm

npm 版本和帮助命令

# 查看npm版本
nvm -v

# 同 nvm -v 查看npm版本
npm --version

# 查看 npm 帮助信息
npm -h

# 同 npm -h 查看 npm 帮助信息
npm --help 

# 查看某个命令的使用方法,例如 npm help install
npm help 

npm 包相关命令

安装包

# 安装 package.json 中的包
npm install

# 安装某个包(默认安装最新版本)
npm install 

# 安装指定版本的包,例如 npm install [email protected]
npm install @

# 旧版 npm(5.x 之前)需要 --save 来保存依赖(现已默认保存)
npm install  --save

# 安装包并保存到 devDependencies(仅用于开发环境)
npm install  --save-dev

# 全局安装
npm install  -g

# 去重依赖,合并相同的依赖包,减少 node_modules 体积
npm dedupe

# 清理(Clean)并安装(Install)依赖,更快、更严格,适用于 CI/CD 环境。
# ci 详细介绍如下:
# npm ci 不会修改 package-lock.json,它会强制安装 package-lock.json 里指定的版本,确保依赖完全一致。
# 如果 package-lock.json 和 package.json 不匹配,它会报错。
# npm ci 不会检查已安装的 node_modules,而是直接删除它并重新安装所有依赖。
# 适用于 CI/CD 和自动化部署,确保环境干净,避免 npm install 可能带来的依赖冲突。
npm ci

卸载包

# 卸载某个已安装的包
npm uninstall 

# 全局卸载
npm uninstall  -g

# 同 uninstall,移除某个包
npm remove 

升级第三方包

# 更新本地安装的某个包
npm update 

# 更新全局安装的某个包
npm update -g 

# 更新 package.json 里所有可以安全更新的包
npm update

# 检查哪些包需要更新
npm outdated

npm update 命令会把包升级成功,但是 package.json 文件中的版本号不会自动修改,可以使用 npm list 来查看指定包的版本号,会发现更新后的包和 package.json 中的版本号不一致。

# 推荐使用,更新所有

可以使用 npx npm-check-updates -u,来检查 package.json 文件中所有依赖的版本号,使它们自动更新到最新的符合 package.json 规则的版本(这时只修改了文件中的版本号,还没有进行安装)。然后使用 npm install 进行最新版本的安装。

npx npm-check-updates -u

npm install

# 推荐使用,更新一个

也可以使用 npm install @ 命令,直接把某一个包强制更新到指定的版本,此命令不用遵守 package.json 版本范围规则。

# npm install @
npm install [email protected]

升级自己开发的包

npm version 是用于管理和更新项目版本的 npm 命令,常用于在 package.json 中更新项目的版本号,并且可以自动生成 Git 提交和标签。它通常与版本控制和发布流程结合使用,确保项目的版本号始终符合语义化版本(Semantic Versioning,SemVer)规范。

# 更新 package.json 当前项目的version,例如 npm version 1.2.3
npm version 	

# 小更新(1.0.0 → 1.0.1)
npm version patch

# 次要更新(1.0.0 → 1.1.0)
npm version minor

# 大更新(1.0.0 → 2.0.0)
npm version major

查看已安装的包

# 查询当前项目安装的所有包
npm list

# 查询当前项目某一个包
npm list 

# 查询全局安装的包
npm list -g

# 仅查询顶层安装的包(不显示依赖的依赖)
npm list --depth=0

清除缓存和修复

# 清除 npm 缓存(强制刷新)
npm cache clean --force

# 验证 npm 缓存完整性
npm cache verify

# 检查项目的安全性漏洞
npm audit

# 自动修复安全性问题
npm audit fix

# 重新编译 node_modules ,修复损坏的依赖
npm rebuild

# 检查 npm 是否正常,诊断问题
npm doctor

# 删除 node_modules 目录
rd /s /q node_modules

# 移除未列在 package.json 中的依赖
npm prune

package.json 相关

# 初始化一个 package.json 文件(交互模式,填写项目名称、版本、作者等信息)
npm init

# 初始化一个 package.json 文件(交互信息使用默认值)
npm init -y

# 设置 package.json 中的某个值
npm pkg set =

# 删除 package.json 中的某个键
npm pkg delete 

# 获取 package.json 里的某个值
npm pkg get 

列举常用的一些key,如下:

# name 设置或更新项目的名称
npm pkg set name=my-project

# version 设置或更新项目的版本号
npm pkg set version=1.0.0

# author 设置或更新项目的作者信息
npm pkg set author="Zhang San"

# engines 设置或更新项目所需的 Node.js 版本。
npm pkg set engines.node=">=12.0.0"

# description 设置或更新项目的描述
npm pkg set description="A cool project"

# main 设置项目的入口文件(通常是 index.js)
npm pkg set main=src/index.js

# keywords 设置或更新项目的关键字,这些关键字有助于别人通过 npm 搜索到你的包
npm pkg set keywords=["node", "npm", "package"]

# scripts 设置或更新 scripts 字段,用于定义 npm 命令(例如 npm run start)
npm pkg set scripts.start="node app.js"

# dependencies 设置或更新项目的生产依赖
npm pkg set dependencies.lodash="^4.17.21"

# devDependencies 设置或更新项目的开发依赖
npm pkg set devDependencies.webpack="^5.0.0"

# license 设置或更新项目的许可证
npm pkg set license=MIT

# repository 设置或更新项目的版本控制仓库信息(如 GitHub)
npm pkg set repository.type=git
npm pkg set repository.url=https://github.com/user/my-project.git

# bugs 设置或更新项目的错误报告 URL
npm pkg set bugs.url=https://github.com/user/my-project/issues

# homepage 设置或更新项目的主页 URL
npm pkg set homepage=https://my-project.com

# private 设置或更新项目是否为私有包。如果为 true,npm 将禁止发布该包。
npm pkg set private=true

# directories 设置或更新项目的目录结构信息,如 bin、lib、man 等
npm pkg set directories.lib=src/lib

运行命令脚本

scripts 示例

{
  "name": "node-app",
  "version": "1.0.0",
  "scripts": {
    "start": "node app.js",                        // 启动应用
    "dev": "nodemon app.js",                       // 启动应用并使用 nodemon 热重载
    "test": "mocha tests/**/*.test.js",            // 运行 Mocha 测试
    "lint": "eslint .",                            // 运行 ESLint 代码检查
    "build": "webpack --config webpack.config.js", // 构建项目(如使用 Webpack)
    "clean": "rimraf dist",                        // 清理构建目录
    "deploy": "npm run build && npm run start",    // 构建并启动生产环境
    "aaa": "自定义命令a",
    "bbb": "自定义命令b"
  }
}

可以使用 npm run

你可能感兴趣的:(Node.js,node.js,npm)