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

认识

官网:https://www.npmjs.com
文档:https://docs.npmjs.com/
仓库:https://github.com/npm/cli

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

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

Q:npm 是否属于 Node.js 项目?
A:npm is a package manager for the JavaScript programming language maintained by npm, Inc., a subsidiary of GitHub. npm is the default package manager for the JavaScript runtime environment Node.js and is included as a recommended feature in the Node.js installer. Wikipedia / npm / https://en.wikipedia.org/wiki/Npm 所以,Node.js 只是包含 npm 命令,而并非 Node.js 的部分。

组成

配置文件路径 | .npmrc

npm – Npmrc – w3resource

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

模块仓库 Registry

性质

依赖管理(核心功能)

安装、更新、卸载 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 会自动维护。

install

npm config set package-lock=false // ignore package-lock.json files when installing

config

https://docs.npmjs.com/cli/v11/commands/npm-config

构建

安装 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

npm config set color false # 关闭颜色输出

使用国内阿里云镜像加速

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 文档 | https://docs.npmjs.com/misc/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

改进

… 404 Not Found ..

npm error 404 Not Found – GET https://cdn.npmmirror.com/packages/wrap-ansi/9.0.1/wrap-ansi-9.0.1.tgz

. .. .editorconfig .env.development .env.production .env.test .eslintrc .git .gitignore .husky .swc

package-lock.json 锁的死死的,官方变了,资源又下载不到

cnpm

cnpm: npm client for npmmirror.com

参考

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