ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

[Node]制作一个node包并且传到npm仓库,并把md文件转化为html

2022-01-23 18:02:19  阅读:166  来源: 互联网

标签:Node node const padZero md case html return dt


目录

背景

开发一个自己的包的步骤,以my-tools为例子

步骤

  1. 新建一个文件,eg:my-tools
    先去https://www.npmjs.com/查询自己命名自的保名字是否有重复的)
  2. npm init -y 初始化文件夹,生产package.json文件,并填写参数
    name是包的名字
    main是包的入口文件
    description报的描述
    keywords是使用时的关键字
    license是包遵循的协议
    在这里插入图片描述
  3. 创建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不变化

发布

  1. 注册账号1. 注册账号
  2. 使用nrm把npm包换成官网镜像
nrm use npm 
  1. 登录并且发布
    登录的时候可能,问你再要一次密码,登录邮箱获取。
    包名,不能和其他包名重合,如果类似,需要修改名字
npm login
npm publish --access=public

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 卸载已经上传的包
    因为下面命令只能删除3天内发布的包,所以不要上传没有意义的包
    其次是已经卸载的包,一天内不能再次上传
    (我上传的那个是为了学习,马上就会卸载)
    npm unpublish 包名 --force
    
    在这里插入图片描述

补充知识

md转化为html

安装 i5ting_toc会把md文件转化成html
使用方式

npm i -g  i5ting_toc
//转换完成后,-o自动打开
 i5ting_toc -f md文件 -o

标签:Node,node,const,padZero,md,case,html,return,dt
来源: https://blog.csdn.net/u013716535/article/details/122652124

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有