如何开发属于自己的包

本文介绍了如何创建一个npm包,包括初始化目录结构,编写package.json、index.js和README.md文件,实现时间格式化和HTML转义功能。详细步骤涵盖了包的发布流程,如设置许可证、注册npm账号、登录、发布及删除包的操作。此外,还讲解了src目录下两个核心功能模块的实现代码。
摘要由CSDN通过智能技术生成

初始化的包的基本结构

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

package.json文件

{
  "name": "testtool322",
  "version": "1.0.0",
  "main": "index.js",
  "description": "提供了格式化时间,HTMLEscape相关的功能",
  "keywords": [
    "testtool322",
    "dateFormat",
    "escape"
  ],
  "license": "ISC"
}
  • name(包的名字)
  • version (包的版本号)
  • main (包的入口)
  • description (包的简短描述信息)
  • keywords (包的搜索关键字)
  • license (包所遵循的开源许可协议)

关于更多license许可协议相关内容,可参考

https://www.jianshu.com/p/86251523e898

index.js文件

//这是包的入口文件
const date = require('./src/dateFormat')
const escape = require('./src/htmlEscape')

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

README.md文件

##安装
```
npm install testtool
```

##导入
```js
const testtool = require('testtool')
```

##格式化时间
```js
//调用dateFormat
const dtStr = testtool = testtool.dateFormat(new Date())
//结果 2022-01-19 22:58:04
console.log(dtStr)
```

## 转义HTML中的特殊字符
```js
// 带转换的HTML字符串
const htmlStr1 = '<h1 title="abc">这是h1标签<span>123&nbsp;</span></h1>'
//调用htmlEscape 方法进行转换
const str1 = testtool.htmlEscape(htmlStr1)
// 转换的结果&lt;h1 title=&quot;abc&quot;&gt;这是h1标签&lt;span&gt;123&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
console.log(str1)
```

## 还原HTML中的特殊字符
```js
//待还原的HTML字符串
const str2 = testtool.htmlUnEscape(str)
//输出的结果<h1 title="abc">这是h1标签<span>123&nbsp;</span></h1>
console.log(str2)
```

## 开源协议
ISC

src文件夹下的两个文件

dateFormat.js文件

// 定义格式化时间的函数
function dateFormat(dtStr) {
    const dt = new Date(dtStr)

    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
}

htmlEscape.js文件

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

//定义还原HTML字符串的函数
function htmlUnEscape(str) {
    return str.replace(/&lt;|&gt;|&quot;|&amp;/g, match => {
        switch (match) {
            case '&lt;':
                return '<'
            case '&gt;':
                return '>'
            case '&quot;':
                return '"'
            case '&amp;':
                return '&'
        }
    })
}

module.exports = {
    htmlEscape,
    htmlUnEscape
}

注册npm账号

访问https://www.npmjs.com/网站,点击sign up,进入注册用户页面

注意:最后要登录邮箱,点击验证链接,进行账号的验证,否则后面发布包的时候会报错

登录npm账号

npm账号注册完成后,可以在终端中执行npm login命令,依次输入用户名、密码、邮箱后,即可登录。(密码是使用盲打的模式

注意: 在运行npm login 命令之前,必须先把下包的服务器地址切换为npm的官方服务器。否则会导致发布包失败

将包发布到npm上

将终端切换到包的根目录之后,运行

npm publish

即可把包发布到npm上(注意:包名不能雷同)

删除已发布的包

npm unpublish 包名 --force

注意:

  1. npm unpublish命令只能删除72小时以内发布的包
  2. npm unpublish删除的包,在24小时内不允许重复发布
  3. 发布包的时候要慎重,尽量不要往npm上发布没有意义的包!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值