持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情
前言
前端模块化作为前端必备的一个技能,已经在前端开发中不可或缺;而模块化带来项目的规模不断变大,项目的依赖越来越多;随着项目的增多,如果每个模块都通过手动拷贝的方式无异于饮鸩止渴,我们可以把功能相似的模块或组件抽取到一个npm包中;然后上传到私有npm服务器,不断迭代npm包来更新管理所有项目的依赖
那么,如何发布属于自己的第一个npm包呢?
1.初始化包的基本结构
新建一个文件夹,在这个文件夹中新建三个文件
新建package.json文件,index.js文件和README.md文件,其中,package.json是包的管理配置文件,index.js文件是包的入口文件,README.md是包的说明文档
2.初始化package.json
初始化一个json的配置对象,对象里会包含6个属性
{
"name":"zgw-tools",//这是配置对象里最重要的一个属性,代表这个包的名称,在npm服务器上包的名字不能重复,所以上传前先去官网上搜索一下包名有没有被占用了
"version": "1.0.0",//version表示包的版本号,一般默认从1.0.0开始
"main": "index.js",//指定包的入口文件,就是新创建的index.js文件
"description": "提供了格式化时间的功能",//包的描述信息,
"keywords": ['dateFormat','formarTime','aaaaa'],//搜索的关键字,数组里的每一个属性都是一个字符串,自定义关键字
"license": "ISC"//包遵循的开源协议,npm默认遵循ISC协议
}
3.定义格式化时间的方法
在文件夹中新建一个src文件夹,里面创建一个dateFormat.js文件
在里面定义一个格式化时间的方法
//定义格式化时间的方法,将格式化时间的方法暴露出去
function dateFormat(dataStr){
const dt=new Date(dataStr)
const y=dt.getFullYear()
const m=(dt.getMonth()+1+'').padStart(2,'0')
const d=(dt.getDate()+'').padStart(2,'0')
const hh=(dt.getHours()+'').padStart(2,'0')
const mm=(dt.getMinutes()+'').padStart(2,'0
const ss=(dt.getSeconds()+'').padStart(2,'0')
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
module.exports={
dateFormat
}
在index.js文件里导入模块,再把对应的方法共享出去
const date=require('./src/dateFormat')
module.exports={
...date
}
4.README.md文件编写包的说明文档
## 安装
npm install zgw-tools
## 导入
const ztest=require('zgw-tools')
## 格式化时间
//调用dateFormat 对时间进行格式化
const dtstr=dt.dateFormat(new Date())
// 结果 2022-08-01 16:16:00
console.log(dtstr)
## 开源协议
ISC
5.发布包
发布之前首先访问www.npmjs.com/官网首页注册一个账号,注册完成之后终端运行npm login命令,依次输入账号,密码,登陆邮箱即可登录成功,
注意:若配置了其他的下载源,运行npm login命令之前将下载源换回官方源,否则会导致发布失败,nrm ls查看当前下载源
运行npm publish命令,即可将包发布到npm上
发布完成之后可以点击头像,点击Packages查看自己发布的包
最后,将自己发布的包根据说明文档下载下来使用
//导入自己上传到npm的包
const z=require('zgw-tools')
// 调用方法,传入当前时间的时间戳
const dt=z.dateFormat(1664717540000)
// 打印结果2022-10-02 21:32:20
console.log(dt)
那么如何删除自己发布的包呢?
运行 npm unpublish 包名 --force命令即可删除发布的包,但是npm unpublish只能删除72小时内发布的包,删除后的包24小时内不允许重复发布,所以尽量不要往npm上发布没有意义的包