手把手教你发个包
包? 书包? lv包,都不是,说到包对于程序员的开发中会起到很大的做作用,是我们开发中不可或缺的一部分,今天我就手把手教你做一个包
1.什么是包
概念 : 在Node.js 中,包就是第三方模块就叫做包;
1.1?Node.js 中三种模块
-
内置模块 -
自定义模块 -
第三方模块 而在我们开发的过程中使用的包,就是第三方模块
2.为什么需要包
1.由于Node.js 内置模块仅仅提供了一些底层的API,导致你在开发的过程中功能相对较少,影响开发效率
2.包是基于内置模块封装出来的,提供了更高级,更方便的提供的API,大大的提高了开发效率,让你开发出来的项目逼格直接提升了起来
3.包和内置模块之间的关系,和jQuery和浏览器内置API之间的关系
3.包的来源
包是有第三方的个人或者团队制作出来的,它不同于Node.js 的内置模块和自定义模块
重点:免费下载!!!!
2.2 如何下载一个包
1.在你下载Node.js 的时候,全名叫做?Node Package Manager (简称npm 包管理工具)的管理工具跟随Node.js 一起安装到了你的电脑上
2.使用npm install 指令
npm官网:?npm
npm install 包的完整名称
//npm i是简写,没有任何区别
npm i 包的完整名称
3.指定包的版本
npm i 包的名称@2.22.2
5.开发并上传一个属于自己包
5.1规范的包结构
5.1. 一个规范的包,它的组成结构,必须符合以下 3 点要求:
- 包必须以单独的目录而存在
- 包的顶级目录下要必须包含?
package.json ?这个包管理配置文件 package.json ?中必须包含?name ,version ,main ?这三个属性,分别代表包的名字、版本号、包的入口
5.2 初始化包的结构
1.新建?itheima-tools ?文件夹,作为包的根目录
2.在?itheima-tools ?文件夹中,新建如下三个文件:
package.json ?(包管理配置文件)index.js ?(包的入口文件)README.md ?(包的说明文档)
5.3 初始化?package.json ?配置文件
5.4 初始化?package.json ?配置文件
{
?"name": "flightloong-tools",
?"version": "1.0.0",
?"description": "提供格式化时间、HTMLEscape相关功能",
?"main": "index.js",
?"keywords": [
? ?"itcast",
? ?"itheima",
? ?"dateFormat",
? ?"escape"
],
?"license": "ISC"
}
注意事项: 1.name 是独一无二的,建立之前建议去官网查询此名字
2.version 是版本号,更新后只能需累加再上传,版本号只能增加,不能减小
3.main 是所指向的能暴露出的代码
4.license 是否符合ISO 协议
5.5 在?index.js ?中定义格式化时间的方法
// 包的入口文件 index.js
// 定义格式化时间的函数
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
}
// 测试代码
const lvpackage = require('./flightloong-tools/index')
// 格式化时间的代码
const dtStr = lvpackage.dateFormat(new Date())
console.log(dtStr) // 2020-06-23 01:16:57
5.6 划分不同的模块
-
将格式化时间的功能,拆分到?src ?->?dateFormat.js ?中 -
在?index.js ?中,导入两个模块,得到需要向外共享的方法 -
在?index.js ?中,使用?module.exports ?把对应的方法共享出去
// dateFormat.js
// 定义格式化时间的函数
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
}
5.7 编写包的说明文档
-
包根目录中的?README.md ?文件,是包的使用说明文档。通过它,我们可以事先把包的使用说明,以?markdown ?的格式写出来,方便用户参考 -
README ?文件中具体写什么内容,没有强制性的要求;只要能够清晰地把包的作用、用法、注意事项等描述清楚即可 -
我们所创建的这个包的?README.md 文档中,会包含以下 6 项内容
### 安装
npm i flightloong-tools
### 导入js
const lvpackage = require('./flightloong-tools')
### 格式化时间
// 调用 dateFormat 对时间进行格式化
const dtStr = lvpackage.dateFormat(new Date())
// 结果 2021-10-07 11:20:58
console.log(dtStr)
### 开源协议
ISC
5.8 注册?npm ?账号
- 访问?npm?网站,点击?
sign up ?按钮,进入注册用户界面 - 填写账号相关的信息:
Full Name 、Public Email 、Username 、Password - 点击?
Create an Account ?按钮,注册账号 - 登录邮箱,点击验证链接,进行账号的验证
5.9 登录?npm ?账号
npm ?账号注册完成后,可以在终端中执行?npm login ?命令,依次输入用户名、密码、邮箱后,即可登录成功- 注意:在运行?
npm login ?命令之前,必须先把下包的服务器地址切换为?npm ?的官方服务器。否则会导致发布包失败!
5.10 把包发布到?npm 上
将终端切换到包的根目录之后,运行?npm publish ?命令,即可将包发布到?npm ?上(注意:包名不能雷同)
5.14 - 删除已发布的包
-
运行?npm unpublish 包名 --force ?命令,即可从?npm ?删除已发布的包 -
注意事项
npm unpublish ?命令只能删除 72 小时以内发布的包npm unpublish ?删除的包,在 24 小时内不允许重复发布- 发布包的时候要慎重,尽量不要往?
npm ?上发布没有意义的包!
|