Node.js - 发布包

193 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情

初始化包的基本结构

  • 新建 testLibrary 文件夹,作为包的根目录
  • 在 testLibrary 文件夹中,新建三个文件
    • package.json (包管理配置文件)
    • index.js (包的入口文件)
    • README.md (包的说明文档)

示例(以格式化时间为例,开发一个包)

初始化 package.json

{
    "name": "testDateFormat",
    "version": "1.0.0",
    "main": "index.js",
    "description": "提供格式化时间",
    "keywords": ["date","dateFormat"],
    "license": "ISC"
}
  • name: 代表包的名称。当我们完成包的开发之后需要传到 npm 官网供别人下载使用,这个 name 就是这个包的下载名称。同时,npm 包的名称不可以重复,命名前最好先去官网查重

  • version: 代表包的版本号

  • main: 代表包的入口文件,当外界使用 require() 方法导入包时,其实导入就是 main 属性所指向的文件

  • description: 代表包的描述信息,当用户搜索时,便可看到这个描述内容

    Snip20220327_37.png

  • keywords: 代表包的关键字,当我们搜索的时候用户可以根据关键字检索我们的包

    Snip20220327_38.png

  • license: 代表包的开源许可协议,默认是 ISC 开源许可协议

在 index.js 中定义格式化时间的方法

function dateFormat(dateStr){
    onst dt = new Date(dateStr)
    const y = dt.getFullYear()
    const m = padZore(dt.getMonth()+1)
    const d = padZore(dt.getDate())
    const hh = padZore(dt.getHours())
    const mm = padZore(dt.getMinutes())
    const ss = padZore(dt.getSeconds())
    return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}


// 定义一个补零的函数
function padZore(n){
    return n > 9 ? n : "0" + n
}
// 向外导出需要的成员
module.exports = {
    dateFormat
}

编写包的说明文档

  • 在包的根目录中通过 README.md 文件写使用说明文档,以 markdown 的格式写出来,方便用户参考
  • 关于 README.md 文件,没有强制要求的格式,只要清晰的把包的作用、使用、注意事项描述清楚即可

发布包

  • 注册 npm 账号

    通过官方网站 www.npmjs.com/ 进行账号注册

  • 登录 npm 账号

    • 这里的登录不是网站的登录。npm 账号注册成功之后,需要在终端中执行 npm login 命令
    • 这里的密码输入是盲输,直接输入就好
    • 在运行 npm login 命令时,必须先把下包的服务器地址切换成 npm 的官方服务器,否则会导致发布包失败

    Snip20220327_39.png

  • 把包发布到 npm 上

    将终端切换到包的根目录之后,运行 npm publish 命令,即可将包发布到 npm 上(注:包名不能雷同)

    发布的命令:

    Snip20220327_40.png

    验证发布是否成功(打开官网:www.npmjs.com/ ) image.png Snip20220327_43.png

  • 删除已发布的包

    • 运行 npm unpublish 包名,--force 命令,即可从 npm 删除已发布的包

      删除的命令:

      npm unpublish 包名,--force
      
      eg:
      npm unpublish testdateformat --force
      

      验证删除是否成功

      Snip20220328_44.png

    • npm unpublish 命令只能删除 72小时以内发布的的包

    • npm unpublish 删除的包,在24小时内不允许重复发布

    • 发布包的时候要慎重,尽量不要往 npm 上发布没有意义的包