打包发布npm包

开发属于自己的包

初始化包的基本结构

1.新建itheima-tools文件夹,作为包的根目录
2.在itheima-tools文件夹中,新建如下三个文件:
package.json(包管理配置文件)
index.js(包的入口文件)
README.md(包的说明文档)
举例:

//package.json文件
{
//包的名称,不能重复
  "name":"tai-tools",
  //初始版本号
  "version":"1.0.0",
  //指定包的入口文件
  "main":"index.js",
  //描述信息
  "description": "提供了格式化时间,HTMLEscape的功能",
  //数组关键字
  "keywords": ["itheima","dataFormat","escape"],
  //包遵循的开源许可协议 默认ISC
  "license": "ISC"
}

创建包:

//这是包的入口文件、
//定义格式化时间的函数
function dateFormat(dateStr)
{
  const dt=new Date(dateStr)
  const y=dt.getFullYear()
  const m=padZero(dt.getMonth()+1)
  const d=padZero(dt.getDate())
  const hh=padZero(dt.getHours())
  const mm=padZero(dt.getMinutes())
  const ss=padZero(dt.getSeconds())

  return `${y}-${m}-${d} ${hh}:${mm}:${ss} `


}
//定义一个补0的函数
function padZero(n)
{
  return n>9?n:'0'+n
}
//定义转义HTML字符的函数
function htmlEscape(htmlstr)
{
  return htmlstr.replace(/<|>|"|&/g,(match)=>{
    switch(match)
    {
      case '<':
        return '&lt;'
      case '>':
        return '&gt;'
      case '"':
        return '&quot;'
      case '&':
        return '&amp;'
    }

   
  })
}

// 向外暴露需要的成员
module.exports={
  dateFormat,
  htmlEscape
}

使用包:

const itheima = require('./tai-tools/')

// 格式化时间的功能
const dtStr = itheima.dateFormat(new Date())
console.log(dtStr)
console.log('-----------')

const htmlStr = '<h1 title="abc">这是h1标签<span>123&nbsp;</span></h1>'
const str = itheima.htmlEscape(htmlStr)
console.log(str)
console.log('-----------')

模块化拆分包

举例:创建一个与index.js同级的src文件夹。里面用来存放函数包
在src目录下创建dataFormat.js
// 定义格式化时间的函数
function dateFormat(dateStr) {
  const dt = new Date(dateStr)

  const y = dt.getFullYear()
  const m = padZero(dt.getMonth() + 1)
  const d = padZero(dt.getDate())

  const hh = padZero(dt.getHours())
  const mm = padZero(dt.getMinutes())
  const ss = padZero(dt.getSeconds())

  return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}

// 定义一个补零的函数
function padZero(n) {
  return n > 9 ? n : '0' + n
}

module.exports = {
  dateFormat
}


修改index.js文件
// 这是包的入口文件

const date = require('./src/dateFormat')


// 向外暴露需要的成员
module.exports = {
//...表示展开运算符
  ...date,

}

照常使用

编写包的说明文档

包括以下的内容:
安装方式、导入方式、封装的函数、开源协议

发布包

1.在终端登录npm账号

npm账号注册完成后,可以在终端中执行npm login 命令,依次输入用户名、密码、邮箱后,即可登录成功
注意:在运行npm login命令之前,必须先把下包的服务器地址切换为npm的官方服务器。否则会导致发布包失败

2.把包发布到npm上

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

删除已经发布的包

运行npm unpublish 包名 --force 命令 就可以从npm删除已经发布的包
注意:
①npm unpublish命令只能删除72小时以内发布的包
②npm unpublish删除的包,在24小时内不允许重复发布

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

上一篇:day12


下一篇:nodejs安装以及全局变量配置