• 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内发布的包

  • 相关阅读:
    【算法练习Day16】找树左下角的值&&路径总和&& 从中序与后序遍历序列构造二叉树
    C/C++如何写调试宏
    【机器学习】使用scikitLearn进行SVM支持向量机线性分类
    【图像融合】基于matlab双树复小波变换像素级图像融合【含Matlab源码 2024期】
    北京运营《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书
    CTF-SSH私钥泄露【简单易懂】
    编程基础知识编程实例解析:深度探索与实战应用
    【PaperReading】情感人的互联网:通过视听信号实现跨文化的可持续情感计算
    TPS54331DDAR —— DCDC降压设计12V 至 5.00V @ 3A【电感电容选择计算】
    通俗易懂的java设计模式(1)-单例模式
  • 原文地址:https://blog.csdn.net/m0_55825393/article/details/126360519