mirror of
https://github.com/WeBankFinTech/fes.js.git
synced 2025-04-06 03:59:53 +08:00
fix(plugin-qiankun): 处理public-path
This commit is contained in:
parent
cf5e8a7454
commit
6dc8291f0b
@ -3,7 +3,6 @@ import address from 'address';
|
|||||||
import { lodash } from '@umijs/utils';
|
import { lodash } from '@umijs/utils';
|
||||||
import { readFileSync } from 'fs';
|
import { readFileSync } from 'fs';
|
||||||
import { join } from 'path';
|
import { join } from 'path';
|
||||||
// import { defaultMircoRootId } from '../common';
|
|
||||||
|
|
||||||
const namespace = 'plugin-qiankun/micro';
|
const namespace = 'plugin-qiankun/micro';
|
||||||
|
|
||||||
@ -20,26 +19,28 @@ export default function (api) {
|
|||||||
enableBy: () => isSlaveEnable(api)
|
enableBy: () => isSlaveEnable(api)
|
||||||
});
|
});
|
||||||
|
|
||||||
api.modifyDefaultConfig(memo => ({
|
api.modifyDefaultConfig((memo) => {
|
||||||
|
const initialMicroOptions = {
|
||||||
|
devSourceMap: true,
|
||||||
|
...JSON.parse(process.env.INITIAL_QIANKUN_MIRCO_OPTIONS || '{}'),
|
||||||
|
...(memo.qiankun || {}).micro
|
||||||
|
};
|
||||||
|
const modifiedDefaultConfig = {
|
||||||
...memo,
|
...memo,
|
||||||
runtimePublicPath: true
|
runtimePublicPath: true,
|
||||||
}));
|
qiankun: {
|
||||||
|
...memo.qiankun,
|
||||||
api.modifyPublicPathStr((publicPathStr) => {
|
slave: initialMicroOptions
|
||||||
const { runtimePublicPath } = api.config;
|
|
||||||
const qiankunConfig = api.config.qiankun || {};
|
|
||||||
if (!qiankunConfig || !qiankunConfig.micro) {
|
|
||||||
return publicPathStr;
|
|
||||||
}
|
}
|
||||||
const { shouldNotModifyRuntimePublicPath } = qiankunConfig;
|
};
|
||||||
|
|
||||||
if (runtimePublicPath === true && !shouldNotModifyRuntimePublicPath) {
|
const shouldNotModifyDefaultBase = api.userConfig.qiankun?.slave?.shouldNotModifyDefaultBase
|
||||||
return `window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__ || "${
|
?? initialMicroOptions.shouldNotModifyDefaultBase;
|
||||||
api.config.publicPath || '/'
|
if (!shouldNotModifyDefaultBase) {
|
||||||
}"`;
|
modifiedDefaultConfig.base = `/${api.pkg.name}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
return publicPathStr;
|
return modifiedDefaultConfig;
|
||||||
});
|
});
|
||||||
|
|
||||||
api.chainWebpack((config) => {
|
api.chainWebpack((config) => {
|
||||||
@ -56,11 +57,14 @@ export default function (api) {
|
|||||||
: process.env.HOST || 'localhost';
|
: process.env.HOST || 'localhost';
|
||||||
|
|
||||||
const protocol = process.env.HTTPS ? 'https' : 'http';
|
const protocol = process.env.HTTPS ? 'https' : 'http';
|
||||||
// // 变更 webpack-dev-server websocket 默认监听地址
|
// TODO: 变更 webpack-dev-server websocket 默认监听地址
|
||||||
// process.env.SOCKET_SERVER = `${protocol}://${localHostname}:${port}/`;
|
|
||||||
api.chainWebpack((memo, { webpack }) => {
|
api.chainWebpack((memo, { webpack }) => {
|
||||||
// 开启了 devSourceMap 配置,默认为 true
|
// 开启了 devSourceMap 配置,默认为 true
|
||||||
if (api.config.qiankun && api.config.qiankun.micro && api.config.qiankun.micro.devSourceMap !== false) {
|
if (
|
||||||
|
api.config.qiankun
|
||||||
|
&& api.config.qiankun.micro
|
||||||
|
&& api.config.qiankun.micro.devSourceMap !== false
|
||||||
|
) {
|
||||||
// 禁用 devtool,启用 SourceMapDevToolPlugin
|
// 禁用 devtool,启用 SourceMapDevToolPlugin
|
||||||
memo.devtool(false);
|
memo.devtool(false);
|
||||||
memo.plugin('source-map').use(webpack.SourceMapDevToolPlugin, [
|
memo.plugin('source-map').use(webpack.SourceMapDevToolPlugin, [
|
||||||
@ -79,22 +83,43 @@ export default function (api) {
|
|||||||
const absRuntimePath = join(namespace, 'runtime.js');
|
const absRuntimePath = join(namespace, 'runtime.js');
|
||||||
const absLifeclesPath = join(namespace, 'lifecycles.js');
|
const absLifeclesPath = join(namespace, 'lifecycles.js');
|
||||||
const absMicroOptionsPath = join(namespace, 'slaveOptions.js');
|
const absMicroOptionsPath = join(namespace, 'slaveOptions.js');
|
||||||
|
const absPublicPath = join(namespace, 'publicPath.js');
|
||||||
|
|
||||||
|
// 更改public path
|
||||||
|
api.addEntryImportsAhead(() => [{ source: `@@/${absPublicPath}` }]);
|
||||||
|
|
||||||
api.onGenerateFiles(() => {
|
api.onGenerateFiles(() => {
|
||||||
api.writeTmpFile({
|
api.writeTmpFile({
|
||||||
path: absRuntimePath,
|
path: absRuntimePath,
|
||||||
content: readFileSync(join(__dirname, 'runtime/runtime.tpl'), 'utf-8')
|
content: readFileSync(
|
||||||
|
join(__dirname, 'runtime/runtime.tpl'),
|
||||||
|
'utf-8'
|
||||||
|
)
|
||||||
});
|
});
|
||||||
|
|
||||||
api.writeTmpFile({
|
api.writeTmpFile({
|
||||||
path: absLifeclesPath,
|
path: absLifeclesPath,
|
||||||
content: readFileSync(join(__dirname, 'runtime/lifecycles.tpl'), 'utf-8')
|
content: readFileSync(
|
||||||
|
join(__dirname, 'runtime/lifecycles.tpl'),
|
||||||
|
'utf-8'
|
||||||
|
)
|
||||||
|
});
|
||||||
|
|
||||||
|
api.writeTmpFile({
|
||||||
|
path: absPublicPath,
|
||||||
|
content: `
|
||||||
|
if (window.__POWERED_BY_QIANKUN__) {
|
||||||
|
__webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__;
|
||||||
|
}
|
||||||
|
`
|
||||||
});
|
});
|
||||||
|
|
||||||
api.writeTmpFile({
|
api.writeTmpFile({
|
||||||
path: absMicroOptionsPath,
|
path: absMicroOptionsPath,
|
||||||
content: `
|
content: `
|
||||||
let options = ${JSON.stringify((api.config.qiankun || {}).micro || {})};
|
let options = ${JSON.stringify(
|
||||||
|
(api.config.qiankun || {}).micro || {}
|
||||||
|
)};
|
||||||
export const getSlaveOptions = () => options;
|
export const getSlaveOptions = () => options;
|
||||||
export const setSlaveOptions = (newOpts) => options = ({ ...options, ...newOpts });
|
export const setSlaveOptions = (newOpts) => options = ({ ...options, ...newOpts });
|
||||||
`
|
`
|
||||||
|
Loading…
x
Reference in New Issue
Block a user