UNPKG

@micro-app/cli

Version:

[CLI] Pluggable micro application framework.

97 lines (84 loc) 3.31 kB
'use strict'; module.exports = function extendServer(api, opts) { const registerMethods = require('./methods'); registerMethods(api); const { _, smartMerge, path } = require('@micro-app/shared-utils'); const logger = api.logger; api.extendMethod('parseArgv', { description: 'resolve parse command argv.', }, function() { return _.cloneDeep(api.context); }); api.extendConfig('selfServerConfig', { cache: true, description: '当前工程下的服务配置', }, function() { const microConfig = api.selfConfig; const _originalConfig = microConfig.originalConfig || {}; const _serverConfig = _originalConfig.server || {}; const _config = { ..._serverConfig, info: microConfig.toJSON(), shared: microConfig.shared, sharedObj: microConfig.sharedObj, resolveShared: microConfig.resolveShared, }; // 兼容 entry, 创建一个 entries _config.entries = _config.entry ? [ path.resolve(microConfig.root, _config.entry) ] : []; return _config; }); api.extendConfig('microsServerConfig', { cache: true, description: '当前工程下所有依赖的服务配置合集', }, function() { const selfConfig = api.selfConfig; const micros = api.micros; const microsConfig = api.microsConfig; const config = {}; micros.forEach(key => { const microConfig = microsConfig[key]; if (microConfig) { const _originalConfig = microConfig.originalConfig || {}; const _serverConfig = _originalConfig.server || {}; config[key] = { ..._serverConfig, info: _.cloneDeep(microConfig), shared: microConfig.shared, sharedObj: microConfig.sharedObj, resolveShared: microConfig.resolveShared, }; // 兼容 entry, 创建一个 entries config[key].entries = config[key].entry ? [ path.resolve(microConfig.root, config[key].entry) ] : []; } else { logger.error('[microsServerConfig]', `Not Found micros: "${key}"`); } }); config[selfConfig.key] = api.selfServerConfig; return config; }); // ZAP: 需要优化时机 和 内容 // merge server config api.extendConfig('serverConfig', { cache: true, description: '当前工程下服务端配置集合', }, function() { const selfServerConfig = api.selfServerConfig; const microsServerConfig = api.microsServerConfig; const micros = api.micros; // 组装 server 配置 const mergeConfig = smartMerge(...micros.map(key => { const _msc = microsServerConfig[key]; if (!_msc) return {}; return _.pick(_msc, [ 'shared', 'sharedObj', 'resolveShared', 'entries', ]); }), selfServerConfig); return Object.assign({}, mergeConfig, { root: api.root }); }); }; module.exports.configuration = { description: '针对服务信息进行配置扩展.', };