1 前言

本文内容来自bilibili 黑马程序员

2 包

2.1 什么是包

Node.js 中的第三方模块,又叫做包
https://www.npmjs.com/ 网站上搜索自己所需要的包
https://registry.npmjs.org/ 服务器上下载自己需要的包

2.2 规范的包结构

  1. 必须以单独的目录存在
  2. 顶级目录下必须包含 package.json 这个包管理配置文件
  3. package.json 中必须包含 name (包名)、 version (版本号)、 main (入口文件)这三个属性

3 新增包

  1. 新建文件夹 itheima-test
  2. 新建 package.json
    itheima-test 文件夹下新建 package.json
    {
    "name": "itheima-test", // 名称自定义
    "version": "1.0.0",
    "main": "index.js",
    "type": "module",
    "description": "提供了格式化时间等功能",
    "keywords": ["dateFormat"],
    "license": "ISC"
    }
  3. 新建 README.md
    itheima-test 文件下新建 README.md
## 安装
npm install itheima-test

## 导入方式
import format from 'itheima-test'

## 格式化时间
const dtStr = format.dateFormat(new Date) // 2022-12-18 16:45:34

## 开源协议
ISC
  1. 新建 index.js
    itheima-test 文件夹下新建 index.js
// 这是包的入口文件
import format from "./src/dateFormat.js";

export default {
...format
}
  1. 新建 dateFormat.js
    itheima-test 文件夹下新建 src 文件夹, src 文件夹下新建 dateFormat.js
const padZero = (n) => {
return n < 10 ? `0${n}` : n
}

// 定义时间格式化方法
const 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}`
}

export default {
padZero,
dateFormat
}

4 发布包

若没有 npm 账号,需要先访问 https://registry.npmjs.org/ 注册一个

// 登录 npm
npm login
// 发布包
npm publish
// 删除包
npm unpublish 包名 --force