手把手教你发个包

目录

包的简介

首先让我们简单了解下为什么需要包:

包的分类:

包的规范(基本):

建包步骤: 

前期准备:

 发布包:

删除包:

拓展:


包的简介

首先让我们简单了解下为什么需要包:

  • 由于 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命令依次输入用户名、密码(在输入时密码不显示,其实已经输入进去了,大家一定要记好密码)、邮箱

手把手教你发个包_第1张图片

注意不要在镜像服务器上登录发布包,需要将服务器切换到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 把对应的方法共享出去


小白总结,欢迎大佬点评!!!

你可能感兴趣的