开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第24天,点击查看活动详情
npm与包
Node.js 中的第三方模块又叫做包
不同于 Node.js 中的内置模块与自定义模块,包是由第三方个人或团队开发出来的,免费供所有人使用。Node.js 中的包都是免费且开源的
●由于 Node.js 的内置模块仅提供了一些底层的 API,导致在基于内置模块进行项目开发的时,效率很低
●包是基于内置模块封装出来的,提供了更高级、更方便的 API,极大的提高了开发效率
●包和内置模块之间的关系,类似于 jQuery和 浏览器内置 API 之间的关系
国外有一家 IT 公司,叫做 npm, Inc. 这家公司旗下有一个非常著名的网站 www.npmjs.com/,它是全球最大的包共享平台,你可以从这个网站上搜索到任何你需要的包,只要你有足够的耐心!到目前为止,全球约1100多万的开发人员,通过这个包共享平台,开发并共享了超过120多万个包 供我们使用。npm, Inc. 公司提供了一个地址为 registry.npmjs.org/ 的服务器,来对外共享所有的包,我们可以从这个服务器上下载自己所需要的包。
- 从 www.npmjs.com/网站上搜索自己所需要的包
- 从 registry.npmjs.org/ 服务器上下载自己需要的包
下载包
npm, Inc. 公司提供了一个包管理工具,使用这个工具从 registry.npmjs.org/ 服务器把需要的包下载到本地使用。工具的名字叫做 Node Package Manager(简称 npm 包管理工具),这个包管理工具随着 Node.js 的安装包一起被安装到了用户的电脑上。在终端中执行 npm -v命令,来查看自己电脑上所安装的 npm 包管理工具的版本号
npm 安装
// dateFormat.js
// 1. 定义格式化时间的方法
function dateFormat(dtStr) {
const dt = new Date(dtStr)
const y = 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
}
// 1. 导入需要的包
// 注意:导入的名称,就是装包时候的名称
const moment = require('moment')
const dt = moment().format('YYYY-MM-DD HH:mm:ss')
console.log(dt)
在项目中安装包的命令 npm install 包的完整名称 或者 npm i 包的完整名称
// 导入自定义的格式化时间的模块
const TIME = require('./dateFormat')
// 调用方法,进行时间的格式化
const dt = new Date()
// console.log(dt)
const newDT = TIME.dateFormat(dt)
console.log(newDT)
初次装包完成后,在项目文件夹下多一个叫做 node_modules 的文件夹和 package-lock.json 的配置文件。
●node_modules 文件夹用来存放所有已安装到项目中的包。require() 导入第三方包时,从这个目录中查找并加载
●package-lock.json 配置文件用来记录 node_modules 目录下的每一个包的下载信息,例如包的名字、版本号、下载地址等
注意:不要手动修改 node_modules 或 package-lock.json文件中的任何代码,npm 包管理工具会自动维护它们
安装指定版本的包
npm install 命令默认安装最新版本的包。如需安装指定版本的包,在包名之后,@版本号
包的版本号以“点分十进制”形式进行定义,总共有三位数字,如 2.24.0。其中每一位数字所代表的的含义如下
第1位数字:大版本
第2位数字:功能版本
第3位数字:Bug修复版本
版本号提升的规则:只要前面的版本号增长了,则后面的版本号归零
开发包
- 新建 itheima-tools 文件夹,作为包的根目录
- 在 itheima-tools 文件夹中,新建
●package.json (包管理配置文件)npm init -y
●index.js (包的入口文件)
●src 源代码
●README.md (包的说明文档)
安装
npm install itheima-tools
导入
const itheima = require('itheima-tools')
格式化时间
// 调用 dateFormat 对时间进行格式化
const dtStr = itheima.dateFormat(new Date())
// 结果 2020-04-03 17:20:58
console.log(dtStr)
使用
const itheima = require('./itheima-tools')
// 格式化时间的功能
const dtStr = itheima.dateFormat(new Date())
console.log(dtStr)
console.log('-----------')
const htmlStr = '<h1 title="abc">这是h1标签<span>123 </span></h1>'
const str = itheima.htmlEscape(htmlStr)
console.log(str)
console.log('-----------')
const str2 = itheima.htmlUnEscape(str)
console.log(str2)
那么怎么发布包
- www.npmjs.com/ 注册 npm 账号
- 终端中执行 npm login 命令,依次输入用户名、密码、邮箱后,即可登录成功
●注意:执行命令前,必须先把下包的服务器地址切换为 npm 的官方服务器。否则会导致发布包失败!
- 终端切换到包的根目录之后,运行 npm publish 命令,即可将包发布到 npm 上(注意:包名不能雷同)
- 运行 npm unpublish 包名 --force命令,即可从 npm 删除已发布的包
●npm unpublish 命令只能删除 72 小时以内发布的包
●npm unpublish 删除的包,在 24 小时内不允许重复发布
●发布包的时候要慎重,尽量不要往 npm 上发布没有意义的包