@modern-js/plugin-garfish 2.63.3 → 2.63.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cli/code.js +2 -2
- package/dist/cjs/cli/index.js +127 -136
- package/dist/esm/cli/code.js +3 -3
- package/dist/esm/cli/index.js +149 -164
- package/dist/esm-node/cli/code.js +2 -2
- package/dist/esm-node/cli/index.js +127 -136
- package/dist/types/cli/code.d.ts +2 -5
- package/dist/types/cli/index.d.ts +2 -13
- package/package.json +12 -12
package/dist/cjs/cli/code.js
CHANGED
|
@@ -38,13 +38,13 @@ var template = __toESM(require("./template"));
|
|
|
38
38
|
var import_utils2 = require("./utils");
|
|
39
39
|
const ENTRY_POINT_FILE_NAME = "index.jsx";
|
|
40
40
|
const ENTRY_BOOTSTRAP_FILE_NAME = "bootstrap.jsx";
|
|
41
|
-
const generateCode = async (entrypoints, appContext, config,
|
|
41
|
+
const generateCode = async (entrypoints, appContext, config, hooks) => {
|
|
42
42
|
const { mountId } = config.html;
|
|
43
43
|
const { enableAsyncEntry } = config.source;
|
|
44
44
|
const { internalDirectory, internalSrcAlias, metaName, srcDirectory } = appContext;
|
|
45
45
|
await Promise.all(entrypoints.map(async (entrypoint) => {
|
|
46
46
|
const { entryName, isAutoMount, entry, customEntry, customBootstrap } = entrypoint;
|
|
47
|
-
const appendCode = await appendEntryCode({
|
|
47
|
+
const appendCode = await hooks.appendEntryCode.call({
|
|
48
48
|
entrypoint
|
|
49
49
|
});
|
|
50
50
|
if (isAutoMount) {
|
package/dist/cjs/cli/index.js
CHANGED
|
@@ -24,7 +24,7 @@ __export(cli_exports, {
|
|
|
24
24
|
getDefaultMicroFrontedConfig: () => getDefaultMicroFrontedConfig
|
|
25
25
|
});
|
|
26
26
|
module.exports = __toCommonJS(cli_exports);
|
|
27
|
-
var
|
|
27
|
+
var import_plugin_v2 = require("@modern-js/plugin-v2");
|
|
28
28
|
var import_utils = require("@modern-js/utils");
|
|
29
29
|
var import_util = require("../util");
|
|
30
30
|
var import_code = require("./code");
|
|
@@ -47,160 +47,151 @@ function getDefaultMicroFrontedConfig(microFrontend) {
|
|
|
47
47
|
...microFrontend
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
|
-
const appendEntryCode = (0, import_plugin.createAsyncWorkflow)();
|
|
51
50
|
const garfishPlugin = () => ({
|
|
52
51
|
name: "@modern-js/plugin-garfish",
|
|
53
52
|
pre: [
|
|
54
53
|
"@modern-js/runtime"
|
|
55
54
|
],
|
|
56
|
-
|
|
57
|
-
appendEntryCode
|
|
55
|
+
registryHooks: {
|
|
56
|
+
appendEntryCode: (0, import_plugin_v2.createCollectAsyncHook)()
|
|
58
57
|
},
|
|
59
58
|
setup: (api) => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
59
|
+
api._internalRuntimePlugins(({ entrypoint, plugins }) => {
|
|
60
|
+
const userConfig = api.getNormalizedConfig();
|
|
61
|
+
const { packageName, metaName } = api.getAppContext();
|
|
62
|
+
const runtimeConfig = (0, import_utils.getEntryOptions)(entrypoint.entryName, entrypoint.isMainEntry, userConfig.runtime, userConfig.runtimeByEntries, packageName);
|
|
63
|
+
if (runtimeConfig === null || runtimeConfig === void 0 ? void 0 : runtimeConfig.masterApp) {
|
|
64
|
+
plugins.push({
|
|
65
|
+
name: "garfish",
|
|
66
|
+
path: `@${metaName}/plugin-garfish/runtime`,
|
|
67
|
+
config: (runtimeConfig === null || runtimeConfig === void 0 ? void 0 : runtimeConfig.masterApp) || {}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
entrypoint,
|
|
72
|
+
plugins
|
|
73
|
+
};
|
|
74
|
+
});
|
|
75
|
+
api.modifyResolvedConfig((config) => {
|
|
76
|
+
const { masterApp, router } = (0, import_utils2.getRuntimeConfig)(config);
|
|
77
|
+
if (masterApp) {
|
|
78
|
+
var _useConfig_server, _router_historyOptions;
|
|
79
|
+
const useConfig = api.getConfig();
|
|
80
|
+
const baseUrl = useConfig === null || useConfig === void 0 ? void 0 : (_useConfig_server = useConfig.server) === null || _useConfig_server === void 0 ? void 0 : _useConfig_server.baseUrl;
|
|
81
|
+
if (Array.isArray(baseUrl)) {
|
|
82
|
+
throw new Error("Now Micro-Front-End mode dose not support multiple baseUrl, you can set it as a string");
|
|
71
83
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
84
|
+
(0, import_utils2.setRuntimeConfig)(config, "masterApp", Object.assign(typeof masterApp === "object" ? {
|
|
85
|
+
...masterApp
|
|
86
|
+
} : {}, {
|
|
87
|
+
basename: baseUrl || (router === null || router === void 0 ? void 0 : (_router_historyOptions = router.historyOptions) === null || _router_historyOptions === void 0 ? void 0 : _router_historyOptions.basename) || (router === null || router === void 0 ? void 0 : router.basename) || "/"
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
(0, import_util.logger)(`resolvedConfig`, {
|
|
91
|
+
output: config.output,
|
|
92
|
+
runtime: config.runtime,
|
|
93
|
+
deploy: config.deploy,
|
|
94
|
+
server: config.server
|
|
95
|
+
});
|
|
96
|
+
return config;
|
|
97
|
+
});
|
|
98
|
+
api.config(() => {
|
|
99
|
+
var _useConfig_output, _useConfig_deploy;
|
|
100
|
+
const useConfig = api.getConfig();
|
|
101
|
+
const { metaName, packageName } = api.getAppContext();
|
|
102
|
+
(0, import_util.logger)("useConfig", useConfig);
|
|
103
|
+
let disableCssExtract = ((_useConfig_output = useConfig.output) === null || _useConfig_output === void 0 ? void 0 : _useConfig_output.disableCssExtract) || false;
|
|
104
|
+
if ((_useConfig_deploy = useConfig.deploy) === null || _useConfig_deploy === void 0 ? void 0 : _useConfig_deploy.microFrontend) {
|
|
105
|
+
var _useConfig_deploy1;
|
|
106
|
+
const { enableHtmlEntry } = getDefaultMicroFrontedConfig((_useConfig_deploy1 = useConfig.deploy) === null || _useConfig_deploy1 === void 0 ? void 0 : _useConfig_deploy1.microFrontend);
|
|
107
|
+
if (!enableHtmlEntry) {
|
|
108
|
+
disableCssExtract = true;
|
|
97
109
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
config() {
|
|
107
|
-
var _useConfig_output, _useConfig_deploy;
|
|
108
|
-
const useConfig = api.useConfigContext();
|
|
109
|
-
const { metaName, packageName } = api.useAppContext();
|
|
110
|
-
(0, import_util.logger)("useConfig", useConfig);
|
|
111
|
-
let disableCssExtract = ((_useConfig_output = useConfig.output) === null || _useConfig_output === void 0 ? void 0 : _useConfig_output.disableCssExtract) || false;
|
|
112
|
-
if ((_useConfig_deploy = useConfig.deploy) === null || _useConfig_deploy === void 0 ? void 0 : _useConfig_deploy.microFrontend) {
|
|
113
|
-
var _useConfig_deploy1;
|
|
114
|
-
const { enableHtmlEntry } = getDefaultMicroFrontedConfig((_useConfig_deploy1 = useConfig.deploy) === null || _useConfig_deploy1 === void 0 ? void 0 : _useConfig_deploy1.microFrontend);
|
|
115
|
-
if (!enableHtmlEntry) {
|
|
116
|
-
disableCssExtract = true;
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
output: {
|
|
113
|
+
disableCssExtract
|
|
114
|
+
},
|
|
115
|
+
source: {
|
|
116
|
+
alias: {
|
|
117
|
+
[`@${metaName}/runtime/garfish`]: `@${metaName}/plugin-garfish/runtime`
|
|
117
118
|
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
source: {
|
|
124
|
-
alias: {
|
|
125
|
-
[`@${metaName}/runtime/garfish`]: `@${metaName}/plugin-garfish/runtime`
|
|
119
|
+
},
|
|
120
|
+
tools: {
|
|
121
|
+
devServer: {
|
|
122
|
+
headers: {
|
|
123
|
+
"Access-Control-Allow-Origin": "*"
|
|
126
124
|
}
|
|
127
125
|
},
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
bundlerChain: (chain, { env, CHAIN_ID, bundler }) => {
|
|
135
|
-
var _resolveOptions_deploy, _resolveConfig_resolve;
|
|
136
|
-
if (bundler.BannerPlugin) {
|
|
137
|
-
chain.plugin("garfish-banner").use(bundler.BannerPlugin, [
|
|
138
|
-
{
|
|
139
|
-
banner: "Micro front-end"
|
|
140
|
-
}
|
|
141
|
-
]);
|
|
142
|
-
}
|
|
143
|
-
const resolveOptions = api.useResolvedConfigContext();
|
|
144
|
-
if (resolveOptions === null || resolveOptions === void 0 ? void 0 : (_resolveOptions_deploy = resolveOptions.deploy) === null || _resolveOptions_deploy === void 0 ? void 0 : _resolveOptions_deploy.microFrontend) {
|
|
145
|
-
var _resolveOptions_dev, _useConfig_dev, _resolveOptions_server, _resolveOptions_deploy1;
|
|
146
|
-
chain.output.libraryTarget("umd");
|
|
147
|
-
const DEFAULT_ASSET_PREFIX = "/";
|
|
148
|
-
const resolvedAssetPrefix = (_resolveOptions_dev = resolveOptions.dev) === null || _resolveOptions_dev === void 0 ? void 0 : _resolveOptions_dev.assetPrefix;
|
|
149
|
-
const isUsingDefaultAssetPrefix = !((_useConfig_dev = useConfig.dev) === null || _useConfig_dev === void 0 ? void 0 : _useConfig_dev.assetPrefix) && (!resolvedAssetPrefix || resolvedAssetPrefix === DEFAULT_ASSET_PREFIX);
|
|
150
|
-
if (isUsingDefaultAssetPrefix && (resolveOptions === null || resolveOptions === void 0 ? void 0 : (_resolveOptions_server = resolveOptions.server) === null || _resolveOptions_server === void 0 ? void 0 : _resolveOptions_server.port) && env === "development") {
|
|
151
|
-
chain.output.publicPath(`//localhost:${resolveOptions.server.port}/`);
|
|
152
|
-
}
|
|
153
|
-
const { enableHtmlEntry, externalBasicLibrary } = getDefaultMicroFrontedConfig((_resolveOptions_deploy1 = resolveOptions.deploy) === null || _resolveOptions_deploy1 === void 0 ? void 0 : _resolveOptions_deploy1.microFrontend);
|
|
154
|
-
if (externalBasicLibrary) {
|
|
155
|
-
chain.externals(externals);
|
|
156
|
-
}
|
|
157
|
-
if (!enableHtmlEntry) {
|
|
158
|
-
chain.output.filename("index.js");
|
|
159
|
-
chain.plugins.delete(`${CHAIN_ID.PLUGIN.HTML}-main`);
|
|
160
|
-
chain.optimization.runtimeChunk(false);
|
|
161
|
-
chain.optimization.splitChunks({
|
|
162
|
-
chunks: "async"
|
|
163
|
-
});
|
|
126
|
+
bundlerChain: (chain, { env, CHAIN_ID, bundler }) => {
|
|
127
|
+
var _resolveOptions_deploy, _resolveConfig_resolve;
|
|
128
|
+
if (bundler.BannerPlugin) {
|
|
129
|
+
chain.plugin("garfish-banner").use(bundler.BannerPlugin, [
|
|
130
|
+
{
|
|
131
|
+
banner: "Micro front-end"
|
|
164
132
|
}
|
|
133
|
+
]);
|
|
134
|
+
}
|
|
135
|
+
const resolveOptions = api.getNormalizedConfig();
|
|
136
|
+
if (resolveOptions === null || resolveOptions === void 0 ? void 0 : (_resolveOptions_deploy = resolveOptions.deploy) === null || _resolveOptions_deploy === void 0 ? void 0 : _resolveOptions_deploy.microFrontend) {
|
|
137
|
+
var _resolveOptions_dev, _useConfig_dev, _resolveOptions_server, _resolveOptions_deploy1;
|
|
138
|
+
chain.output.libraryTarget("umd");
|
|
139
|
+
const DEFAULT_ASSET_PREFIX = "/";
|
|
140
|
+
const resolvedAssetPrefix = (_resolveOptions_dev = resolveOptions.dev) === null || _resolveOptions_dev === void 0 ? void 0 : _resolveOptions_dev.assetPrefix;
|
|
141
|
+
const isUsingDefaultAssetPrefix = !((_useConfig_dev = useConfig.dev) === null || _useConfig_dev === void 0 ? void 0 : _useConfig_dev.assetPrefix) && (!resolvedAssetPrefix || resolvedAssetPrefix === DEFAULT_ASSET_PREFIX);
|
|
142
|
+
if (isUsingDefaultAssetPrefix && (resolveOptions === null || resolveOptions === void 0 ? void 0 : (_resolveOptions_server = resolveOptions.server) === null || _resolveOptions_server === void 0 ? void 0 : _resolveOptions_server.port) && env === "development") {
|
|
143
|
+
chain.output.publicPath(`//localhost:${resolveOptions.server.port}/`);
|
|
165
144
|
}
|
|
166
|
-
const
|
|
167
|
-
if (
|
|
168
|
-
chain.
|
|
145
|
+
const { enableHtmlEntry, externalBasicLibrary } = getDefaultMicroFrontedConfig((_resolveOptions_deploy1 = resolveOptions.deploy) === null || _resolveOptions_deploy1 === void 0 ? void 0 : _resolveOptions_deploy1.microFrontend);
|
|
146
|
+
if (externalBasicLibrary) {
|
|
147
|
+
chain.externals(externals);
|
|
169
148
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
}
|
|
149
|
+
if (!enableHtmlEntry) {
|
|
150
|
+
chain.output.filename("index.js");
|
|
151
|
+
chain.plugins.delete(`${CHAIN_ID.PLUGIN.HTML}-main`);
|
|
152
|
+
chain.optimization.runtimeChunk(false);
|
|
153
|
+
chain.optimization.splitChunks({
|
|
154
|
+
chunks: "async"
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
const uniqueName = chain.output.get("uniqueName");
|
|
159
|
+
if (!uniqueName) {
|
|
160
|
+
chain.output.uniqueName(packageName);
|
|
178
161
|
}
|
|
162
|
+
const resolveConfig = chain.toConfig();
|
|
163
|
+
(0, import_util.logger)("bundlerConfig", {
|
|
164
|
+
output: resolveConfig.output,
|
|
165
|
+
externals: resolveConfig.externals,
|
|
166
|
+
env,
|
|
167
|
+
alias: (_resolveConfig_resolve = resolveConfig.resolve) === null || _resolveConfig_resolve === void 0 ? void 0 : _resolveConfig_resolve.alias,
|
|
168
|
+
plugins: resolveConfig.plugins
|
|
169
|
+
});
|
|
179
170
|
}
|
|
180
|
-
};
|
|
181
|
-
},
|
|
182
|
-
addRuntimeExports() {
|
|
183
|
-
const config = api.useResolvedConfigContext();
|
|
184
|
-
const { masterApp } = (0, import_utils2.getRuntimeConfig)(config);
|
|
185
|
-
const { internalDirectory, metaName } = api.useAppContext();
|
|
186
|
-
const pluginsExportsUtils = (0, import_utils.createRuntimeExportsUtils)(internalDirectory, "plugins");
|
|
187
|
-
if (masterApp) {
|
|
188
|
-
const addExportStatement = `export { default as garfish, default as masterApp } from '@${metaName}/plugin-garfish/runtime'`;
|
|
189
|
-
(0, import_util.logger)("exportStatement", addExportStatement);
|
|
190
|
-
pluginsExportsUtils.addExport(addExportStatement);
|
|
191
|
-
}
|
|
192
|
-
},
|
|
193
|
-
async generateEntryCode({ entrypoints }) {
|
|
194
|
-
var _resolveOptions_deploy;
|
|
195
|
-
const resolveOptions = api.useResolvedConfigContext();
|
|
196
|
-
if (resolveOptions === null || resolveOptions === void 0 ? void 0 : (_resolveOptions_deploy = resolveOptions.deploy) === null || _resolveOptions_deploy === void 0 ? void 0 : _resolveOptions_deploy.microFrontend) {
|
|
197
|
-
const appContext = api.useAppContext();
|
|
198
|
-
const resolvedConfig = api.useResolvedConfigContext();
|
|
199
|
-
const { appendEntryCode: appendEntryCode2 } = api.useHookRunners();
|
|
200
|
-
await (0, import_code.generateCode)(entrypoints, appContext, resolvedConfig, appendEntryCode2);
|
|
201
171
|
}
|
|
172
|
+
};
|
|
173
|
+
});
|
|
174
|
+
api.addRuntimeExports(() => {
|
|
175
|
+
const config = api.getNormalizedConfig();
|
|
176
|
+
const { masterApp } = (0, import_utils2.getRuntimeConfig)(config);
|
|
177
|
+
const { internalDirectory, metaName } = api.useAppContext();
|
|
178
|
+
const pluginsExportsUtils = (0, import_utils.createRuntimeExportsUtils)(internalDirectory, "plugins");
|
|
179
|
+
if (masterApp) {
|
|
180
|
+
const addExportStatement = `export { default as garfish, default as masterApp } from '@${metaName}/plugin-garfish/runtime'`;
|
|
181
|
+
(0, import_util.logger)("exportStatement", addExportStatement);
|
|
182
|
+
pluginsExportsUtils.addExport(addExportStatement);
|
|
202
183
|
}
|
|
203
|
-
};
|
|
184
|
+
});
|
|
185
|
+
api.generateEntryCode(async ({ entrypoints }) => {
|
|
186
|
+
var _resolveOptions_deploy;
|
|
187
|
+
const resolveOptions = api.getNormalizedConfig();
|
|
188
|
+
if (resolveOptions === null || resolveOptions === void 0 ? void 0 : (_resolveOptions_deploy = resolveOptions.deploy) === null || _resolveOptions_deploy === void 0 ? void 0 : _resolveOptions_deploy.microFrontend) {
|
|
189
|
+
const appContext = api.getAppContext();
|
|
190
|
+
const resolvedConfig = api.getNormalizedConfig();
|
|
191
|
+
const hooks = api.getHooks();
|
|
192
|
+
await (0, import_code.generateCode)(entrypoints, appContext, resolvedConfig, hooks);
|
|
193
|
+
}
|
|
194
|
+
});
|
|
204
195
|
}
|
|
205
196
|
});
|
|
206
197
|
var cli_default = garfishPlugin;
|
package/dist/esm/cli/code.js
CHANGED
|
@@ -7,7 +7,7 @@ import { generateAsyncEntryCode } from "./utils";
|
|
|
7
7
|
var ENTRY_POINT_FILE_NAME = "index.jsx";
|
|
8
8
|
var ENTRY_BOOTSTRAP_FILE_NAME = "bootstrap.jsx";
|
|
9
9
|
var generateCode = function() {
|
|
10
|
-
var _ref = _async_to_generator(function(entrypoints, appContext, config,
|
|
10
|
+
var _ref = _async_to_generator(function(entrypoints, appContext, config, hooks) {
|
|
11
11
|
var mountId, enableAsyncEntry, internalDirectory, internalSrcAlias, metaName, srcDirectory;
|
|
12
12
|
return _ts_generator(this, function(_state) {
|
|
13
13
|
switch (_state.label) {
|
|
@@ -26,7 +26,7 @@ var generateCode = function() {
|
|
|
26
26
|
entryName = entrypoint.entryName, isAutoMount = entrypoint.isAutoMount, entry = entrypoint.entry, customEntry = entrypoint.customEntry, customBootstrap = entrypoint.customBootstrap;
|
|
27
27
|
return [
|
|
28
28
|
4,
|
|
29
|
-
appendEntryCode({
|
|
29
|
+
hooks.appendEntryCode.call({
|
|
30
30
|
entrypoint
|
|
31
31
|
})
|
|
32
32
|
];
|
|
@@ -70,7 +70,7 @@ var generateCode = function() {
|
|
|
70
70
|
}
|
|
71
71
|
});
|
|
72
72
|
});
|
|
73
|
-
return function generateCode2(entrypoints, appContext, config,
|
|
73
|
+
return function generateCode2(entrypoints, appContext, config, hooks) {
|
|
74
74
|
return _ref.apply(this, arguments);
|
|
75
75
|
};
|
|
76
76
|
}();
|
package/dist/esm/cli/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import { _ as _define_property } from "@swc/helpers/_/_define_property";
|
|
|
3
3
|
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
4
4
|
import { _ as _type_of } from "@swc/helpers/_/_type_of";
|
|
5
5
|
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
6
|
-
import {
|
|
6
|
+
import { createCollectAsyncHook } from "@modern-js/plugin-v2";
|
|
7
7
|
import { createRuntimeExportsUtils, getEntryOptions } from "@modern-js/utils";
|
|
8
8
|
import { logger } from "../util";
|
|
9
9
|
import { generateCode } from "./code";
|
|
@@ -25,189 +25,174 @@ function getDefaultMicroFrontedConfig(microFrontend) {
|
|
|
25
25
|
externalBasicLibrary: false
|
|
26
26
|
}, microFrontend);
|
|
27
27
|
}
|
|
28
|
-
var appendEntryCode = createAsyncWorkflow();
|
|
29
28
|
var garfishPlugin = function() {
|
|
30
29
|
return {
|
|
31
30
|
name: "@modern-js/plugin-garfish",
|
|
32
31
|
pre: [
|
|
33
32
|
"@modern-js/runtime"
|
|
34
33
|
],
|
|
35
|
-
|
|
36
|
-
appendEntryCode
|
|
34
|
+
registryHooks: {
|
|
35
|
+
appendEntryCode: createCollectAsyncHook()
|
|
37
36
|
},
|
|
38
37
|
setup: function(api) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
config: (runtimeConfig === null || runtimeConfig === void 0 ? void 0 : runtimeConfig.masterApp) || {}
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
return {
|
|
53
|
-
entrypoint,
|
|
54
|
-
plugins
|
|
55
|
-
};
|
|
56
|
-
},
|
|
57
|
-
resolvedConfig: function() {
|
|
58
|
-
var _ref = _async_to_generator(function(config) {
|
|
59
|
-
var resolved, _getRuntimeConfig, masterApp, router, nConfig, _useConfig_server, _router_historyOptions, useConfig, baseUrl;
|
|
60
|
-
return _ts_generator(this, function(_state) {
|
|
61
|
-
resolved = config.resolved;
|
|
62
|
-
_getRuntimeConfig = getRuntimeConfig(resolved), masterApp = _getRuntimeConfig.masterApp, router = _getRuntimeConfig.router;
|
|
63
|
-
nConfig = {
|
|
64
|
-
resolved: _object_spread({}, resolved)
|
|
65
|
-
};
|
|
66
|
-
if (masterApp) {
|
|
67
|
-
;
|
|
68
|
-
useConfig = api.useConfigContext();
|
|
69
|
-
baseUrl = useConfig === null || useConfig === void 0 ? void 0 : (_useConfig_server = useConfig.server) === null || _useConfig_server === void 0 ? void 0 : _useConfig_server.baseUrl;
|
|
70
|
-
if (Array.isArray(baseUrl)) {
|
|
71
|
-
throw new Error("Now Micro-Front-End mode dose not support multiple baseUrl, you can set it as a string");
|
|
72
|
-
}
|
|
73
|
-
setRuntimeConfig(nConfig.resolved, "masterApp", Object.assign((typeof masterApp === "undefined" ? "undefined" : _type_of(masterApp)) === "object" ? _object_spread({}, masterApp) : {}, {
|
|
74
|
-
basename: baseUrl || (router === null || router === void 0 ? void 0 : (_router_historyOptions = router.historyOptions) === null || _router_historyOptions === void 0 ? void 0 : _router_historyOptions.basename) || (router === null || router === void 0 ? void 0 : router.basename) || "/"
|
|
75
|
-
}));
|
|
76
|
-
}
|
|
77
|
-
logger("resolvedConfig", {
|
|
78
|
-
output: nConfig.resolved.output,
|
|
79
|
-
runtime: nConfig.resolved.runtime,
|
|
80
|
-
deploy: nConfig.resolved.deploy,
|
|
81
|
-
server: nConfig.resolved.server
|
|
82
|
-
});
|
|
83
|
-
return [
|
|
84
|
-
2,
|
|
85
|
-
nConfig
|
|
86
|
-
];
|
|
87
|
-
});
|
|
38
|
+
api._internalRuntimePlugins(function(param) {
|
|
39
|
+
var entrypoint = param.entrypoint, plugins = param.plugins;
|
|
40
|
+
var userConfig = api.getNormalizedConfig();
|
|
41
|
+
var _api_getAppContext = api.getAppContext(), packageName = _api_getAppContext.packageName, metaName = _api_getAppContext.metaName;
|
|
42
|
+
var runtimeConfig = getEntryOptions(entrypoint.entryName, entrypoint.isMainEntry, userConfig.runtime, userConfig.runtimeByEntries, packageName);
|
|
43
|
+
if (runtimeConfig === null || runtimeConfig === void 0 ? void 0 : runtimeConfig.masterApp) {
|
|
44
|
+
plugins.push({
|
|
45
|
+
name: "garfish",
|
|
46
|
+
path: "@".concat(metaName, "/plugin-garfish/runtime"),
|
|
47
|
+
config: (runtimeConfig === null || runtimeConfig === void 0 ? void 0 : runtimeConfig.masterApp) || {}
|
|
88
48
|
});
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
var
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
disableCssExtract = true;
|
|
104
|
-
}
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
entrypoint,
|
|
52
|
+
plugins
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
api.modifyResolvedConfig(function(config) {
|
|
56
|
+
var _getRuntimeConfig = getRuntimeConfig(config), masterApp = _getRuntimeConfig.masterApp, router = _getRuntimeConfig.router;
|
|
57
|
+
if (masterApp) {
|
|
58
|
+
var _useConfig_server, _router_historyOptions;
|
|
59
|
+
var useConfig = api.getConfig();
|
|
60
|
+
var baseUrl = useConfig === null || useConfig === void 0 ? void 0 : (_useConfig_server = useConfig.server) === null || _useConfig_server === void 0 ? void 0 : _useConfig_server.baseUrl;
|
|
61
|
+
if (Array.isArray(baseUrl)) {
|
|
62
|
+
throw new Error("Now Micro-Front-End mode dose not support multiple baseUrl, you can set it as a string");
|
|
105
63
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
64
|
+
setRuntimeConfig(config, "masterApp", Object.assign((typeof masterApp === "undefined" ? "undefined" : _type_of(masterApp)) === "object" ? _object_spread({}, masterApp) : {}, {
|
|
65
|
+
basename: baseUrl || (router === null || router === void 0 ? void 0 : (_router_historyOptions = router.historyOptions) === null || _router_historyOptions === void 0 ? void 0 : _router_historyOptions.basename) || (router === null || router === void 0 ? void 0 : router.basename) || "/"
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
logger("resolvedConfig", {
|
|
69
|
+
output: config.output,
|
|
70
|
+
runtime: config.runtime,
|
|
71
|
+
deploy: config.deploy,
|
|
72
|
+
server: config.server
|
|
73
|
+
});
|
|
74
|
+
return config;
|
|
75
|
+
});
|
|
76
|
+
api.config(function() {
|
|
77
|
+
var _useConfig_output, _useConfig_deploy;
|
|
78
|
+
var useConfig = api.getConfig();
|
|
79
|
+
var _api_getAppContext = api.getAppContext(), metaName = _api_getAppContext.metaName, packageName = _api_getAppContext.packageName;
|
|
80
|
+
logger("useConfig", useConfig);
|
|
81
|
+
var disableCssExtract = ((_useConfig_output = useConfig.output) === null || _useConfig_output === void 0 ? void 0 : _useConfig_output.disableCssExtract) || false;
|
|
82
|
+
if ((_useConfig_deploy = useConfig.deploy) === null || _useConfig_deploy === void 0 ? void 0 : _useConfig_deploy.microFrontend) {
|
|
83
|
+
var _useConfig_deploy1;
|
|
84
|
+
var enableHtmlEntry = getDefaultMicroFrontedConfig((_useConfig_deploy1 = useConfig.deploy) === null || _useConfig_deploy1 === void 0 ? void 0 : _useConfig_deploy1.microFrontend).enableHtmlEntry;
|
|
85
|
+
if (!enableHtmlEntry) {
|
|
86
|
+
disableCssExtract = true;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
output: {
|
|
91
|
+
disableCssExtract
|
|
92
|
+
},
|
|
93
|
+
source: {
|
|
94
|
+
alias: _define_property({}, "@".concat(metaName, "/runtime/garfish"), "@".concat(metaName, "/plugin-garfish/runtime"))
|
|
95
|
+
},
|
|
96
|
+
tools: {
|
|
97
|
+
devServer: {
|
|
98
|
+
headers: {
|
|
99
|
+
"Access-Control-Allow-Origin": "*"
|
|
100
|
+
}
|
|
112
101
|
},
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
var env = param.env, CHAIN_ID = param.CHAIN_ID, bundler = param.bundler;
|
|
121
|
-
var _resolveOptions_deploy, _resolveConfig_resolve;
|
|
122
|
-
if (bundler.BannerPlugin) {
|
|
123
|
-
chain.plugin("garfish-banner").use(bundler.BannerPlugin, [
|
|
124
|
-
{
|
|
125
|
-
banner: "Micro front-end"
|
|
126
|
-
}
|
|
127
|
-
]);
|
|
128
|
-
}
|
|
129
|
-
var resolveOptions = api.useResolvedConfigContext();
|
|
130
|
-
if (resolveOptions === null || resolveOptions === void 0 ? void 0 : (_resolveOptions_deploy = resolveOptions.deploy) === null || _resolveOptions_deploy === void 0 ? void 0 : _resolveOptions_deploy.microFrontend) {
|
|
131
|
-
var _resolveOptions_dev, _useConfig_dev, _resolveOptions_server, _resolveOptions_deploy1;
|
|
132
|
-
chain.output.libraryTarget("umd");
|
|
133
|
-
var DEFAULT_ASSET_PREFIX = "/";
|
|
134
|
-
var resolvedAssetPrefix = (_resolveOptions_dev = resolveOptions.dev) === null || _resolveOptions_dev === void 0 ? void 0 : _resolveOptions_dev.assetPrefix;
|
|
135
|
-
var isUsingDefaultAssetPrefix = !((_useConfig_dev = useConfig.dev) === null || _useConfig_dev === void 0 ? void 0 : _useConfig_dev.assetPrefix) && (!resolvedAssetPrefix || resolvedAssetPrefix === DEFAULT_ASSET_PREFIX);
|
|
136
|
-
if (isUsingDefaultAssetPrefix && (resolveOptions === null || resolveOptions === void 0 ? void 0 : (_resolveOptions_server = resolveOptions.server) === null || _resolveOptions_server === void 0 ? void 0 : _resolveOptions_server.port) && env === "development") {
|
|
137
|
-
chain.output.publicPath("//localhost:".concat(resolveOptions.server.port, "/"));
|
|
138
|
-
}
|
|
139
|
-
var _getDefaultMicroFrontedConfig = getDefaultMicroFrontedConfig((_resolveOptions_deploy1 = resolveOptions.deploy) === null || _resolveOptions_deploy1 === void 0 ? void 0 : _resolveOptions_deploy1.microFrontend), enableHtmlEntry2 = _getDefaultMicroFrontedConfig.enableHtmlEntry, externalBasicLibrary = _getDefaultMicroFrontedConfig.externalBasicLibrary;
|
|
140
|
-
if (externalBasicLibrary) {
|
|
141
|
-
chain.externals(externals);
|
|
142
|
-
}
|
|
143
|
-
if (!enableHtmlEntry2) {
|
|
144
|
-
chain.output.filename("index.js");
|
|
145
|
-
chain.plugins.delete("".concat(CHAIN_ID.PLUGIN.HTML, "-main"));
|
|
146
|
-
chain.optimization.runtimeChunk(false);
|
|
147
|
-
chain.optimization.splitChunks({
|
|
148
|
-
chunks: "async"
|
|
149
|
-
});
|
|
102
|
+
bundlerChain: function(chain, param) {
|
|
103
|
+
var env = param.env, CHAIN_ID = param.CHAIN_ID, bundler = param.bundler;
|
|
104
|
+
var _resolveOptions_deploy, _resolveConfig_resolve;
|
|
105
|
+
if (bundler.BannerPlugin) {
|
|
106
|
+
chain.plugin("garfish-banner").use(bundler.BannerPlugin, [
|
|
107
|
+
{
|
|
108
|
+
banner: "Micro front-end"
|
|
150
109
|
}
|
|
110
|
+
]);
|
|
111
|
+
}
|
|
112
|
+
var resolveOptions = api.getNormalizedConfig();
|
|
113
|
+
if (resolveOptions === null || resolveOptions === void 0 ? void 0 : (_resolveOptions_deploy = resolveOptions.deploy) === null || _resolveOptions_deploy === void 0 ? void 0 : _resolveOptions_deploy.microFrontend) {
|
|
114
|
+
var _resolveOptions_dev, _useConfig_dev, _resolveOptions_server, _resolveOptions_deploy1;
|
|
115
|
+
chain.output.libraryTarget("umd");
|
|
116
|
+
var DEFAULT_ASSET_PREFIX = "/";
|
|
117
|
+
var resolvedAssetPrefix = (_resolveOptions_dev = resolveOptions.dev) === null || _resolveOptions_dev === void 0 ? void 0 : _resolveOptions_dev.assetPrefix;
|
|
118
|
+
var isUsingDefaultAssetPrefix = !((_useConfig_dev = useConfig.dev) === null || _useConfig_dev === void 0 ? void 0 : _useConfig_dev.assetPrefix) && (!resolvedAssetPrefix || resolvedAssetPrefix === DEFAULT_ASSET_PREFIX);
|
|
119
|
+
if (isUsingDefaultAssetPrefix && (resolveOptions === null || resolveOptions === void 0 ? void 0 : (_resolveOptions_server = resolveOptions.server) === null || _resolveOptions_server === void 0 ? void 0 : _resolveOptions_server.port) && env === "development") {
|
|
120
|
+
chain.output.publicPath("//localhost:".concat(resolveOptions.server.port, "/"));
|
|
121
|
+
}
|
|
122
|
+
var _getDefaultMicroFrontedConfig = getDefaultMicroFrontedConfig((_resolveOptions_deploy1 = resolveOptions.deploy) === null || _resolveOptions_deploy1 === void 0 ? void 0 : _resolveOptions_deploy1.microFrontend), enableHtmlEntry2 = _getDefaultMicroFrontedConfig.enableHtmlEntry, externalBasicLibrary = _getDefaultMicroFrontedConfig.externalBasicLibrary;
|
|
123
|
+
if (externalBasicLibrary) {
|
|
124
|
+
chain.externals(externals);
|
|
151
125
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
chain.
|
|
126
|
+
if (!enableHtmlEntry2) {
|
|
127
|
+
chain.output.filename("index.js");
|
|
128
|
+
chain.plugins.delete("".concat(CHAIN_ID.PLUGIN.HTML, "-main"));
|
|
129
|
+
chain.optimization.runtimeChunk(false);
|
|
130
|
+
chain.optimization.splitChunks({
|
|
131
|
+
chunks: "async"
|
|
132
|
+
});
|
|
155
133
|
}
|
|
156
|
-
var resolveConfig = chain.toConfig();
|
|
157
|
-
logger("bundlerConfig", {
|
|
158
|
-
output: resolveConfig.output,
|
|
159
|
-
externals: resolveConfig.externals,
|
|
160
|
-
env,
|
|
161
|
-
alias: (_resolveConfig_resolve = resolveConfig.resolve) === null || _resolveConfig_resolve === void 0 ? void 0 : _resolveConfig_resolve.alias,
|
|
162
|
-
plugins: resolveConfig.plugins
|
|
163
|
-
});
|
|
164
134
|
}
|
|
135
|
+
var uniqueName = chain.output.get("uniqueName");
|
|
136
|
+
if (!uniqueName) {
|
|
137
|
+
chain.output.uniqueName(packageName);
|
|
138
|
+
}
|
|
139
|
+
var resolveConfig = chain.toConfig();
|
|
140
|
+
logger("bundlerConfig", {
|
|
141
|
+
output: resolveConfig.output,
|
|
142
|
+
externals: resolveConfig.externals,
|
|
143
|
+
env,
|
|
144
|
+
alias: (_resolveConfig_resolve = resolveConfig.resolve) === null || _resolveConfig_resolve === void 0 ? void 0 : _resolveConfig_resolve.alias,
|
|
145
|
+
plugins: resolveConfig.plugins
|
|
146
|
+
});
|
|
165
147
|
}
|
|
166
|
-
};
|
|
167
|
-
},
|
|
168
|
-
addRuntimeExports: function addRuntimeExports() {
|
|
169
|
-
var config = api.useResolvedConfigContext();
|
|
170
|
-
var masterApp = getRuntimeConfig(config).masterApp;
|
|
171
|
-
var _api_useAppContext = api.useAppContext(), internalDirectory = _api_useAppContext.internalDirectory, metaName = _api_useAppContext.metaName;
|
|
172
|
-
var pluginsExportsUtils = createRuntimeExportsUtils(internalDirectory, "plugins");
|
|
173
|
-
if (masterApp) {
|
|
174
|
-
var addExportStatement = "export { default as garfish, default as masterApp } from '@".concat(metaName, "/plugin-garfish/runtime'");
|
|
175
|
-
logger("exportStatement", addExportStatement);
|
|
176
|
-
pluginsExportsUtils.addExport(addExportStatement);
|
|
177
148
|
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
_state.sent();
|
|
201
|
-
_state.label = 2;
|
|
202
|
-
case 2:
|
|
149
|
+
};
|
|
150
|
+
});
|
|
151
|
+
api.addRuntimeExports(function() {
|
|
152
|
+
var config = api.getNormalizedConfig();
|
|
153
|
+
var masterApp = getRuntimeConfig(config).masterApp;
|
|
154
|
+
var _api_useAppContext = api.useAppContext(), internalDirectory = _api_useAppContext.internalDirectory, metaName = _api_useAppContext.metaName;
|
|
155
|
+
var pluginsExportsUtils = createRuntimeExportsUtils(internalDirectory, "plugins");
|
|
156
|
+
if (masterApp) {
|
|
157
|
+
var addExportStatement = "export { default as garfish, default as masterApp } from '@".concat(metaName, "/plugin-garfish/runtime'");
|
|
158
|
+
logger("exportStatement", addExportStatement);
|
|
159
|
+
pluginsExportsUtils.addExport(addExportStatement);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
api.generateEntryCode(function() {
|
|
163
|
+
var _ref = _async_to_generator(function(param) {
|
|
164
|
+
var entrypoints, _resolveOptions_deploy, resolveOptions, appContext, resolvedConfig, hooks;
|
|
165
|
+
return _ts_generator(this, function(_state) {
|
|
166
|
+
switch (_state.label) {
|
|
167
|
+
case 0:
|
|
168
|
+
entrypoints = param.entrypoints;
|
|
169
|
+
resolveOptions = api.getNormalizedConfig();
|
|
170
|
+
if (!(resolveOptions === null || resolveOptions === void 0 ? void 0 : (_resolveOptions_deploy = resolveOptions.deploy) === null || _resolveOptions_deploy === void 0 ? void 0 : _resolveOptions_deploy.microFrontend))
|
|
203
171
|
return [
|
|
172
|
+
3,
|
|
204
173
|
2
|
|
205
174
|
];
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
175
|
+
appContext = api.getAppContext();
|
|
176
|
+
resolvedConfig = api.getNormalizedConfig();
|
|
177
|
+
hooks = api.getHooks();
|
|
178
|
+
return [
|
|
179
|
+
4,
|
|
180
|
+
generateCode(entrypoints, appContext, resolvedConfig, hooks)
|
|
181
|
+
];
|
|
182
|
+
case 1:
|
|
183
|
+
_state.sent();
|
|
184
|
+
_state.label = 2;
|
|
185
|
+
case 2:
|
|
186
|
+
return [
|
|
187
|
+
2
|
|
188
|
+
];
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
return function(_) {
|
|
193
|
+
return _ref.apply(this, arguments);
|
|
194
|
+
};
|
|
195
|
+
}());
|
|
211
196
|
}
|
|
212
197
|
};
|
|
213
198
|
};
|
|
@@ -4,13 +4,13 @@ import * as template from "./template";
|
|
|
4
4
|
import { generateAsyncEntryCode } from "./utils";
|
|
5
5
|
const ENTRY_POINT_FILE_NAME = "index.jsx";
|
|
6
6
|
const ENTRY_BOOTSTRAP_FILE_NAME = "bootstrap.jsx";
|
|
7
|
-
const generateCode = async (entrypoints, appContext, config,
|
|
7
|
+
const generateCode = async (entrypoints, appContext, config, hooks) => {
|
|
8
8
|
const { mountId } = config.html;
|
|
9
9
|
const { enableAsyncEntry } = config.source;
|
|
10
10
|
const { internalDirectory, internalSrcAlias, metaName, srcDirectory } = appContext;
|
|
11
11
|
await Promise.all(entrypoints.map(async (entrypoint) => {
|
|
12
12
|
const { entryName, isAutoMount, entry, customEntry, customBootstrap } = entrypoint;
|
|
13
|
-
const appendCode = await appendEntryCode({
|
|
13
|
+
const appendCode = await hooks.appendEntryCode.call({
|
|
14
14
|
entrypoint
|
|
15
15
|
});
|
|
16
16
|
if (isAutoMount) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createCollectAsyncHook } from "@modern-js/plugin-v2";
|
|
2
2
|
import { createRuntimeExportsUtils, getEntryOptions } from "@modern-js/utils";
|
|
3
3
|
import { logger } from "../util";
|
|
4
4
|
import { generateCode } from "./code";
|
|
@@ -21,160 +21,151 @@ function getDefaultMicroFrontedConfig(microFrontend) {
|
|
|
21
21
|
...microFrontend
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
const appendEntryCode = createAsyncWorkflow();
|
|
25
24
|
const garfishPlugin = () => ({
|
|
26
25
|
name: "@modern-js/plugin-garfish",
|
|
27
26
|
pre: [
|
|
28
27
|
"@modern-js/runtime"
|
|
29
28
|
],
|
|
30
|
-
|
|
31
|
-
appendEntryCode
|
|
29
|
+
registryHooks: {
|
|
30
|
+
appendEntryCode: createCollectAsyncHook()
|
|
32
31
|
},
|
|
33
32
|
setup: (api) => {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
33
|
+
api._internalRuntimePlugins(({ entrypoint, plugins }) => {
|
|
34
|
+
const userConfig = api.getNormalizedConfig();
|
|
35
|
+
const { packageName, metaName } = api.getAppContext();
|
|
36
|
+
const runtimeConfig = getEntryOptions(entrypoint.entryName, entrypoint.isMainEntry, userConfig.runtime, userConfig.runtimeByEntries, packageName);
|
|
37
|
+
if (runtimeConfig === null || runtimeConfig === void 0 ? void 0 : runtimeConfig.masterApp) {
|
|
38
|
+
plugins.push({
|
|
39
|
+
name: "garfish",
|
|
40
|
+
path: `@${metaName}/plugin-garfish/runtime`,
|
|
41
|
+
config: (runtimeConfig === null || runtimeConfig === void 0 ? void 0 : runtimeConfig.masterApp) || {}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
entrypoint,
|
|
46
|
+
plugins
|
|
47
|
+
};
|
|
48
|
+
});
|
|
49
|
+
api.modifyResolvedConfig((config) => {
|
|
50
|
+
const { masterApp, router } = getRuntimeConfig(config);
|
|
51
|
+
if (masterApp) {
|
|
52
|
+
var _useConfig_server, _router_historyOptions;
|
|
53
|
+
const useConfig = api.getConfig();
|
|
54
|
+
const baseUrl = useConfig === null || useConfig === void 0 ? void 0 : (_useConfig_server = useConfig.server) === null || _useConfig_server === void 0 ? void 0 : _useConfig_server.baseUrl;
|
|
55
|
+
if (Array.isArray(baseUrl)) {
|
|
56
|
+
throw new Error("Now Micro-Front-End mode dose not support multiple baseUrl, you can set it as a string");
|
|
45
57
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
58
|
+
setRuntimeConfig(config, "masterApp", Object.assign(typeof masterApp === "object" ? {
|
|
59
|
+
...masterApp
|
|
60
|
+
} : {}, {
|
|
61
|
+
basename: baseUrl || (router === null || router === void 0 ? void 0 : (_router_historyOptions = router.historyOptions) === null || _router_historyOptions === void 0 ? void 0 : _router_historyOptions.basename) || (router === null || router === void 0 ? void 0 : router.basename) || "/"
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
logger(`resolvedConfig`, {
|
|
65
|
+
output: config.output,
|
|
66
|
+
runtime: config.runtime,
|
|
67
|
+
deploy: config.deploy,
|
|
68
|
+
server: config.server
|
|
69
|
+
});
|
|
70
|
+
return config;
|
|
71
|
+
});
|
|
72
|
+
api.config(() => {
|
|
73
|
+
var _useConfig_output, _useConfig_deploy;
|
|
74
|
+
const useConfig = api.getConfig();
|
|
75
|
+
const { metaName, packageName } = api.getAppContext();
|
|
76
|
+
logger("useConfig", useConfig);
|
|
77
|
+
let disableCssExtract = ((_useConfig_output = useConfig.output) === null || _useConfig_output === void 0 ? void 0 : _useConfig_output.disableCssExtract) || false;
|
|
78
|
+
if ((_useConfig_deploy = useConfig.deploy) === null || _useConfig_deploy === void 0 ? void 0 : _useConfig_deploy.microFrontend) {
|
|
79
|
+
var _useConfig_deploy1;
|
|
80
|
+
const { enableHtmlEntry } = getDefaultMicroFrontedConfig((_useConfig_deploy1 = useConfig.deploy) === null || _useConfig_deploy1 === void 0 ? void 0 : _useConfig_deploy1.microFrontend);
|
|
81
|
+
if (!enableHtmlEntry) {
|
|
82
|
+
disableCssExtract = true;
|
|
71
83
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
config() {
|
|
81
|
-
var _useConfig_output, _useConfig_deploy;
|
|
82
|
-
const useConfig = api.useConfigContext();
|
|
83
|
-
const { metaName, packageName } = api.useAppContext();
|
|
84
|
-
logger("useConfig", useConfig);
|
|
85
|
-
let disableCssExtract = ((_useConfig_output = useConfig.output) === null || _useConfig_output === void 0 ? void 0 : _useConfig_output.disableCssExtract) || false;
|
|
86
|
-
if ((_useConfig_deploy = useConfig.deploy) === null || _useConfig_deploy === void 0 ? void 0 : _useConfig_deploy.microFrontend) {
|
|
87
|
-
var _useConfig_deploy1;
|
|
88
|
-
const { enableHtmlEntry } = getDefaultMicroFrontedConfig((_useConfig_deploy1 = useConfig.deploy) === null || _useConfig_deploy1 === void 0 ? void 0 : _useConfig_deploy1.microFrontend);
|
|
89
|
-
if (!enableHtmlEntry) {
|
|
90
|
-
disableCssExtract = true;
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
output: {
|
|
87
|
+
disableCssExtract
|
|
88
|
+
},
|
|
89
|
+
source: {
|
|
90
|
+
alias: {
|
|
91
|
+
[`@${metaName}/runtime/garfish`]: `@${metaName}/plugin-garfish/runtime`
|
|
91
92
|
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
source: {
|
|
98
|
-
alias: {
|
|
99
|
-
[`@${metaName}/runtime/garfish`]: `@${metaName}/plugin-garfish/runtime`
|
|
93
|
+
},
|
|
94
|
+
tools: {
|
|
95
|
+
devServer: {
|
|
96
|
+
headers: {
|
|
97
|
+
"Access-Control-Allow-Origin": "*"
|
|
100
98
|
}
|
|
101
99
|
},
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
bundlerChain: (chain, { env, CHAIN_ID, bundler }) => {
|
|
109
|
-
var _resolveOptions_deploy, _resolveConfig_resolve;
|
|
110
|
-
if (bundler.BannerPlugin) {
|
|
111
|
-
chain.plugin("garfish-banner").use(bundler.BannerPlugin, [
|
|
112
|
-
{
|
|
113
|
-
banner: "Micro front-end"
|
|
114
|
-
}
|
|
115
|
-
]);
|
|
116
|
-
}
|
|
117
|
-
const resolveOptions = api.useResolvedConfigContext();
|
|
118
|
-
if (resolveOptions === null || resolveOptions === void 0 ? void 0 : (_resolveOptions_deploy = resolveOptions.deploy) === null || _resolveOptions_deploy === void 0 ? void 0 : _resolveOptions_deploy.microFrontend) {
|
|
119
|
-
var _resolveOptions_dev, _useConfig_dev, _resolveOptions_server, _resolveOptions_deploy1;
|
|
120
|
-
chain.output.libraryTarget("umd");
|
|
121
|
-
const DEFAULT_ASSET_PREFIX = "/";
|
|
122
|
-
const resolvedAssetPrefix = (_resolveOptions_dev = resolveOptions.dev) === null || _resolveOptions_dev === void 0 ? void 0 : _resolveOptions_dev.assetPrefix;
|
|
123
|
-
const isUsingDefaultAssetPrefix = !((_useConfig_dev = useConfig.dev) === null || _useConfig_dev === void 0 ? void 0 : _useConfig_dev.assetPrefix) && (!resolvedAssetPrefix || resolvedAssetPrefix === DEFAULT_ASSET_PREFIX);
|
|
124
|
-
if (isUsingDefaultAssetPrefix && (resolveOptions === null || resolveOptions === void 0 ? void 0 : (_resolveOptions_server = resolveOptions.server) === null || _resolveOptions_server === void 0 ? void 0 : _resolveOptions_server.port) && env === "development") {
|
|
125
|
-
chain.output.publicPath(`//localhost:${resolveOptions.server.port}/`);
|
|
126
|
-
}
|
|
127
|
-
const { enableHtmlEntry, externalBasicLibrary } = getDefaultMicroFrontedConfig((_resolveOptions_deploy1 = resolveOptions.deploy) === null || _resolveOptions_deploy1 === void 0 ? void 0 : _resolveOptions_deploy1.microFrontend);
|
|
128
|
-
if (externalBasicLibrary) {
|
|
129
|
-
chain.externals(externals);
|
|
130
|
-
}
|
|
131
|
-
if (!enableHtmlEntry) {
|
|
132
|
-
chain.output.filename("index.js");
|
|
133
|
-
chain.plugins.delete(`${CHAIN_ID.PLUGIN.HTML}-main`);
|
|
134
|
-
chain.optimization.runtimeChunk(false);
|
|
135
|
-
chain.optimization.splitChunks({
|
|
136
|
-
chunks: "async"
|
|
137
|
-
});
|
|
100
|
+
bundlerChain: (chain, { env, CHAIN_ID, bundler }) => {
|
|
101
|
+
var _resolveOptions_deploy, _resolveConfig_resolve;
|
|
102
|
+
if (bundler.BannerPlugin) {
|
|
103
|
+
chain.plugin("garfish-banner").use(bundler.BannerPlugin, [
|
|
104
|
+
{
|
|
105
|
+
banner: "Micro front-end"
|
|
138
106
|
}
|
|
107
|
+
]);
|
|
108
|
+
}
|
|
109
|
+
const resolveOptions = api.getNormalizedConfig();
|
|
110
|
+
if (resolveOptions === null || resolveOptions === void 0 ? void 0 : (_resolveOptions_deploy = resolveOptions.deploy) === null || _resolveOptions_deploy === void 0 ? void 0 : _resolveOptions_deploy.microFrontend) {
|
|
111
|
+
var _resolveOptions_dev, _useConfig_dev, _resolveOptions_server, _resolveOptions_deploy1;
|
|
112
|
+
chain.output.libraryTarget("umd");
|
|
113
|
+
const DEFAULT_ASSET_PREFIX = "/";
|
|
114
|
+
const resolvedAssetPrefix = (_resolveOptions_dev = resolveOptions.dev) === null || _resolveOptions_dev === void 0 ? void 0 : _resolveOptions_dev.assetPrefix;
|
|
115
|
+
const isUsingDefaultAssetPrefix = !((_useConfig_dev = useConfig.dev) === null || _useConfig_dev === void 0 ? void 0 : _useConfig_dev.assetPrefix) && (!resolvedAssetPrefix || resolvedAssetPrefix === DEFAULT_ASSET_PREFIX);
|
|
116
|
+
if (isUsingDefaultAssetPrefix && (resolveOptions === null || resolveOptions === void 0 ? void 0 : (_resolveOptions_server = resolveOptions.server) === null || _resolveOptions_server === void 0 ? void 0 : _resolveOptions_server.port) && env === "development") {
|
|
117
|
+
chain.output.publicPath(`//localhost:${resolveOptions.server.port}/`);
|
|
139
118
|
}
|
|
140
|
-
const
|
|
141
|
-
if (
|
|
142
|
-
chain.
|
|
119
|
+
const { enableHtmlEntry, externalBasicLibrary } = getDefaultMicroFrontedConfig((_resolveOptions_deploy1 = resolveOptions.deploy) === null || _resolveOptions_deploy1 === void 0 ? void 0 : _resolveOptions_deploy1.microFrontend);
|
|
120
|
+
if (externalBasicLibrary) {
|
|
121
|
+
chain.externals(externals);
|
|
143
122
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
}
|
|
123
|
+
if (!enableHtmlEntry) {
|
|
124
|
+
chain.output.filename("index.js");
|
|
125
|
+
chain.plugins.delete(`${CHAIN_ID.PLUGIN.HTML}-main`);
|
|
126
|
+
chain.optimization.runtimeChunk(false);
|
|
127
|
+
chain.optimization.splitChunks({
|
|
128
|
+
chunks: "async"
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
const uniqueName = chain.output.get("uniqueName");
|
|
133
|
+
if (!uniqueName) {
|
|
134
|
+
chain.output.uniqueName(packageName);
|
|
152
135
|
}
|
|
136
|
+
const resolveConfig = chain.toConfig();
|
|
137
|
+
logger("bundlerConfig", {
|
|
138
|
+
output: resolveConfig.output,
|
|
139
|
+
externals: resolveConfig.externals,
|
|
140
|
+
env,
|
|
141
|
+
alias: (_resolveConfig_resolve = resolveConfig.resolve) === null || _resolveConfig_resolve === void 0 ? void 0 : _resolveConfig_resolve.alias,
|
|
142
|
+
plugins: resolveConfig.plugins
|
|
143
|
+
});
|
|
153
144
|
}
|
|
154
|
-
};
|
|
155
|
-
},
|
|
156
|
-
addRuntimeExports() {
|
|
157
|
-
const config = api.useResolvedConfigContext();
|
|
158
|
-
const { masterApp } = getRuntimeConfig(config);
|
|
159
|
-
const { internalDirectory, metaName } = api.useAppContext();
|
|
160
|
-
const pluginsExportsUtils = createRuntimeExportsUtils(internalDirectory, "plugins");
|
|
161
|
-
if (masterApp) {
|
|
162
|
-
const addExportStatement = `export { default as garfish, default as masterApp } from '@${metaName}/plugin-garfish/runtime'`;
|
|
163
|
-
logger("exportStatement", addExportStatement);
|
|
164
|
-
pluginsExportsUtils.addExport(addExportStatement);
|
|
165
|
-
}
|
|
166
|
-
},
|
|
167
|
-
async generateEntryCode({ entrypoints }) {
|
|
168
|
-
var _resolveOptions_deploy;
|
|
169
|
-
const resolveOptions = api.useResolvedConfigContext();
|
|
170
|
-
if (resolveOptions === null || resolveOptions === void 0 ? void 0 : (_resolveOptions_deploy = resolveOptions.deploy) === null || _resolveOptions_deploy === void 0 ? void 0 : _resolveOptions_deploy.microFrontend) {
|
|
171
|
-
const appContext = api.useAppContext();
|
|
172
|
-
const resolvedConfig = api.useResolvedConfigContext();
|
|
173
|
-
const { appendEntryCode: appendEntryCode2 } = api.useHookRunners();
|
|
174
|
-
await generateCode(entrypoints, appContext, resolvedConfig, appendEntryCode2);
|
|
175
145
|
}
|
|
146
|
+
};
|
|
147
|
+
});
|
|
148
|
+
api.addRuntimeExports(() => {
|
|
149
|
+
const config = api.getNormalizedConfig();
|
|
150
|
+
const { masterApp } = getRuntimeConfig(config);
|
|
151
|
+
const { internalDirectory, metaName } = api.useAppContext();
|
|
152
|
+
const pluginsExportsUtils = createRuntimeExportsUtils(internalDirectory, "plugins");
|
|
153
|
+
if (masterApp) {
|
|
154
|
+
const addExportStatement = `export { default as garfish, default as masterApp } from '@${metaName}/plugin-garfish/runtime'`;
|
|
155
|
+
logger("exportStatement", addExportStatement);
|
|
156
|
+
pluginsExportsUtils.addExport(addExportStatement);
|
|
176
157
|
}
|
|
177
|
-
};
|
|
158
|
+
});
|
|
159
|
+
api.generateEntryCode(async ({ entrypoints }) => {
|
|
160
|
+
var _resolveOptions_deploy;
|
|
161
|
+
const resolveOptions = api.getNormalizedConfig();
|
|
162
|
+
if (resolveOptions === null || resolveOptions === void 0 ? void 0 : (_resolveOptions_deploy = resolveOptions.deploy) === null || _resolveOptions_deploy === void 0 ? void 0 : _resolveOptions_deploy.microFrontend) {
|
|
163
|
+
const appContext = api.getAppContext();
|
|
164
|
+
const resolvedConfig = api.getNormalizedConfig();
|
|
165
|
+
const hooks = api.getHooks();
|
|
166
|
+
await generateCode(entrypoints, appContext, resolvedConfig, hooks);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
178
169
|
}
|
|
179
170
|
});
|
|
180
171
|
var cli_default = garfishPlugin;
|
package/dist/types/cli/code.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import type { AppTools,
|
|
2
|
-
import type { MaybeAsync } from '@modern-js/plugin';
|
|
1
|
+
import type { AppTools, AppToolsContext, AppToolsFeatureHooks, NormalizedConfig } from '@modern-js/app-tools';
|
|
3
2
|
import type { Entrypoint } from '@modern-js/types';
|
|
4
3
|
export declare const ENTRY_BOOTSTRAP_FILE_NAME = "bootstrap.jsx";
|
|
5
|
-
export declare const generateCode: (entrypoints: Entrypoint[], appContext:
|
|
6
|
-
entrypoint: Entrypoint;
|
|
7
|
-
}) => MaybeAsync<string[]>) => Promise<void>;
|
|
4
|
+
export declare const generateCode: (entrypoints: Entrypoint[], appContext: AppToolsContext<'shared'>, config: NormalizedConfig<AppTools>, hooks: AppToolsFeatureHooks<'shared'>) => Promise<void>;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import type { AppTools,
|
|
1
|
+
import type { AppTools, CliPluginFuture } from '@modern-js/app-tools';
|
|
2
2
|
import type { CliHookCallbacks, useConfigContext } from '@modern-js/core';
|
|
3
|
-
import { type AsyncWorkflow } from '@modern-js/plugin';
|
|
4
|
-
import type { Entrypoint } from '@modern-js/types';
|
|
5
3
|
export type UseConfig = ReturnType<typeof useConfigContext>;
|
|
6
4
|
export declare const externals: {
|
|
7
5
|
'react-dom': string;
|
|
@@ -10,14 +8,5 @@ export declare const externals: {
|
|
|
10
8
|
export type LifeCycle = CliHookCallbacks;
|
|
11
9
|
type NonInValidAble<T> = T extends null | undefined | false ? never : T;
|
|
12
10
|
export declare function getDefaultMicroFrontedConfig(microFrontend: NonInValidAble<NonNullable<UseConfig['deploy']>['microFrontend']>): any;
|
|
13
|
-
declare const
|
|
14
|
-
entrypoint: Entrypoint;
|
|
15
|
-
}, string>;
|
|
16
|
-
export declare const garfishPlugin: () => CliPlugin<AppTools & {
|
|
17
|
-
hooks: {
|
|
18
|
-
appendEntryCode: AsyncWorkflow<{
|
|
19
|
-
entrypoint: Entrypoint;
|
|
20
|
-
}, string>;
|
|
21
|
-
};
|
|
22
|
-
}>;
|
|
11
|
+
export declare const garfishPlugin: () => CliPluginFuture<AppTools<'shared'>>;
|
|
23
12
|
export default garfishPlugin;
|
package/package.json
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"modern",
|
|
16
16
|
"modern.js"
|
|
17
17
|
],
|
|
18
|
-
"version": "2.63.
|
|
18
|
+
"version": "2.63.4",
|
|
19
19
|
"jsnext:source": "./src/cli/index.ts",
|
|
20
20
|
"types": "./dist/types/cli/index.d.ts",
|
|
21
21
|
"typesVersions": {
|
|
@@ -69,12 +69,12 @@
|
|
|
69
69
|
"debug": "4.3.7",
|
|
70
70
|
"garfish": "^1.8.1",
|
|
71
71
|
"react-loadable": "^5.5.0",
|
|
72
|
-
"@modern-js/plugin": "2.63.
|
|
73
|
-
"@modern-js/runtime-utils": "2.63.
|
|
74
|
-
"@modern-js/utils": "2.63.
|
|
72
|
+
"@modern-js/plugin-v2": "2.63.4",
|
|
73
|
+
"@modern-js/runtime-utils": "2.63.4",
|
|
74
|
+
"@modern-js/utils": "2.63.4"
|
|
75
75
|
},
|
|
76
76
|
"peerDependencies": {
|
|
77
|
-
"@modern-js/runtime": "^2.63.
|
|
77
|
+
"@modern-js/runtime": "^2.63.4",
|
|
78
78
|
"react": ">=17",
|
|
79
79
|
"react-dom": ">=17"
|
|
80
80
|
},
|
|
@@ -93,13 +93,13 @@
|
|
|
93
93
|
"react-dom": "^18.3.1",
|
|
94
94
|
"react-router-dom": "6.27.0",
|
|
95
95
|
"typescript": "^5",
|
|
96
|
-
"@modern-js/app-tools": "2.63.
|
|
97
|
-
"@modern-js/
|
|
98
|
-
"@modern-js/
|
|
99
|
-
"@modern-js/
|
|
100
|
-
"@scripts/build": "2.63.
|
|
101
|
-
"@
|
|
102
|
-
"@
|
|
96
|
+
"@modern-js/app-tools": "2.63.4",
|
|
97
|
+
"@modern-js/core": "2.63.4",
|
|
98
|
+
"@modern-js/runtime": "2.63.4",
|
|
99
|
+
"@modern-js/plugin-router-v5": "2.63.4",
|
|
100
|
+
"@scripts/build": "2.63.4",
|
|
101
|
+
"@scripts/jest-config": "2.63.4",
|
|
102
|
+
"@modern-js/types": "2.63.4"
|
|
103
103
|
},
|
|
104
104
|
"sideEffects": false,
|
|
105
105
|
"publishConfig": {
|