重学Node.js系列(九)

93 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情

接着上一篇系列文章包的相关知识,今天学习自定义包怎么实现。

自定义包

1. package.json字段分析

name:包的名称,必须是唯一的,由小写英文字母、数字和下划线组成,不能包含空格
description:包的简要说明
version:符合语义化版本识别规范的版本字符串
keywords:关键字数组,通常用于搜索
maintainers:维护者数组,每个元素要包含name、email(可选)、web(可选)字段
contributors:贡献者数组,格式与maintainers相同。包的作者应该是贡献者数组的第一个元素
bugs:提交bug的地址,可以是网站或者电子邮件地址
licenses:许可证数组,每个元素要包含type(许可证名称)和url(链接到许可证文本的- 地址)字段
repositories:仓库托管地址数组,每个元素要包含type(仓库类型,如git)、url(仓库的地址)和path(相对于仓库的路径,可选)字段
dependencies:生产环境包的依赖,一个关联数组,由包的名称和版本号组成
devDependencies :开发环境包的依赖 ,一个关联数组,由包的名称和版本号组成

2. 自定义包案例

案例说明:使用markdown-it模块自定义包实现将md文件转换成html页面

1.创建顶层目录
2.初始化包(创建package.json)
使用 npm init 命令,自动生成的package.json在包的顶层目录下
3.下载本包需要使用的模块到本地
在这里插入图片描述
4.顶层目录中创建bin\lib\test\doc目录

二进制文件应该在bin目录下
JavaScript代码应该在lib目录下
文档应该在doc目录下
单元测试应该在test目录下

在这里插入图片描述
5.创建模板html和需要转换的md文件
在这里插入图片描述
6.创建入口文件index.js

/*
// markdown-it可以将md转换成HTML页面
// var md = require('markdown-it')();
// markdown-it的使用语法
var result = md.render('## markdown-it rulezz!');
console.log(result);
*/
var md = require('markdown-it')();
// 引入路径和文件模块
const path = require('path');
const fs = require('fs');

// 定义模板页面路径
let tplPath = path.join(__dirname,'template.html');
// 定义md文件路径
let mdPath = path.join(__dirname,'test.md');
// 定义目标文件路径
let targetPath = path.join(__dirname,'demo.html');

// 获取markdown文件
fs.readFile(mdPath,'utf8',(err,data)=>{
    if(err) return;
    // 对markdown内容进行转换操作
    let result = md.render(data);
    //读取模板内容
    let tpl = fs.readFile(tplPath,'utf8',(err,tplData)=>{
        if(err) return;
        // 将模板内容替换成markdown内容
        switchData=tplData.replace('<content>',result);
        // 生成的最终页面,写入目标文件
        fs.writeFile(targetPath,switchData,(err)=>{
            console.log('完成页面转换');
        })
    })
})

7.在cmd中执行node .命令,最终在顶层目录中生成一个demo.html,实现md文件转换
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200330155411316.png