| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 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)
- }
|