javascript|手把手教你发个Node.js包
为什么要开发属于自己的包? 我们在学习和工作中所敲的代码,几乎每个项目、资料以及文档都有一定的共性,所谓共性,就是有很多重复的部分,在我们接收一个新项目时,几乎都是从零开始,一些非功能性的需求建设占据了整个项目的大多时间,比如复用率很高的增删改查功能,如果我们可以在项目搭建的过程中提炼代码,将这些公共可共用的代码梳理出来,结合实际进行提炼与打磨,吃透所学的知识点,不断积累的同时提高我们的学习效率。
【这万里长征提升自己的第一步,就从开发一个属于自己的包开始吧!】
如何开发属于自己的包?
一、首先我们来认识一下,什么是规范的包结构?
- 一个规范的包,它的组成结构,必须符合以下 3 点要求:
- 包必须以单独的目录而存在
- 包的顶级目录下要必须包含
package.json
这个包管理配置文件
-
package.json
中必须包含name
,version
,main
这三个属性,分别代表包的名字、版本号、包的入口
- 包必须以单独的目录而存在
- 注意:以上 3 点要求是一个规范的包结构必须遵守的格式,关于更多的约束,可以参考这个网址
文章图片
https://yarnpkg.com/zh-Hans/docs/package-json
格式化日期 (这里以格式化日期简单举例)
//1.导入自己的包
const huahua=require('myselfbag')
//2.格式化日期
const dt=huahua.dateFormat(new Date())
//3.输出转换后的日期格式
console.log(dt)
三、初始化包的基础结构
- 新建 myselfbag 文件夹,作为包的根目录
- 在 myselfbag文件夹中,新建如下三个文件:
-
package.json
(包管理配置文件)
-
index.js
(包的入口文件)
-
README.md
(包的说明文档)
-
package.json
配置文件在项目根目录下通过npm init -y命令快速创建
package.json
管理配置文件:{
//包名
"name": "myselfbag",
//版本号
"version": "1.0.0",
//包的简短描述信息
"description": "提供格式化时间相关功能",
//包的入口(详见代码下方解释)
"main": "index.js",
//关键字
"keywords": [
"dateFormat",
],
//遵循的开源许可协议
"license": "ISC"
}
package.json
文件中 main
的作用:在导入一个文件的时候,如果没有指定一个特定的文件,但是却能够得到某个包的返回内容,这是因为
Node
在使用 require
导入某个路径的时候,发现没有具体的文件,就会看这个路径下查看是否有 package.json
这个文件,如果有,则查看是否有 main
这个属性,如果有,则指定 main
属性对应的文件作为要执行的文件五、在
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
}
六、测试代码
在项目根目录外创建一个text.js文件测试代码是否可以顺利执行
// 测试代码const huahua= require('./myselfbag/index')// 格式化时间的代码
const dtStr = huahua.dateFormat(new Date())
console.log(dtStr)
七、编写包的说明文档
- 包根目录中的
README.md
文件,是包的使用说明文档。通过它,我们可以事先把包的使用说明,以markdown
的格式写出来,方便用户参考
-
README
文件中具体写什么内容,没有强制性的要求;只要能够清晰地把包的作用、用法、注意事项等描述清楚即可
- 我们所创建的这个包的
README.md
文档中,会包含以下 6 项内容
- 安装方式
- 导入方式
- 格式化时间
- 开源协议
- 安装方式
### 安装
```
npm i myselfbag
```### 导入
```js
const huahua= require('./myselfbag')
```### 格式化时间
```js
// 调用 dateFormat 对时间进行格式化
const dtStr = huahua.dateFormat(new Date())
// 结果2021-10-07 18:57:03
console.log(dtStr)
```### 开源协议
ISC
八、注册
npm
账号- 访问 npm 网站,点击
sign up
按钮,进入注册用户界面
- 填写账号相关的信息:
Full Name
、Public Email
、Username
、Password
- 点击
Create an Account
按钮,注册账号
- 登录邮箱,点击验证链接,进行账号的验证
npm
账号-
npm
账号注册完成后,可以在终端中执行npm login
命令,依次输入用户名、密码、邮箱后,即可登录成功
- 注意:在运行
npm login
命令之前,必须先把下包的服务器地址切换为npm
的官方服务器。否则会导致发布包失败!
npm
上将终端切换到包的根目录之后,运行
npm publish
命令,即可将包发布到 npm
上(注意:包名不能雷同,可以先通过npm view 包名 快捷键检测npm官网中是否出现过一样的包名)十一、删除已发布的包
- 运行
npm unpublish 包名 --force
命令,即可从npm
删除已发布的包
- 注意事项
-
npm unpublish
命令只能删除 72 小时以内发布的包
-
npm unpublish
删除的包,在 24 小时内不允许重复发布
- 发布包的时候要慎重,尽量不要往
npm
上发布没有意义的包!
推荐阅读
- 事件代理
- 数组常用方法一
- JavaScript|vue 基于axios封装request接口请求——request.js文件
- JavaScript|JavaScript: BOM对象 和 DOM 对象的增删改查
- JavaScript|JavaScript — 初识数组、数组字面量和方法、forEach、数组的遍历
- JavaScript|JavaScript — call()和apply()、Date对象、Math、包装类、字符串的方法
- JavaScript|JavaScript之DOM增删改查(重点)
- 【读书笔记】JavaScript|【读书笔记】JavaScript DOM编程艺术 (第2版)
- JavaScript判断数组的方法总结与推荐
- javascript|javascript 性能测试笔记