发布 NPM 包与切换镜像源
🎯 引言
学会这篇文章,你将了解如何把一段可复用的代码打包发布到 NPM 上,供全世界的开发者使用。同时,你还会掌握切换 NPM 镜像源的技巧,解决国内下载依赖慢的问题。
🧱 NPM 镜像源是什么
我们平时执行 npm install 时,NPM 默认会从国外的官方仓库下载包。由于网络原因,国内访问可能会很慢,甚至失败。
镜像源就是官方仓库的副本,放在国内服务器上。切换成国内镜像后,下载速度会快很多。
常见的国内镜像源:
| 镜像源 | 地址 |
|---|---|
| 淘宝 NPM 镜像 | https://registry.npmmirror.com |
| 腾讯云镜像 | https://mirrors.cloud.tencent.com/npm |
| 华为云镜像 | https://repo.huaweicloud.com/repository/npm |
🛠 切换镜像源
查看当前镜像源
npm config get registry
临时使用指定镜像源
npm install dayjs --registry=https://registry.npmmirror.com
永久切换镜像源
npm config set registry https://registry.npmmirror.com
设置后再执行 npm config get registry,应该能看到新的地址。
.npmrc 文件:registry=https://registry.npmmirror.com
⚠️ 发布包前要切回官方源
如果你要把包发布到 NPM 官方仓库,必须先切回官方源:
npm config set registry https://registry.npmjs.org
国内镜像源通常只有读取权限,无法发布包。
🚀 发布你的第一个 NPM 包
第 1 步:注册 NPM 账号
前往 https://www.npmjs.com 注册一个账号,并验证邮箱。
第 2 步:登录 NPM
在终端中执行:
npm login
按提示输入用户名、密码和邮箱,登录成功后会提示 Logged in as xxx。
第 3 步:准备项目
创建一个文件夹,初始化项目:
mkdir my-first-npm-package
cd my-first-npm-package
npm init -y
第 4 步:编写入口文件
创建 index.js:
function sayHello(name) {
return `Hello, ${name}!`;
}
module.exports = { sayHello };
第 5 步:发布
npm publish
如果一切顺利,你会看到提示,包就已经发布到 NPM 上了。
version 设为 1.0.0 或 0.1.0。每次更新代码后,都需要手动提升 version,才能再次发布。📦 更新已发布的包
更新代码后,需要修改版本号再发布。可以用:
npm version patch # 修订号 +1,如 1.0.0 -> 1.0.1
npm version minor # 次版本 +1,如 1.0.0 -> 1.1.0
npm version major # 主版本 +1,如 1.0.0 -> 2.0.0
然后执行:
npm publish
🧾 小节总结
- 国内网络下载 NPM 包慢时,可以切换国内镜像源加速。
- 发布包前必须切回官方源
https://registry.npmjs.org。 - 发布包需要先注册 NPM 账号、登录、准备好项目、执行
npm publish。 - 更新包时要先提升
version,再重新发布。
❓ 知识问答
Q1:镜像源和 NPM 官方仓库有什么关系?
A:镜像源会定期同步官方仓库的内容,内容基本一致,但发布包必须在官方仓库进行。
Q2:为什么我在国内镜像源下无法发布包?
A:国内镜像源通常只提供下载服务,没有写入权限。发布包需要切回 https://registry.npmjs.org 并登录账号。
Q3:.npmrc 文件有什么用?
A:它可以为当前项目单独配置 NPM 行为,比如指定镜像源、设置代理、控制依赖安装策略等。
Q4:npm version patch 做了什么?
A:它会自动把 package.json 中的版本号最后一位加 1,比如 1.0.0 变成 1.0.1,并自动生成一次 Git 提交(如果有 Git 仓库)。
🧪 小练习
- 查看你当前电脑的 NPM 镜像源:
# 请在这里输入命令
- 尝试切换为淘宝镜像源,并安装任意一个包测试速度。
- (可选)注册一个 NPM 账号,尝试发布一个最简单的工具函数包。
🎉 恭喜你学会了切换镜像源和发布 NPM 包!下一篇我们会学习 package-lock.json 和 npm ci,让你的依赖管理更加稳定可靠。
