认识
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
- Per-user config file: $HOME/.npmrc
- Global config file: $PREFIX/etc/npmrc
命令程序
WIP
Registry
构建
安装 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.
性质
依赖管理
安装、更新、卸载 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.org ⇒ https://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
基础命令
- 初始化项目
“`bash
npm init
“`
– 创建一个新的 `package.json` 文件(项目配置)。
– 使用 `-y` 或 `–yes` 跳过提问,直接生成默认配置。
- 安装包
“`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` 安装所有依赖。
- 更新包
“`bash
npm update <package-name> # 更新指定包
npm update -g <package-name> # 更新全局包
npm outdated # 检查过时的包
“`
- 卸载包
“`bash
npm uninstall <package-name> # 卸载局部包
npm uninstall -g <package-name> # 卸载全局包
“`
—
### 项目依赖管理
- 安装所有依赖
“`bash
npm install # 根据 package.json 安装所有依赖
npm ci # 严格按 package-lock.json 安装(用于自动化环境,如 CI/CD)
“`
- 管理依赖版本
– `^1.2.3`:允许次版本号和修订号更新(如 1.2.3 → 1.9.0)。
– `~1.2.3`:仅允许修订号更新(如 1.2.3 → 1.2.9)。
– 直接写版本号:固定版本。
- 查看已安装的包
“`bash
npm list # 列出当前项目的依赖树
npm list -g # 列出全局安装的包
npm list –depth=0 # 仅查看顶层依赖
“`
—
### 运行脚本
- 运行自定义脚本
`package.json` 中定义的脚本可以通过以下命令执行:
“`bash
npm run <script-name> # 如 npm run dev
npm run test # 运行测试
npm start # 等同于 npm run start
“`
- 快捷命令
“`bash
npm test # 运行测试脚本
npm start # 启动项目
npm stop # 停止服务
“`
—
### 发布与维护
- 发布包
“`bash
npm login # 登录 npm 账号
npm publish # 发布当前包
npm unpublish <package-name>@<version> # 撤销发布(需在72小时内)
“`
- 查看包信息
“`bash
npm view <package-name> # 查看包详情
npm search <keyword> # 搜索包
npm info <package-name> # 查看包版本等信息
“`
—
### 配置与工具
- 配置 npm
“`bash
npm config set <key> <value> # 设置配置(如镜像源)
npm config get <key> # 查看配置
npm config list # 列出所有配置
“`
– 示例:设置淘宝镜像源
- 清理缓存
“`bash
npm cache clean –force # 强制清理缓存
“`
- 检查环境
“`bash
npm doctor # 检查 npm、Node.js、磁盘权限等环境状态
“`
—
### 其他实用命令
– 快速修复依赖问题
“`bash
npm audit fix # 自动修复安全漏洞
npm fund # 查看项目依赖的资助信息
“`
– 查看 npm 版本
“`bash
npm -v
“`
—
### 常见场景示例
- 初始化并安装依赖
“`bash
npm init -y
npm install express lodash –save
npm install eslint –save-dev
“`
- 运行开发服务器
“`bash
npm run dev
“`
- 全局安装常用工具
“`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 的全称是什么