「Node.js」- npm | Node Package Manager | 包管理器

认识

npm(Node Package Manager)是 Node.js 的包管理工具,用于安装、管理和共享 JavaScript 代码包。

不过有趣的是,npm 的官方文档现在不再将其视为缩写,而是直接称其为 “npm”(全部小写)。最初 npm 确实是 “Node Package Manager” 的缩写。但随着 npm 的发展,它已经不仅仅用于 Node.js,也可以管理前端项目的依赖(如 React、Vue 等),所以官方不再强调其全称。现在 npm 的官网 https://www.npmjs.com 和文档都直接使用 “npm”,而不是 “NPM”。

组成

配置文件路径 | .npmrc

npm – Npmrc – w3resource

  • Per-user config file: $HOME/.npmrc
  • Global config file: $PREFIX/etc/npmrc

命令程序

WIP

Registry

官方:https://registry.npmjs.org

构建

安装 npm 工具

在 Linux 中,升级 NPM 命令:

npm install -g npm@next
npm install -g npm@latest

常用命令整理

# npm list -g # 显示所有用户目录中的包,以树形结构显示
# npm list -g -- depth=0 # 指定树显示的深度
# npm list # 显示当前目录中的包

Q:npm config set … vs. npm set … 两者区别?
A:功能完全相同。命令 npm config set 更正式,是 npm 官方推荐的配置方式。命令 npm set 属于旧版命令,未来可能被弃用。

-f, –force | The -f or –force argument will force npm to fetch remote resources even if a local copy exists on disk.

依赖解析失败,通过该选项得以解决。# 05/21/2025

性质

依赖管理

安装、更新、卸载 JavaScript 包。

自动解析依赖关系,生成 package.json 和 package-lock.json。

package.json,项目的配置文件,包含:

  • dependencies:生产环境依赖(如 express)。
  • devDependencies:开发环境依赖(如 eslint)。
  • scripts:自定义命令(如 npm run dev)。
  • version:项目版本号。
{
  "name": "my-project",
  "version": "1.0.0",
  "scripts": {
    "start": "node app.js",
    "test": "jest"
  },
  "dependencies": {
    "express": "^4.18.2"
  },
  "devDependencies": {
    "eslint": "^8.56.0"
  }
}

package-lock.json

  • 锁定依赖版本,确保不同环境下安装的包版本一致。
  • 不要手动修改它,npm 会自动维护。

脚本管理

通过 npm run 执行自定义脚本(如启动服务器、运行测试)。

包发布与共享

开发者可以发布自己的 npm 包供他人使用。

版本控制

支持语义化版本(SemVer),确保依赖兼容性。

cnpm

cnpm: npm client for npmmirror.com

应用

使用国内阿里云镜像加速

npm 和 yarn 使用国内阿里云镜像加速 – mouseleo – 博客园

npm config set registry \
    https://registry.npm.taobao.org --global
    
npm config set disturl \
    https://npm.taobao.org/dist --global

https://registry.npm.taobao.orghttps://registry.npmmirror.com/

设置使用网络加速

How to use NPM Behind a SOCKS Proxy | by James Jeffery | Medium

# 添加网络加速

npm config set proxy "http://127.0.0.1:8123"
npm config set https-proxy "http://127.0.0.1:8123"

# 删除网络加速

npm config delete proxy
npm config delete https-proxy

调整日志等级

How to get more info from npm install?

通过命令行指定日志等级,如下:

npm install --verbose
npm install --loglevel silly

根据 npm-config 文档:
1)可用的日志等级有 “silent”, “error”, “warn”, “notice”, “http”, “timing”, “info”, “verbose”, “silly”,
2)越往后日志等级越高,输出日志信息也就越多;
3)如果日志写入失败,将写入当前目录下的 npm-debug.log 目录;
4)默认日志为 notice 级别;

检查 Package 版本

检查某个包的已安装版本以及最新版本
node.js – npm – how to show the latest version of a package – Stack Overflow
node.js – Find the version of an installed npm package – Stack Overflow

npm list -g cnpm --json

npm view "cnpm" version
npm info "cnpm" version

基础命令

  1. 初始化项目

“`bash

npm init

“`

– 创建一个新的 `package.json` 文件(项目配置)。

– 使用 `-y` 或 `–yes` 跳过提问,直接生成默认配置。

  1. 安装包

“`bash

npm install <package-name> # 安装指定包(局部安装)

npm i <package-name> # install 的简写

npm install -g <package-name> # 全局安装(如脚手架工具)

npm install –save-dev <package-name> # 作为开发依赖安装(记录在 devDependencies)

npm install –save <package-name> # 作为生产依赖安装(记录在 dependencies)

“`

– 不指定包名时(`npm install`),会根据 `package.json` 安装所有依赖。

  1. 更新包

“`bash

npm update <package-name> # 更新指定包

npm update -g <package-name> # 更新全局包

npm outdated # 检查过时的包

“`

  1. 卸载包

“`bash

npm uninstall <package-name> # 卸载局部包

npm uninstall -g <package-name> # 卸载全局包

“`

### 项目依赖管理

  1. 安装所有依赖

“`bash

npm install # 根据 package.json 安装所有依赖

npm ci # 严格按 package-lock.json 安装(用于自动化环境,如 CI/CD)

“`

  1. 管理依赖版本

– `^1.2.3`:允许次版本号和修订号更新(如 1.2.3 → 1.9.0)。

– `~1.2.3`:仅允许修订号更新(如 1.2.3 → 1.2.9)。

– 直接写版本号:固定版本。

  1. 查看已安装的包

“`bash

npm list # 列出当前项目的依赖树

npm list -g # 列出全局安装的包

npm list –depth=0 # 仅查看顶层依赖

“`

### 运行脚本

  1. 运行自定义脚本

`package.json` 中定义的脚本可以通过以下命令执行:

“`bash

npm run <script-name> # 如 npm run dev

npm run test # 运行测试

npm start # 等同于 npm run start

“`

  1. 快捷命令

“`bash

npm test # 运行测试脚本

npm start # 启动项目

npm stop # 停止服务

“`

### 发布与维护

  1. 发布包

“`bash

npm login # 登录 npm 账号

npm publish # 发布当前包

npm unpublish <package-name>@<version> # 撤销发布(需在72小时内)

“`

  1. 查看包信息

“`bash

npm view <package-name> # 查看包详情

npm search <keyword> # 搜索包

npm info <package-name> # 查看包版本等信息

“`

### 配置与工具

  1. 配置 npm

“`bash

npm config set <key> <value> # 设置配置(如镜像源)

npm config get <key> # 查看配置

npm config list # 列出所有配置

“`

– 示例:设置淘宝镜像源

“`bash

npm config set registry
https://registry.npmmirror.com

“`

  1. 清理缓存

“`bash

npm cache clean –force # 强制清理缓存

“`

  1. 检查环境

“`bash

npm doctor # 检查 npm、Node.js、磁盘权限等环境状态

“`

### 其他实用命令
– 快速修复依赖问题
“`bash
npm audit fix # 自动修复安全漏洞
npm fund # 查看项目依赖的资助信息
“`

– 查看 npm 版本
“`bash
npm -v
“`

### 常见场景示例

  1. 初始化并安装依赖

“`bash

npm init -y

npm install express lodash –save

npm install eslint –save-dev

“`

  1. 运行开发服务器

“`bash

npm run dev

“`

  1. 全局安装常用工具

“`bash

npm install -g nodemon typescript

“`

参考

npm tricks part 1: Get list of globally installed packages
Try the latest stable version of npm | npm Documentation
DeepSeek / 介绍 npm 命令
DeepSeek / npm 的全称是什么