一.新建npm项目包
1.新建目录包yuan_mytools
注意:在新建npm项目包的时候,可以先去官网搜一下是否有重名的,不允许重名!!!
新建项目包yuan-mytools,创建src目录,并在src目录中创建自定义模块(我的自定义模块是dateFormat和htmlEscape),并在项目包的根目录下创建入口文件yuan.js和README.md文档
2.创建包管理配置文件package.json
在项目yuan-mytools的根目录运行终端命令,快速创建package.json
npm init -y
注意:上述命令只能在英文的目录下成功运行!所以,项目文件夹的名称一定要使用英文命名,不要使用中文,不能出现空格。
3.配置package.json
(1)name :npm项目包名,发布到npm时包名取的这个name;
(2)version :版本号,第一次发布,版本号可以设置为@1.0.0,更新npm包时必须修改一个更高的版本号后才能成功发布到npm;
(3)description :包的描述,发布到npm后你搜索该npm包时,在搜索联想列表里会显示在包名的下方,作为描述说明;
(4)main :入口文件路径,在你通过import或require引用该npm包时就是引入的该路径的文件;
(5)keywords:关键字,在官网搜索该包时,使用这些关键字可以搜索出来;
(6)license:开源协议,默认是ISC;
4.实现格式化日期的功能
dateFormat.js
// 定义格式化时间的函数
function dateFormat(dataStr) {
const date = new Date(dataStr)
const year = date.getFullYear()
// 月份是从0-11,需要加一
const month = padZero(date.getMonth() + 1)
const day = padZero(date.getDate())
const hour = padZero(date.getHours())
const minute = padZero(date.getMinutes())
const second = padZero(date.getSeconds())
// 使用模板字符串进行拼接
return `${year}-${month}-${day} ${hour}:${minute}:${second}`
}
//补零函数
function padZero(date) {
return date > 9 ? date : '0' + date
}
// 对外共享该模块
module.exports = {
dateFormat
}
5.实现html特殊字符的转义和还原
(1)转义html中的特殊字符,包括<、>、$、"等
// 转义html中的特殊字符
function htmlEscape(htmlStr) {
return htmlStr.replace(/<|>|&|"/g, (match) => {
switch (match) {
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
(2)还原html中的特殊字符,包括<、>、"、$amp;等
// 还原html中的特殊字符
function htmlUnEscape(htmlStr) {
return htmlStr.replace(/<|>|"|&/g, (match) => {
switch (match) {
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
// 对外共享模块htmlEscape和htmlUnEscape模块
module.exports = {
htmlEscape,
htmlUnEscape
}
6.入口文件yuan.js
在入口文件yuan.js中导入两个模块,并且结构对象之后对外共享
const date = require('./src/dateFormat')
const escape = require('./src/htmlEscape')
module.exports = {
...date,
...escape
}
7.编写README.md说明文档,包括安装方式、导入方式、格式化时间、转义 HTML 中的特殊字符、还原 HTML 中的特殊字符、开源协议
## 安装
```
npm install yuan-mytools
```
## 导入
```js
const yuan = require('./yuan-mytools')
```
## 格式化时间
```js
const date = new Date()
// 调用dateFormat对时间进行格式化
console.log(yuan.dateFormat(date))
```
## 转义html中的特殊字符
```js
const str = '<h1 title="abc">这是h1标签<span>123 </span></h1>'
// 调用htmlEscape对特殊字符进行转义
const newStr = yuan.htmlEscape(str)
// 转换的结果为 <h1 title="abc">这是h1标签<span>123 </span></h1>
console.log(newStr)
```
## 还原html总的特殊字符
```js
const str = '<h1 title="abc">这是h1标签<span>123 </span></h1>'
const newStr = yuan.htmlEscape(str)
console.log(newStr)
// 调用htmlUnEscape对特殊字符进行还原
console.log(yuan.htmlUnEscape(newStr))
```
## 开源协议
ISC
注意:在npm官网发布包之后,README文档将会作为介绍放在首页
二.发布npm包
1.注册npm账号
- 访问 https://www.npmjs.com/ 网站,点击 sign up 按钮,进入注册用户界面
- 填写账号相关的信息:Full Name、Public Email、Username、Password
- 点击 Create an Account 按钮,注册账号
- 登录邮箱,点击验证链接,进行账号的验证
2.登录 npm 账号
npm 账号注册完成后,可以在终端中执行 npm login 命令,依次输入用户名、密码、邮箱后,即可登录成功。
注意:在运行 npm login 命令之前,必须先把下包的服务器地址切换为 npm 的官方服务器。否则会导致发布包失败!
3.把包发布到 npm 上
将终端切换到包的根目录之后,运行 npm publish 命令,即可将包发布到 npm 上(注意:包名不能雷同)。
三.删除已发布的包
1.运行 npm unpublish 包名 --force 命令,即可从 npm 删除已发布的包。
注意:
- npm unpublish 命令只能删除 72 小时以内发布的包
- npm unpublish 删除的包,在 24 小时内不允许重复发布
- 发布包的时候要慎重,尽量不要往 npm 上发布没有意义的包!