一、包发布:把代码分享给全世界

发布包到npm仓库就像开一家小店,准备好商品(代码)后简单几步就能开门营业。

技术栈:Node.js

# 1. 登录npm账号(没有账号先去官网注册)
npm login  
# 输入用户名、密码、邮箱(注意开启二次验证)

# 2. 初始化包(若未初始化)
npm init -y  
# 会生成package.json文件,记得修改"main"字段指向入口文件

# 3. 发布!  
npm publish  
# 成功后会显示包名和版本,如 my-package@1.0.0

# 4. 发布测试版(可选)
npm publish --tag beta  
# 用户需通过 `npm install my-package@beta` 安装

注意事项

  • 包名必须全网唯一(可提前通过 npm search 检查)
  • 每次发布需更新版本号(参考第二节)
  • 敏感信息用 .npmignore 过滤(类似.gitignore)

二、版本升级:语义化版本控制

版本号不是随便改的,主版本.次版本.修订号 分别代表不同级别的变更。

技术栈:Node.js

# 1. 手动修改package.json中的"version"字段
# 或使用命令自动升级:

# 修订号+1(修复bug)
npm version patch  # 1.0.0 → 1.0.1

# 次版本+1(新增功能且向下兼容)
npm version minor  # 1.0.1 → 1.1.0

# 主版本+1(不兼容的改动)
npm version major  # 1.1.0 → 2.0.0

# 查看历史版本
npm view my-package versions  

场景对比

  • 修复文案错误 → patch
  • 新增API方法 → minor
  • 删除旧API → major

三、脚本运行:让重复操作一键完成

package.json的"scripts"字段能帮你自动化执行任务,比如打包、测试。

技术栈:Node.js

// package.json示例
{
  "scripts": {
    "start": "node app.js",       // 启动应用
    "build": "webpack --mode production", // 打包
    "test": "jest --coverage",    // 跑测试
    "deploy": "npm run build && scp -r ./dist user@server:/path" // 组合命令
  }
}

运行方式

# 基本执行
npm run build  

# 简写(仅限start/test等预设命令)
npm test  

# 并行任务(需安装npm-run-all)
npm-run-all build:css build:js  

优点

  • 复杂命令变简单别名
  • 团队协作时统一执行标准

四、依赖审计:给项目做个安全检查

npm audit 能检查依赖库中的已知漏洞,像给项目定期体检。

技术栈:Node.js

# 1. 全面检查
npm audit  

# 2. 自动修复可修补的漏洞
npm audit fix  

# 3. 仅检查高风险漏洞
npm audit --audit-level=high  

# 4. 生成详细报告(JSON格式)
npm audit --json > report.json  

典型输出

=== npm audit security report ===  
High            Regular Expression Denial of Service  
Package         lodash  
Dependency of   webpack  
Path            webpack > lodash  
More info       https://npmjs.com/advisories/1523  

应对策略

  1. 按照建议升级依赖
  2. 若暂时无法修复,用 npm audit suppress 临时忽略(需记录原因)

五、实用技巧锦囊

1. 查看包详情

npm view lodash dependencies       # 查看依赖项  
npm view lodash dist-tags.latest  # 查看最新版本号  

2. 清理缓存

npm cache clean --force  # 解决某些安装异常问题  

3. 快速初始化

npm init -y --scope=myorg  # 生成带作用域的包名(如@myorg/utils)  

4. 依赖版本锁定

npm shrinkwrap  # 生成npm-shrinkwrap.json锁定依赖树  

总结与场景指南

适用场景

  • 团队协作开发公共组件库(包发布)
  • 长期维护的开源项目(版本控制)
  • 复杂构建流程(脚本自动化)
  • 金融、医疗等对安全敏感的项目(依赖审计)

技术优缺点

  • ✅ npm生态丰富,工具链完整
  • ❌ 部分操作需联网(如发布、审计)

最后建议

  1. 每次发布前跑一遍 npm test
  2. 使用CI工具自动执行 npm audit
  3. 主版本升级时通过 @next 标签先进行灰度测试