NPM 快速入门指南

cover

引言

自 2009 年 5 月 28 日发布至今,Node.js 的包管理器 npmopen in new window 已然成为全球最大的软件注册机构。
它不仅帮你安装第三方库,还承包了依赖管理、自动化脚本甚至项目构建,几乎贯穿现代前端与 Node.js 项目的整个生命周期,堪称开发的“命脉”之一。
本指南将带你从零开始快速掌握 npm 的核心用法,轻松上手项目开发 🚀 。

环境安装

首先,要使用 npm 包管理器,就需要安装 Node.js 环境,没安装的话可前往 Node.jsopen in new window 官网自行下载安装。
安装成功后,打开终端,执行以下命令确认是否成功:

node -v && npm -v

如果控制台成功打印出了两个版本号,恭喜你 🎉 ,环境已就绪!

搜索包

想查找某类相关库时,可以通过关键词搜索:

npm search [keyword]

它会列出相关包的简介和版本,方便你快速筛选。

查看包

想了解包的描述、作者、依赖、版本等详情,可使用:

npm view [package-name]

默认只显示当前最新版本,如果你想看所有历史版本,可以加上参数:

npm view [package-name] version

除此之外,如果你只想确认一个包是否存在,这个命令也能帮上忙。

安装包

最基础的安装方式如下:

npm install [package-name]

如果该包只在开发阶段用到,可以作为开发依赖安装:

npm install [package-name] --save-dev

全局安装方式如下,让所有项目都能访问这个包:

npm install [package-name] --global

需要某个特定版本的包,可以在包名后指定版本号:

npm install [package-name]@[version]

想确保使用的是最新稳定版,这样写就对了:

npm install [package-name]@latest

可能有人会好奇,这种安装方式和 npm install [package-name] 有什么区别?

  • 【场景一】项目中首次安装该包,两者的表现一致,都是将最新的稳定版本安装到项目中:
npm install axios
# 等同于
npm install axios@latest
  • 【场景二】更新已存在的包

如果在 package.json 中已有版本约束,例如 axios: ^1.0.0,那么这两者区别如下:

npm install axios           # 只会更新到符合 ^1.0.0 约束的最新版本,例如是 1.6.2
npm install axios@latest    # 强制更新到最新版本,可能是 2.0.0,会突破原有约束

无论哪种方式,最终都会更新 package.jsonnode_modules,确保项目依赖一致可控。

版本范围符号

package.json 中,版本号前常见的符号含义如下:

符号含义示例允许的版本范围
^兼容版本更新,不允许主版本号变化^1.2.31.2.3 ≤ 版本 < 2.0.0
~补丁版本更新,不允许次版本号变化~1.2.31.2.3 ≤ 版本 < 1.3.0
无符号严格锁定版本1.2.3仅 1.2.3
>=大于等于指定版本>=1.2.31.2.3 及以上所有版本

已安装包的列表

想查看当前项目安装了哪些包,可以使用:

npm list

如果想查看全局安装的包:

npm list --global

只查看顶级依赖(不显示嵌套依赖):

npm list --depth=0

更新包

要升级现有依赖包,可以使用:

npm update [package-name]

卸载包

不再需要的包可以这样卸载:

npm uninstall [package-name]

卸载后会从 package.jsonpackage-lock.json 中移除对应记录。

发布包

既然可以下载并使用别人写的包,那么自然也可以发布你写的包,供别人使用。接下来,就让我带你从零构建一个包,并将它发布到 npm 吧。

登录账号

第一步,你需要拥有一个 npm 账号,若还没有,可以 前往注册open in new window
若有账号,在终端执行登录命令:

npm login

根据提示依次输入用户名、密码和邮箱地址,登录成功后会看到提示:

Logged in on https://registry.npmjs.org/.

创建项目

假如我们要发布一个叫做 package_name 的包,可以创建一个项目目录,并初始化:

mkdir package_name
cd package_name
npm init -y

执行完成后,我们的项目根目录下会出现 package.json 文件,内容大致如下:

{
  "name": "package_name",
  "version": "1.0.0",
  "main": "./dist/index.js",
  "module": "index.js",
  "scripts": {},
  "keywords": [],
  "author": "demigodliu",
  "license": "MIT",
  "description": "desc"
}

TIP

main 字段表示的是 CommonJS 规范的入口文件,module 字段表示的是 ES6 规范的入口文件。

功能编写

在功能编写的时候,建议使用 ES6+ 语法,发布时再进行编译为 ES5 语法即可。这样子你的包就可以同时兼容现代环境和传统环境了。
如果你使用的是 ES Module,别忘了在 package.json 中配置:

"type": "module"

发布项目

功能编写完成后,执行以下命令进行发布:

npm publish

发布成功后,其他开发者就可以搜索,并且安装你的包了!

更新版本

如果你更新了包并且希望再次发布,那你必须将 package.json 中的 version 值更新,否则 npm 会阻止你重复发布同一版本号的包。

删除项目

假如你想删除这个包项目,不希望别人再使用,那么可以执行以下命令将其从 npm 中删除:

npm unpublish package_name

WARNING

仅能删除发布 72 小时以内的包,并且操作是不可逆的,需要谨慎操作。

常用配置速查

package.json 文件中,它记录了当前项目的元信息和依赖,是 npm 项目的核心文件,下面是一些基础字段的作用说明:

字段说明示例
name包名称,必须唯一,建议小写无空格"my-utils"
version当前包的版本,需符合语义化版本规范"1.0.0"
description包的简要描述"A lightweight utility library"
mainCommonJS 环境下的入口文件路径"./dist/index.js"
moduleESModule 环境下的入口文件路径"./dist/index.mjs"
types类型声明入口(用于 TypeScript 支持)"./types/index.d.ts"
scripts自定义命令脚本{ "build": "vite build", "test": "vitest" }
dependencies项目运行时依赖{ "vue": "^3.4.0" }
devDependencies项目开发时依赖{ "vite": "^5.0.0" }
peerDependencies对等依赖,要求使用者项目同时安装{ "vue": "^3.0.0" }
keywordsnpm 搜索关键字[ "utils", "npm", "toolkit" ]
author作者信息"demigodliu demo@example.comopen in new window"
license许可证类型"MIT"
repository代码仓库地址"git+https://github.com/yourname/repo.git"
files发布到 npm 的文件列表[ "dist", "types" ]
engines限定支持的 Node 或 npm 版本{ "node": ">=16.0.0" }
private是否私有,防止被发布true

尾声

本文带你快速掌握了 NPM 的基础用法,涵盖了从依赖安装到包发布的核心操作。
如果想深入了解如何在大型项目中高效使用 NPM,欢迎继续阅读:《高级 NPM 使用技巧:构建大型项目的实践经验》
学会用刀只是入门,学会挥刀才是关键,高级用法里,我们不见不散 👋🏻 。

上次更新 2025/8/12 00:25:09