持续创作,加速成长!这是我参与「掘金日新计划 · 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文件转换