node|手把手教你发个包

目录
包的简介
首先让我们简单了解下为什么需要包:
包的分类:
包的规范(基本):
建包步骤:
前期准备:
发布包:
删除包:
拓展:
包的简介 首先让我们简单了解下为什么需要包:

  • 由于 Node.js 的内置模块仅提供了一些底层的 API,导致在基于内置模块进行项目开发的时,效率很低
  • 包是基于内置模块封装出来的,提供了更高级、更方便的 API,极大的提高了开发效率
  • 包和内置模块之间的关系,类似于 jQuery 和 浏览器内置 API 之间的关系
包的分类:
  1. 项目包:开发依赖包、核心依赖包
  2. 全局包:下好后电脑上在哪都可以用,项目包需要去下载到的项目中才能用
包的规范(基本):
  1. 包必须以单独的目录而存在
  2. 包的顶级目录下要必须包含package.json这个包管理配置文件
  3. package.json中必须包含name、version、main这三个属性,分别代表包的名字、版本号、包的入口 现在进入建包!!!!
建包步骤: 前期准备:
package.json:包的配置文件
index.js:入口文件
说明文档:安装方式、导入方式、格式化时间、转义HTML中的特殊字符、还原HTML中的特殊字符、开源协议(没有强制性要求)
发布包:
  1. 访问https://www.npmjs.com/,点击sign up按钮,进入注册用户界面
  2. 填写账号相关信息:full name、public email、username、password
  3. 点击create an account按钮注册
  4. 回到终端npm login命令依次输入用户名、密码(在输入时密码不显示,其实已经输入进去了,大家一定要记好密码)、邮箱
node|手把手教你发个包
文章图片

注意:不要在镜像服务器上登录发布包,需要将服务器切换到npm服务器上(具体切换会在后面文章单独说明)。再发布前先去npm官网看看有没有相同名字的包,如果有相同名字的包需更改包名,不然会造成发布不成功
删除包:
运行npm unpublish 包名 --force命令,即可从npm删除已发布的包
拓展: 如果建包是存在多个功能最好划分不同模块!!!
// 定义格式化时间的函数 function dateFormat(dateStr) { const dt = new Date(dateStr)const y = padZero(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 }

将格式化时间的功能,拆分到 src -> dateFormat.js 中
// 定义转义 HTML 字符的函数 function htmlEscape(htmlstr) { return htmlstr.replace(/<|>|"|&/g, match => { switch (match) { case '<': return '&glt; ' case '>': return '> ' case '"': return '" ' case '&': return '& ' } }) }// 定义还原 HTML 字符的函数 function htmlUnEscape(str) { return str.replace(/&glt; |> |" |& /g, (match) => { switch (match) { case '&glt; ': return '<' case '> ': return '>' case '" ': return '"' case '& ': return '&' } }) }module.exports = { htmlEscape, htmlUnEscape }

将处理 HTML 字符串的功能,拆分到 src -> htmlEscape.js 中
// 这是包的入口文件const date = require('./src/dateFormat') const escape = require('./src/htmlEscape')// 导出 module.exports = { ...date, ...escape }

在 index.js 中,导入两个模块,然后使用 module.exports 把对应的方法共享出去
【node|手把手教你发个包】小白总结,欢迎大佬点评!!!

    推荐阅读