目录
背景
开发一个自己的包的步骤,以my-tools为例子
步骤
- 新建一个文件,eg:my-tools
先去https://www.npmjs.com/查询自己命名自的保名字是否有重复的) - npm init -y 初始化文件夹,生产package.json文件,并填写参数
name是包的名字
main是包的入口文件
description报的描述
keywords是使用时的关键字
license是包遵循的协议
- 创建index.js和readme.md文件,至此文件目录搭建完毕
前者入口文件,后者是包的说明
导入
const mytools = require('./my-tools/index')
代码片段
格式化代码
readme.md
具体代码
index.js
//格式化时间
// 1. 定义格式化时间的方法
function dateFormat(dtStr) {
const dt = new Date(dtStr)
console.log(dt)
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
}
//转义html
//replace(正则,替换的格式)
//正则里面,|表示或,g表示全局
function htmlEscape(htmlStr) {
return htmlStr.replace(/<|>|"|&/g, (match) => {
switch (match) {
case '<':
return 'A'
case '>':
return 'B'
case '"':
return 'CC'
case '&':
return 'DDDDD'
}
})
}
//还原html
function htmlUnEscape(str) {
return str.replace(/A|B|CC|DDDDD/g, (match) => {
switch (match) {
case 'A':
return '<'
case 'B':
return '>'
case 'CC':
return '"'
case 'DDDDD':
return '&'
}
})
}
module.exports = {
dateFormat,
htmlEscape,
htmlUnEscape,
}
test.js
const mytools = require('./my-tools/')
//自动通过main查询到index.js文件
// 测试时间
const dt = new Date()
const dtStr = mytools.dateFormat(dt)
console.log(dtStr)
//转义html
const htmlStr = '<h1 title="abc">标签鸭<span>123</span></h1>'
const hStr = mytools.htmlEscape(htmlStr)
console.log(hStr)
//还原html(Ah1 title=CCabcCCB标签鸭AspanB123A/spanBA/h1B)
const zStr = mytools.htmlUnEscape(hStr)
console.log(zStr)
拆分
目录
dateFormat.js
//格式化时间
// 1. 定义格式化时间的方法
function dateFormat(dtStr) {
const dt = new Date(dtStr)
console.log(dt)
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
//replace(正则,替换的格式)
//正则里面,|表示或,g表示全局
function htmlEscape(htmlStr) {
return htmlStr.replace(/<|>|"|&/g, (match) => {
switch (match) {
case '<':
return 'A'
case '>':
return 'B'
case '"':
return 'CC'
case '&':
return 'DDDDD'
}
})
}
//还原html
function htmlUnEscape(str) {
return str.replace(/A|B|CC|DDDDD/g, (match) => {
switch (match) {
case 'A':
return '<'
case 'B':
return '>'
case 'CC':
return '"'
case 'DDDDD':
return '&'
}
})
}
module.exports = {
htmlEscape,
htmlUnEscape,
}
index.js
const data = require('./src/dateFormat')
const escape = require('./src/htmlEscape')
module.exports = {
...data,
...escape,
}
test.js不变化
发布
- 注册账号
- 使用nrm把npm包换成官网镜像
nrm use npm
- 登录并且发布
登录的时候可能,问你再要一次密码,登录邮箱获取。
包名,不能和其他包名重合,如果类似,需要修改名字
npm login
npm publish --access=public
- 卸载已经上传的包
因为下面命令只能删除3天内发布的包,所以不要上传没有意义的包
其次是已经卸载的包,一天内不能再次上传
(我上传的那个是为了学习,马上就会卸载)npm unpublish 包名 --force
补充知识
md转化为html
安装 i5ting_toc会把md文件转化成html
使用方式
npm i -g i5ting_toc
//转换完成后,-o自动打开
i5ting_toc -f md文件 -o