npm与包
包的分类
使用npm管理工具下载的包,共分为两大类,分别是:
- 项目包
安装到项目的node_modules目录
中的包,都是项目包
- 开发依赖包(记录在devDependencies,开发期间用到)
npm i 包名 -D
- 核心依赖包(记录在dependencies,在开发和项目上线之后都会用)
npm i 包名
- 全局包
在执行npm i
命令时,如果提供了-g
参数,则会把包安装为全局包
全局包会被安装到C:\Users\用户目录\AppData\Roaming\npm\node_modules
目录下
npm i 包名 -g #全局安装指定的包
npm uninstall 包名 -g # 卸载全局安装的包
注意:
①只有工具性质的包,才有全局安装的必要性。因为他们提供了好用的终端命令;
②判断某个包是否需要全局安装后才使用,可以参考官方提供的使用说明即可。
i5ting_toc
i5ting_toc
是一个可以把md文档转为html页面的小工具
# 将 i5ting_toc 安装为全局包
npm install -g i5ting_toc
# 调用 i5ting_toc,轻松实现 md 转html 的功能
i5ting_toc -f 要转换的md文件路径 -o
规范的包:
①包必须以单独的目录而存在;
②报的顶级目录必须包含package.json
这个包管理配置文件
③package.json
中必须包含name,version,main
这三个属性,分别代表包的名字,版本号,包的入口;
开发包
1、初始化包的基本结构
①新建diluc-tools
文件夹,作为包的根目录;
②在diluc-tools
文件夹中,新建如下三个文件:
- package.json(包管理配置文件)
- index.js(包的入口文件)
- README.md(包的说明文档)
2、初始化package.json
文件
{
"name": "diluc-tools",
"version": "1.0.0",
"main": "index.js",
"description": "提供了格式化时间、HTMLEscape相关的功能",
"keywords": [
"diluc",
"keqing",
"kaiya"
],
"license": "ISC"
}
3、在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
}
//定义转义 HTML 字符的函数
function htmlEscape(htmlstr) {
return htmlstr.replace(/<|>|&|"/g, (match) => {
switch (match) {
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
//定义还原转义 HTML 字符的函数
function htmlUnEscape(htmlstr) {
return htmlstr.replace(/<|>|&|"/g, (match) => {
switch (match) {
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
module.exports = {
dateFormat,
htmlEscape,
htmlUnEscape
}
拆分包
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
}
htmlEscape.js
//定义转义 HTML 字符的函数
function htmlEscape(htmlstr) {
return htmlstr.replace(/<|>|&|"/g, (match) => {
switch (match) {
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
//定义还原转义 HTML 字符的函数
function htmlUnEscape(htmlstr) {
return htmlstr.replace(/<|>|&|"/g, (match) => {
switch (match) {
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
module.exports = {
htmlEscape,
htmlUnEscape
}
index.js
const date = require('./src/dateFormat')
const escape = require('./src/htmlEscape')
module.exports = {
...date,
...escape//... 展开属性
}
4、编写使用文档
5、发布包
终端中登录npm
npm login
注意:运行前需将下包的服务器地址切换到npm官方服务器
发布
npm publish
删除已发布的包
npm unpublish 包名 --force
注意:只能删除72h内发布的包