fork from bc4552c5a8
This commit is contained in:
54
common/plugin.js
Normal file
54
common/plugin.js
Normal file
@@ -0,0 +1,54 @@
|
||||
const _ = require('underscore');
|
||||
|
||||
function getPluginConfig(name, type) {
|
||||
let pluginConfig;
|
||||
if (type === 'ext') {
|
||||
pluginConfig = require('../exts/yapi-plugin-' + name);
|
||||
} else {
|
||||
pluginConfig = require('yapi-plugin-' + name);
|
||||
}
|
||||
|
||||
if (!pluginConfig || typeof pluginConfig !== 'object') {
|
||||
throw new Error(`Plugin ${name} Config 配置错误,请检查 yapi-plugin-${name}/index.js`);
|
||||
}
|
||||
|
||||
return {
|
||||
server: pluginConfig.server,
|
||||
client: pluginConfig.client
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* type @string enum[plugin, ext] plugin是外部插件,ext是内部插件
|
||||
*/
|
||||
exports.initPlugins = function (plugins, type) {
|
||||
if (!plugins) {
|
||||
return [];
|
||||
}
|
||||
if (typeof plugins !== 'object' || !Array.isArray(plugins)) {
|
||||
throw new Error('插件配置有误,请检查', plugins);
|
||||
}
|
||||
|
||||
plugins = plugins.map(item => {
|
||||
let pluginConfig;
|
||||
if (item && typeof item === 'string') {
|
||||
pluginConfig = getPluginConfig(item, type);
|
||||
return Object.assign({}, pluginConfig, { name: item, enable: true })
|
||||
} else if (item && typeof item === 'object') {
|
||||
pluginConfig = getPluginConfig(item.name, type);
|
||||
return Object.assign({},
|
||||
pluginConfig,
|
||||
{
|
||||
name: item.name,
|
||||
options: item.options,
|
||||
enable: item.enable === false ? false : true
|
||||
})
|
||||
}
|
||||
})
|
||||
plugins = plugins.filter(item => {
|
||||
return item.enable === true && (item.server || item.client)
|
||||
})
|
||||
|
||||
return _.uniq(plugins, item => item.name)
|
||||
}
|
||||
Reference in New Issue
Block a user