Skip to content

Commit 2d078c7

Browse files
committed
fix: refactoring code
1 parent 79f2e47 commit 2d078c7

File tree

6 files changed

+52
-70
lines changed

6 files changed

+52
-70
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
},
3939
"license": "MIT",
4040
"peerDependencies": {
41-
"@micro-app/core": "^0.3.24"
41+
"@micro-app/core": "^0.3.25"
4242
},
4343
"devDependencies": {
4444
"@micro-app/plugin-deploy": "^0.0.7",

src/index.js

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,38 @@
11
'use strict';
22

33
const chainConfig = require('./service/chainConfig');
4-
const silentService = require('./utils/silentService');
5-
const { BUILT_IN } = require('./constants');
4+
const service = require('./utils/createService');
65

6+
let IPLUGIN_ID;
77
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', {
11+
IPLUGIN_ID = api.id;
12+
} else { // vue-cli plugin
13+
const plugin = IPLUGIN_ID ? service.findPlugin(IPLUGIN_ID) : service.plugins[0]; // 随便取个plugin
14+
const _mapi = plugin[Symbol.for('api')];
15+
16+
// 重写 resolveWebpackConfig
17+
_mapi.extendMethod('resolveWebpackConfig', {
1318
description: 'resolve webpack config.',
1419
override: true,
1520
}, webpackConfig => {
16-
const finalWebpackConfig = api.applyPluginHooks('modifyWebpackConfig', webpackConfig);
17-
api.setState('webpackConfig', finalWebpackConfig);
21+
const finalWebpackConfig = _mapi.applyPluginHooks('modifyWebpackConfig', webpackConfig);
22+
_mapi.setState('webpackConfig', finalWebpackConfig);
1823
return finalWebpackConfig;
1924
});
20-
} else { // vue-cli plugin
21-
silentService(service => {
22-
// 注册插件
23-
service.registerPlugin({
24-
id: 'vue-cli-plugin:plugin-modifyVueConfig-apply',
25-
[BUILT_IN]: true,
26-
apply(_api) {
27-
// 修改默认配置
28-
_api.onInitDone(() => {
29-
const newVueConfig = _api.applyPluginHooks('modifyVueConfig', vueConfig);
30-
Object.assign(vueConfig, newVueConfig || {});
3125

32-
return chainConfig(api, vueConfig, _api);
33-
});
34-
},
35-
});
26+
// 修改默认配置
27+
const newVueConfig = _mapi.applyPluginHooks('modifyVueConfig', vueConfig);
28+
Object.assign(vueConfig, newVueConfig || {});
3629

37-
// 加载获取所有配置
38-
return service.initSync();
39-
});
30+
chainConfig(api, vueConfig, _mapi);
31+
32+
// 覆盖逻辑
33+
const originaFn = api.resolveWebpackConfig;
34+
api.resolveWebpackConfig = function(chainableConfig) {
35+
return _mapi.resolveWebpackConfig(originaFn.apply(api, chainableConfig));
36+
};
4037
}
4138
};

src/service/chainConfig.js

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -74,16 +74,11 @@ module.exports = function chainDefault(api, vueConfig, _mapi) {
7474
}
7575
}
7676

77-
return _mapi.resolveChainableWebpackConfig(webpackChain);
77+
return webpackChain;
7878
});
7979

8080
// webpack 所有配置合入
81-
const _service = api.service;
82-
// 覆盖逻辑
83-
if (_service) {
84-
const originaFn = _service.resolveWebpackConfig;
85-
_service.resolveWebpackConfig = function(chainableConfig) {
86-
return _mapi.resolveWebpackConfig(originaFn.apply(_service, chainableConfig));
87-
};
88-
}
81+
api.chainWebpack(webpackChain => {
82+
return _mapi.resolveChainableWebpackConfig(webpackChain);
83+
});
8984
};

src/utils/createService.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
'use strict';
2+
3+
const { service } = require('@micro-app/cli');
4+
const { SKIP_TARGET } = require('../constants');
5+
6+
service.context.target = SKIP_TARGET;
7+
8+
// 提前注册
9+
const registerWebpackPlugin = require('./registerWebpackPlugin');
10+
registerWebpackPlugin(service);
11+
12+
module.exports = service;

src/utils/registerWebpackPlugin.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
'use strict';
2+
3+
const { BUILT_IN } = require('../constants');
4+
5+
module.exports = function registerWebpackPlugin(s) {
6+
const WEBPACK_PLUGIN_ID = '@micro-app/plugin-webpack';
7+
if (!s.hasPlugin(WEBPACK_PLUGIN_ID)) {
8+
// 注册 webapck 插件
9+
s.registerPlugin({
10+
id: WEBPACK_PLUGIN_ID,
11+
[BUILT_IN]: true,
12+
});
13+
}
14+
};

src/utils/silentService.js

Lines changed: 0 additions & 36 deletions
This file was deleted.

0 commit comments

Comments
 (0)