Skip to content

Commit 1ef4a1b

Browse files
committed
fix: refactoring code
1 parent 476ffa6 commit 1ef4a1b

File tree

3 files changed

+26
-46
lines changed

3 files changed

+26
-46
lines changed

src/index.js

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,17 @@ module.exports = function(api, vueConfig) {
88
if (api.$isMicroAppPluginAPI) { // micro-app plugin
99
const registerMethod = require('./utils/registerMethod');
1010
registerMethod(api);
11+
// 重写
12+
api.extendMethod('resolveWebpackConfig', {
13+
description: 'resolve webpack config.',
14+
override: true,
15+
}, webpackConfig => {
16+
const finalWebpackConfig = api.applyPluginHooks('modifyWebpackConfig', webpackConfig);
17+
api.setState('webpackConfig', finalWebpackConfig);
18+
return finalWebpackConfig;
19+
});
1120
} else { // vue-cli plugin
12-
const config = silentService(service => {
21+
silentService(service => {
1322
// 注册插件
1423
service.registerPlugin({
1524
id: 'vue-cli-plugin:plugin-modifyVueConfig-apply',
@@ -19,15 +28,14 @@ module.exports = function(api, vueConfig) {
1928
_api.onInitDone(() => {
2029
const newVueConfig = _api.applyPluginHooks('modifyVueConfig', vueConfig);
2130
Object.assign(vueConfig, newVueConfig || {});
31+
32+
return chainConfig(api, vueConfig, _api);
2233
});
2334
},
2435
});
2536

2637
// 加载获取所有配置
27-
service.initSync();
28-
return service.config;
38+
return service.initSync();
2939
});
30-
31-
return chainConfig(api, vueConfig, config);
3240
}
3341
};

src/service/chainConfig.js

Lines changed: 12 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
'use strict';
22

33
const { _, tryRequire, fs, logger } = require('@micro-app/shared-utils');
4-
const silentService = require('../utils/silentService');
5-
const { BUILT_IN } = require('../constants');
64

75
// 以 vue-cli 配置为主
8-
module.exports = function chainDefault(api, vueConfig, options) {
6+
module.exports = function chainDefault(api, vueConfig, _mapi) {
7+
const options = _mapi.config || {};
98

109
[ // string
1110
'publicPath',
@@ -31,6 +30,9 @@ module.exports = function chainDefault(api, vueConfig, options) {
3130
}
3231
});
3332

33+
// global save vueConfig
34+
_mapi.setState('vueConfig', vueConfig);
35+
3436
// 补充
3537
api.chainWebpack(webpackChain => {
3638
const nodeModulesPaths = options.nodeModulesPaths || [];
@@ -72,44 +74,14 @@ module.exports = function chainDefault(api, vueConfig, options) {
7274
}
7375
}
7476

75-
return webpackChain;
77+
return _mapi.resolveChainableWebpackConfig(webpackChain);
7678
});
7779

78-
let isOnce = false;
7980
// webpack 所有配置合入
80-
api.chainWebpack(webpackChain => {
81-
return silentService(service => {
82-
// 注册插件
83-
service.registerPlugin({
84-
id: 'vue-cli-plugin:plugin-command-return-webpack-chain',
85-
[BUILT_IN]: true,
86-
apply(_api) {
87-
_api.registerCommand('return-webpack-chain', {
88-
description: 'return config of webpack-chain.',
89-
usage: 'micro-app return-webpack-chain',
90-
}, () => {
91-
// global save vueConfig
92-
_api.setState('vueConfig', vueConfig);
93-
_api.resolveChainableWebpackConfig(webpackChain);
94-
95-
if (!isOnce) {
96-
isOnce = true;
97-
const _service = api.service;
98-
// 覆盖逻辑
99-
const originaFn = _service.resolveWebpackConfig;
100-
_service.resolveWebpackConfig = function(chainableConfig) {
101-
const webpackConfig = originaFn.apply(_service, chainableConfig);
102-
const finalWebpackConfig = _api.applyPluginHooks('modifyWebpackConfig', webpackConfig);
103-
_api.setState('webpackConfig', finalWebpackConfig);
104-
return finalWebpackConfig;
105-
};
106-
}
107-
});
108-
},
109-
});
110-
111-
// 同步扩充 webpack-chain config
112-
return service.runSync('return-webpack-chain');
113-
});
114-
});
81+
const _service = api.service;
82+
// 覆盖逻辑
83+
const originaFn = _service.resolveWebpackConfig;
84+
_service.resolveWebpackConfig = function(chainableConfig) {
85+
return _mapi.resolveWebpackConfig(originaFn.apply(_service, chainableConfig));
86+
};
11587
};

src/utils/silentService.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ registerWebpackPlugin($s);
1111
module.exports = function silentService(cb) {
1212
// record
1313
const ORIGINAL_LEVEL = logger.level;
14-
logger.level = 'error';
14+
logger.level = 'silent';
1515

1616
const service = createService({ target: SKIP_TARGET });
1717
registerWebpackPlugin(service);

0 commit comments

Comments
 (0)