一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情。
初始化包的基本结构
- 新建 testLibrary 文件夹,作为包的根目录
- 在 testLibrary 文件夹中,新建三个文件
- package.json (包管理配置文件)
- index.js (包的入口文件)
- README.md (包的说明文档)
示例(以格式化时间为例,开发一个包)
初始化 package.json
{
"name": "testDateFormat",
"version": "1.0.0",
"main": "index.js",
"description": "提供格式化时间",
"keywords": ["date","dateFormat"],
"license": "ISC"
}
-
name: 代表包的名称。当我们完成包的开发之后需要传到 npm 官网供别人下载使用,这个 name 就是这个包的下载名称。同时,npm 包的名称不可以重复,命名前最好先去官网查重
-
version: 代表包的版本号
-
main: 代表包的入口文件,当外界使用
require()方法导入包时,其实导入就是 main 属性所指向的文件 -
description: 代表包的描述信息,当用户搜索时,便可看到这个描述内容
-
keywords: 代表包的关键字,当我们搜索的时候用户可以根据关键字检索我们的包
-
license: 代表包的开源许可协议,默认是 ISC 开源许可协议
在 index.js 中定义格式化时间的方法
function dateFormat(dateStr){
onst dt = new Date(dateStr)
const y = dt.getFullYear()
const m = padZore(dt.getMonth()+1)
const d = padZore(dt.getDate())
const hh = padZore(dt.getHours())
const mm = padZore(dt.getMinutes())
const ss = padZore(dt.getSeconds())
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
// 定义一个补零的函数
function padZore(n){
return n > 9 ? n : "0" + n
}
// 向外导出需要的成员
module.exports = {
dateFormat
}
编写包的说明文档
- 在包的根目录中通过 README.md 文件写使用说明文档,以 markdown 的格式写出来,方便用户参考
- 关于 README.md 文件,没有强制要求的格式,只要清晰的把包的作用、使用、注意事项描述清楚即可
发布包
-
注册 npm 账号
通过官方网站 www.npmjs.com/ 进行账号注册
-
登录 npm 账号
- 这里的登录不是网站的登录。npm 账号注册成功之后,需要在终端中执行
npm login命令 - 这里的密码输入是盲输,直接输入就好
- 在运行
npm login命令时,必须先把下包的服务器地址切换成 npm 的官方服务器,否则会导致发布包失败
- 这里的登录不是网站的登录。npm 账号注册成功之后,需要在终端中执行
-
把包发布到 npm 上
将终端切换到包的根目录之后,运行
npm publish命令,即可将包发布到 npm 上(注:包名不能雷同)发布的命令:
验证发布是否成功(打开官网:www.npmjs.com/ )
-
删除已发布的包
-
运行
npm unpublish 包名,--force命令,即可从 npm 删除已发布的包删除的命令:
npm unpublish 包名,--force eg: npm unpublish testdateformat --force验证删除是否成功
-
npm unpublish命令只能删除 72小时以内发布的的包 -
npm unpublish删除的包,在24小时内不允许重复发布 -
发布包的时候要慎重,尽量不要往 npm 上发布没有意义的包
-