node|手把手教你发个包
目录
包的简介
首先让我们简单了解下为什么需要包:
包的分类:
包的规范(基本):
建包步骤:
前期准备:
发布包:
删除包:
拓展:
包的简介
首先让我们简单了解下为什么需要包:
- 由于 Node.js 的内置模块仅提供了一些底层的 API,导致在基于内置模块进行项目开发的时,效率很低
- 包是基于内置模块封装出来的,提供了更高级、更方便的 API,极大的提高了开发效率
- 包和内置模块之间的关系,类似于 jQuery 和 浏览器内置 API 之间的关系
- 项目包:开发依赖包、核心依赖包
- 全局包:下好后电脑上在哪都可以用,项目包需要去下载到的项目中才能用
- 包必须以单独的目录而存在
- 包的顶级目录下要必须包含package.json这个包管理配置文件
- package.json中必须包含name、version、main这三个属性,分别代表包的名字、版本号、包的入口 现在进入建包!!!!
package.json:包的配置文件
index.js:入口文件
说明文档:安装方式、导入方式、格式化时间、转义HTML中的特殊字符、还原HTML中的特殊字符、开源协议(没有强制性要求)
发布包:
- 访问https://www.npmjs.com/,点击sign up按钮,进入注册用户界面
- 填写账号相关信息:full name、public email、username、password
- 点击create an account按钮注册
- 回到终端npm login命令依次输入用户名、密码(在输入时密码不显示,其实已经输入进去了,大家一定要记好密码)、邮箱
文章图片
注意:不要在镜像服务器上登录发布包,需要将服务器切换到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|手把手教你发个包】小白总结,欢迎大佬点评!!!
推荐阅读
- Node.js中readline模块实现终端输入
- 斯米兰开放,|斯米兰开放, 这篇最火的海岛穿搭指南,手把手教你惊艳整片海滩!
- Promise|Promise 异步控制流
- Nginx进阶(1)——nginx本地代理配置访问node服务
- 脚手架开发
- 带你了解NodeJS事件循环
- vue使用vue-cli新建项目
- Node入门教程(11)第九章(Node|Node入门教程(11)第九章:Node 的网络模块)
- nodejs|nodejs 版本管理
- nodejs生成uuid