• Node.js学习笔记_No.05


    npm与包

    包的分类

    使用npm管理工具下载的包,共分为两大类,分别是:

    1. 项目包
      安装到项目的node_modules目录中的包,都是项目包
    • 开发依赖包(记录在devDependencies,开发期间用到)npm i 包名 -D
    • 核心依赖包(记录在dependencies,在开发和项目上线之后都会用)npm i 包名
    1. 全局包
      在执行npm i命令时,如果提供了 -g参数,则会把包安装为全局包
      全局包会被安装到C:\Users\用户目录\AppData\Roaming\npm\node_modules目录下
    npm i 包名 -g #全局安装指定的包
    npm uninstall 包名 -g # 卸载全局安装的包
    
    • 1
    • 2

    注意:

    ①只有工具性质的包,才有全局安装的必要性。因为他们提供了好用的终端命令;
    ②判断某个包是否需要全局安装后才使用,可以参考官方提供的使用说明即可。


    i5ting_toc

    i5ting_toc是一个可以把md文档转为html页面的小工具

    # 将 i5ting_toc 安装为全局包
    npm install -g i5ting_toc
    # 调用 i5ting_toc,轻松实现 md 转html 的功能
    i5ting_toc -f 要转换的md文件路径 -o
    
    • 1
    • 2
    • 3
    • 4

    规范的包
    ①包必须以单独的目录而存在;
    ②报的顶级目录必须包含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"
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    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
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    拆分包

    在这里插入图片描述

    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
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    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
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    index.js

    const date = require('./src/dateFormat')
    const escape = require('./src/htmlEscape')
    
    module.exports = {
        ...date,
        ...escape//... 展开属性
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4、编写使用文档

    在这里插入图片描述

    5、发布包

    终端中登录npm
    npm login
    
    • 1

    注意:运行前需将下包的服务器地址切换到npm官方服务器

    发布
    npm publish
    
    • 1
    删除已发布的包
    npm unpublish 包名 --force
    
    • 1

    注意:只能删除72h内发布的包

  • 相关阅读:
    Laravel Swagger 使用完整教程
    【23种设计模式】接口隔离原则
    c#自动生成缺陷图像-添加从待匹配目标文件夹图像及xml移动至指定目标文件中功能--20240612
    数据结构--二叉堆与优先队列
    Android Studio Gradle插件版本与Gradle 版本对应关系
    Spring Boot的启动流程
    技术管理进阶——什么是管理者之体力、脑力、心力
    定点数原码一位乘法
    XTU-OJ 1171-coins
    【C++】二叉堆和优先队列
  • 原文地址:https://blog.csdn.net/m0_55825393/article/details/126360519