4.0.1 • Published 2 years ago
koishi-plugin-ci v4.0.1
Koishi Plugin CI
程序化部署您的插件
比如:可以通过插件的参数动态构建前端
安装
npm install koishi-plugin-ci
const { App } = require('koishi')
const app = new App()
app.plugin('koishi-plugin-ci')
// ...
功能
构建
plugin-that-requires-build.js
const fs = require('fs').promises
const existsSync = require('fs').existsSync
module.exports = {
apply(ctx, opt) {
ctx.using(['ci'], ({ ci }) => {
ci.build.use(() => {
const buildPath = path.resolve(path.join(__dirname, '.build'))
if (existsSync(buildPath)) await fs.rm(buildPath, {recursive: true})
await fs.mkdir(buildPath)
await fs.writeFile(path.join(buildPath, "build.json"), JSON.stringify(opt.buildOpt))
ctx.logger('ci').info('plugin-that-requiring-build: build finished')
})
})
}
}
build.js
const { App } = require('koishi')
const app = new App()
app.plugin('koishi-plugin-ci')
app.plugin('plugin-that-requires-build', { buildOpt: { buildTime: new Date() }})
app.ci.build.run()
.then(() => process.exit(0))
这样便可在 plugin-that-requires-build
插件目录下构建 .builds/build.json
{"buildTime":"2022-01-21T11:22:04.383Z"}
API
工具
KoishiCI.getPluginState(plugin)
KoishiCI.getPluginState()
返回已安装的插件或调用此函数的插件的State
KoishiCI.getStateRoot(state)
返回嵌套中最上层的State
构建相关功能
build.use(callback)
build.use(Promise\<callback>)
注册构建函数
async
build({only: Plugin})
async
build({except: Plugin})
async
build()
运行构建函数 build示例
build-only-some-plugins.js
// ...
app.ci.build.run({only: ['plugin-that-requires-build']})
只会构建 plugin-that-requires-build
插件
build-except-some-plugins.js
// ...
app.ci.build.run({except: ['plugin-that-requires-build']})
会跳过构建 plugin-that-requires-build
插件