📦 npm 包发布完整指南
记录一次从零开始发布一个 npm 包的完整流程总结
🎯 项目概述
本指南以 yun-waterfall-uni
瀑布流组件为例,详细介绍了从项目创建到 npm 发布的完整流程。
📋 发布流程总览
阶段 1: 准备工作
- ✅ 创建 npm 账号
- ✅ 初始化项目结构
- ✅ 配置 package.json
阶段 2: 开发与测试
- ✅ 开发组件功能
- ✅ 本地测试验证
- ✅ npm link 测试
阶段 3: 发布上线
- ✅ npm 登录认证
- ✅ 发布到 npm 仓库
- ✅ 验证发布成功
🚀 详细步骤
1. 创建 npm 账号
1.1 注册账号
bash
# 访问 npm 官网注册
https://www.npmjs.com/signup
注册信息:
- 用户名:
tangyy9008
- 邮箱: 有效邮箱地址
- 密码: 安全密码
1.2 验证邮箱
- 检查邮箱收件箱
- 点击验证链接
- 完成账号激活
2. 初始化项目
2.1 创建项目目录
bash
mkdir yun-waterfall-uni
cd yun-waterfall-uni
2.2 初始化 package.json
json
{
"name": "yun-waterfall-uni",
"version": "0.0.1",
"description": "uniapp高性能瀑布流组件",
"main": "index.ts",
"keywords": [
"waterfall",
"vue",
"uniapp",
"瀑布流",
"yun-waterfall-uni"
],
"author": "tangyy9008",
"license": "MIT"
}
2.3 创建项目结构
yun-waterfall-uni/
├── components/ # 组件文件
│ ├── yun-waterfall.vue
│ └── yun-waterfall-item.vue
├── types/ # 类型定义
│ ├── yun-waterfall.ts
│ └── yun-waterfall-item.ts
├── utils/ # 工具函数
│ ├── dom.ts
│ ├── utils.ts
│ ├── string.ts
│ ├── useTimeout.ts
│ └── index.ts
├── styles/ # 样式文件
│ └── index.scss
├── config/ # 配置文件
│ └── index.ts
├── demo/ # 示例代码
│ ├── index.vue
│ ├── Columns.vue
│ ├── SimulatedImage.vue
│ └── mockData.ts
├── index.ts # 主入口文件
├── README.md # 说明文档
├── .npmignore # npm 忽略文件
└── package.json # 包配置文件
2.4 创建入口文件 (index.ts)
typescript
// 瀑布流组件主入口文件
// 导出组件
export { default as YunWaterfall } from "./components/yun-waterfall.vue";
export { default as YunWaterfallItem } from "./components/yun-waterfall-item.vue";
// 导出类型定义
export * from "./types/yun-waterfall";
export * from "./types/yun-waterfall-item";
// 导出配置
export * from "./config";
2.5 创建 .npmignore
plaintext
.vscode/
demo/
node_modules/
.git/
*.log
.DS_Store
pnpm-lock.yaml
.gitignore
3. 本地开发与测试
3.1 开发组件功能
- 实现瀑布流布局算法
- 添加响应式支持
- 实现动画效果
- 添加错误处理
3.2 本地测试方法
方法 1: 直接在 demo 中测试
bash
# 在项目根目录运行
npm run dev # 如果有开发脚本
方法 2: npm link 测试
bash
# 在组件项目中创建链接
cd yun-waterfall-uni
npm link
# 在测试项目中使用链接
cd ../test-project
npm link yun-waterfall-uni
方法 3: npm pack 测试
bash
# 打包组件
npm pack
# 在测试项目中安装
cd ../test-project
npm install ../yun-waterfall-uni/yun-waterfall-uni-0.0.1.tgz
3.3 测试检查清单
- ✅ 基础布局功能
- ✅ 响应式表现
- ✅ 动画效果
- ✅ 性能测试
- ✅ 错误处理
- ✅ 配置项验证
- ✅ 事件回调
4. npm 登录与发布
4.1 登录 npm
bash
npm login
输入信息:
- Username: [您的用户名]
- Password: [您的密码]
- Email: [您的邮箱]
- OTP: [如果启用了双因素认证]
或者跳转网页授权登录
bash
PS D:\code-open\yun-waterfall-uni> npm login
npm notice Log in on https://registry.npmjs.org/
Login at:
https://www.npmjs.com/login?next=/login/cli/ba5c97d7-f7f0-496d-b9ec-d404b9e0e7f3
Press ENTER to open in the browser...
4.2 验证登录状态
bash
npm whoami
# 输出: 您的用户名
4.3 检查包名可用性
bash
npm view yun-waterfall-uni
# 如果返回 404,说明包名可用,可以发布
4.4 发布包
bash
npm publish
发布成功输出:
npm notice 📦 yun-waterfall-uni@0.0.1
npm notice Tarball Contents
npm notice 870B README.md
npm notice 13.4kB components/yun-waterfall-item.vue
npm notice 16.3kB components/yun-waterfall.vue
...
npm notice Publishing to https://registry.npmjs.org/ with tag latest
+ yun-waterfall-uni@0.0.1
5. 发布后验证
5.1 查看包信息
bash
npm view yun-waterfall-uni
5.2 浏览器验证
访问: https://www.npmjs.com/package/yun-waterfall-uni
5.3 安装测试
bash
mkdir test-install
cd test-install
npm init -y
npm install yun-waterfall-uni
⚠️ 常见问题与解决方案
问题 1: 缺少 build 脚本
错误: npm error Missing script: "build"
解决方案:
- 对于组件库,可以直接发布源码,无需构建
- 或添加 TypeScript 构建配置
问题 2: 认证失败
错误: npm error code ENEEDAUTH
解决方案:
bash
npm login
# 重新登录
问题 3: 包名冲突
错误: 包名已存在
解决方案:
- 使用作用域包名:
@username/package-name
- 修改包名:
vue-waterfall-uni
问题 4: package.json 警告
警告: npm auto-corrected some errors
解决方案:
bash
npm pkg fix
🔄 版本管理
更新版本
bash
# 补丁版本 (0.0.1 -> 0.0.2)
npm version patch
# 次要版本 (0.0.1 -> 0.1.0)
npm version minor
# 主要版本 (0.0.1 -> 1.0.0)
npm version major
重新发布
bash
npm publish
📊 项目统计
最终包信息:
- 包名:
yun-waterfall-uni
- 版本:
0.0.1
- 压缩大小: 14.7 kB
- 解压大小: 47.3 kB
- 文件数量: 14 个
- 发布状态: ✅ 成功
🎉 总结
通过本次发布流程,我们成功地:
- ✅ 创建了 npm 账号 - 注册并验证了开发者账号
- ✅ 初始化了项目 - 建立了完整的组件库结构
- ✅ 完成了开发 - 实现了高性能瀑布流组件
- ✅ 进行了测试 - 通过多种方式验证了组件功能
- ✅ 成功发布 - 将包发布到了 npm 仓库
- ✅ 验证了结果 - 确认包可以正常安装和使用
下一步计划:
- 📝 完善文档和示例
- 🔄 根据用户反馈迭代优化
- 📈 推广和社区建设
- 🛠️ 持续维护和更新
本文档记录了 yun-waterfall-uni
组件从创建到发布的完整过程,可作为后续项目的参考模板。