kdoc
这是一个文档生成工具
folder
.
├── bin
├── index.js
├── core
│ ├── hook.js
│ ├── glob.js
│ └── plugin.js
├── node_modules
└── package.json
install
npm install kdoc -g
#or
npm install kdoc -S
run
支持node与shell命令行
const kdoc = require('kdoc')
const doc = new kdoc(src , output , options)
const doc2 = new kdoc(src , output , options)
doc.run()
doc2.run()
async function run(){
await doc.run()
await doc2.run()
}
run()
#shell
kdoc -h #获取帮助
kdoc -s ./api/**/*.md -o ./dist/api -p './plugin/plugin1.js,./plugin/plugin2.js'
kdoc -s ./pages/**/*.md -o ./dist/pages
features
-
支持插件机制
- 插件为node模块只要能够被 require
- es6模块请注意
export default {}
与 module.exports = {}
的区别 ,module.exports = exports['default']
- 如果使用babel 可以使用babel-plugin-add-module-exports
- 必须导出为可执行函数 , 如不是函数则不会被执行
- 将会按照装载顺序执行
- 相同的plugin只会执行一次
- 支持异步promise
- 插件如果需要参数请在外部包裹一个函数 内部返回插件函数 , 可以通过qs传递参数
const plugin2 = require('./plugin2')
const plugin = function (ctx){
ctx.data.files
ctx.interface('pluginHandler',function(){
console.log('run pluginHandler ing...')
})
console.log(ctx.data)
ctx.pluginHandler2 = function(){
console.log('run pluginHandler2 ing...')
}
ctx.use(plugin2);
ctx.hook.add('initBefore',function (ctx){
})
return new Promise(function(resolve,reject){})
}
module.exports = plugin
const plugin2 = function(options){
console.log(options)
return function(ctx){
ctx.data.files
ctx.interface('pluginHandler',function(){
console.log('run pluginHandler ing...')
})
console.log(ctx.data)
ctx.pluginHandler2 = function(){
console.log('run pluginHandler2 ing...')
}
ctx.use(plugin2);
ctx.hook.add('initBefore',function (ctx){
})
return new Promise(function(resolve,reject){})
}
}
module.exports = plugin
const kdoc = require('kdoc')
const plugin = require('./plugin.js')
const plugin2 = require('./plugin2.js')
const path = require('path')
const doc = new kdoc(src , output)
const plugin3 = function(ctx,...arg) {
console.log("=====plugin2",...arg);
};
kdoc.use(plugin);
kdoc.use(`${path.resolve(__dirname,'./plugin.js')}?name="wang"&age=20`);
doc.use(plugin2({a:'',b:''}));
-
提供hook
const kdoc = require('kdoc')
const doc = new kdoc(src , output)
const doc2 = new kdoc(src , output)
kdoc.hook.add('aaaa',function(){})
kdoc.hook.run('aaaa')
kdoc.hook.add('pipe',function(file){
const self = this
console.log(file)
})
doc.hook.add('pipe',function(file){
const self = this
console.log(file)
return new Promise(function(resolve,reject) {
setTimeout(function() {
console.log("ctx",self);
resolve();
}, 1001);
});
})
doc.run()
doc2.run()
API
notes