@modern-js/app-tools 2.7.0 → 2.8.0
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/CHANGELOG.md +53 -2
- package/README.md +2 -2
- package/dist/cjs/analyze/generateCode.js +16 -2
- package/dist/cjs/analyze/index.js +0 -32
- package/dist/cjs/analyze/templates.js +26 -2
- package/dist/cjs/analyze/utils.js +5 -0
- package/dist/cjs/builder/builder-webpack/builderPlugins/compatModern.js +2 -13
- package/dist/cjs/builder/generator/index.js +10 -2
- package/dist/cjs/builder/index.js +1 -1
- package/dist/cjs/builder/shared/builderPlugins/adapterBasic.js +101 -0
- package/dist/cjs/builder/shared/builderPlugins/adapterHtml.js +91 -0
- package/dist/cjs/builder/shared/builderPlugins/adapterSSR.js +164 -0
- package/dist/cjs/builder/{builder-webpack/webpackPlugins → shared/builderPlugins}/index.js +5 -3
- package/dist/cjs/builder/{builder-webpack/webpackPlugins → shared/bundlerPlugins}/RouterPlugin.js +11 -5
- package/dist/cjs/builder/shared/bundlerPlugins/index.js +19 -0
- package/dist/cjs/builder/shared/index.js +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/locale/en.js +1 -0
- package/dist/cjs/locale/zh.js +1 -0
- package/dist/esm/analyze/generateCode.js +34 -19
- package/dist/esm/analyze/index.js +2 -25
- package/dist/esm/analyze/templates.js +16 -2
- package/dist/esm/analyze/utils.js +4 -1
- package/dist/esm/builder/builder-webpack/builderPlugins/compatModern.js +0 -11
- package/dist/esm/builder/generator/index.js +6 -4
- package/dist/esm/builder/index.js +1 -1
- package/dist/esm/builder/shared/builderPlugins/adapterBasic.js +101 -0
- package/dist/esm/builder/shared/builderPlugins/adapterHtml.js +120 -0
- package/dist/esm/builder/shared/builderPlugins/adapterSSR.js +350 -0
- package/dist/esm/builder/shared/builderPlugins/index.js +3 -0
- package/dist/esm/builder/{builder-webpack/webpackPlugins → shared/bundlerPlugins}/RouterPlugin.js +10 -6
- package/dist/esm/builder/shared/bundlerPlugins/index.js +3 -0
- package/dist/esm/builder/shared/index.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/locale/en.js +1 -0
- package/dist/esm/locale/zh.js +1 -0
- package/dist/esm-node/analyze/generateCode.js +29 -4
- package/dist/esm-node/analyze/index.js +1 -39
- package/dist/esm-node/analyze/templates.js +25 -2
- package/dist/esm-node/analyze/utils.js +4 -0
- package/dist/esm-node/builder/builder-webpack/builderPlugins/compatModern.js +2 -13
- package/dist/esm-node/builder/generator/index.js +10 -2
- package/dist/esm-node/builder/index.js +1 -1
- package/dist/esm-node/builder/shared/builderPlugins/adapterBasic.js +67 -0
- package/dist/esm-node/builder/shared/builderPlugins/adapterHtml.js +67 -0
- package/dist/esm-node/builder/shared/builderPlugins/adapterSSR.js +143 -0
- package/dist/esm-node/builder/shared/builderPlugins/index.js +3 -0
- package/dist/esm-node/builder/{builder-webpack/webpackPlugins → shared/bundlerPlugins}/RouterPlugin.js +11 -5
- package/dist/esm-node/builder/shared/bundlerPlugins/index.js +3 -0
- package/dist/esm-node/builder/shared/index.js +1 -1
- package/dist/esm-node/index.js +1 -1
- package/dist/esm-node/locale/en.js +1 -0
- package/dist/esm-node/locale/zh.js +1 -0
- package/dist/types/analyze/templates.d.ts +3 -2
- package/dist/types/analyze/utils.d.ts +2 -1
- package/dist/types/builder/shared/builderPlugins/adapterBasic.d.ts +7 -0
- package/dist/types/builder/shared/builderPlugins/adapterHtml.d.ts +5 -0
- package/dist/types/builder/shared/builderPlugins/adapterSSR.d.ts +4 -0
- package/dist/types/builder/shared/builderPlugins/index.d.ts +3 -0
- package/dist/types/builder/shared/bundlerPlugins/RouterPlugin.d.ts +5 -0
- package/dist/types/builder/shared/bundlerPlugins/index.d.ts +3 -0
- package/dist/types/builder/shared/index.d.ts +1 -1
- package/dist/types/builder/shared/types.d.ts +7 -4
- package/dist/types/locale/en.d.ts +1 -0
- package/dist/types/locale/index.d.ts +2 -0
- package/dist/types/locale/zh.d.ts +1 -0
- package/dist/types/types/config/output.d.ts +2 -15
- package/package.json +26 -26
- package/dist/cjs/builder/shared/builderPlugins/adapterModern.js +0 -234
- package/dist/esm/builder/builder-webpack/webpackPlugins/index.js +0 -1
- package/dist/esm/builder/shared/builderPlugins/adapterModern.js +0 -300
- package/dist/esm-node/builder/builder-webpack/webpackPlugins/index.js +0 -1
- package/dist/esm-node/builder/shared/builderPlugins/adapterModern.js +0 -202
- package/dist/types/builder/builder-webpack/webpackPlugins/RouterPlugin.d.ts +0 -4
- package/dist/types/builder/builder-webpack/webpackPlugins/index.d.ts +0 -1
- package/dist/types/builder/shared/builderPlugins/adapterModern.d.ts +0 -13
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
mergeBuilderConfig
|
|
3
|
-
} from "@modern-js/builder-shared";
|
|
4
|
-
import { getEntryOptions } from "@modern-js/utils";
|
|
5
|
-
import HtmlWebpackPlugin from "@modern-js/builder-webpack-provider/html-webpack-plugin";
|
|
6
|
-
import { template as lodashTemplate } from "@modern-js/utils/lodash";
|
|
7
|
-
import { HtmlAsyncChunkPlugin } from "../bundlerPlugins/HtmlAsyncChunkPlugin";
|
|
8
|
-
import { BottomTemplatePlugin } from "../bundlerPlugins/HtmlBottomTemplate";
|
|
9
|
-
const isStreamingSSR = (userConfig) => {
|
|
10
|
-
const isStreaming = (ssr) => ssr && typeof ssr === "object" && ssr.mode === "stream";
|
|
11
|
-
const { server } = userConfig;
|
|
12
|
-
if (isStreaming(server.ssr)) {
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
if ((server == null ? void 0 : server.ssrByEntries) && typeof server.ssrByEntries === "object") {
|
|
16
|
-
for (const name of Object.keys(server.ssrByEntries)) {
|
|
17
|
-
if (isStreaming(server.ssrByEntries[name])) {
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
return false;
|
|
23
|
-
};
|
|
24
|
-
const builderPluginAdapterModern = (options) => ({
|
|
25
|
-
name: "builder-plugin-adapter-modern",
|
|
26
|
-
setup(api) {
|
|
27
|
-
const { normalizedConfig, appContext } = options;
|
|
28
|
-
api.modifyBuilderConfig((config) => {
|
|
29
|
-
if (isStreamingSSR(normalizedConfig)) {
|
|
30
|
-
return mergeBuilderConfig(config, {
|
|
31
|
-
html: {
|
|
32
|
-
inject: "body"
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
return config;
|
|
37
|
-
});
|
|
38
|
-
api.modifyBundlerChain((chain, { target, CHAIN_ID, isProd }) => {
|
|
39
|
-
const builderConfig = api.getNormalizedConfig();
|
|
40
|
-
if (target === "node") {
|
|
41
|
-
chain.name("server");
|
|
42
|
-
} else if (target === "service-worker") {
|
|
43
|
-
chain.name("service-worker");
|
|
44
|
-
} else if (target === "web-worker") {
|
|
45
|
-
chain.name("worker");
|
|
46
|
-
} else if (target === "modern-web") {
|
|
47
|
-
chain.name("modern");
|
|
48
|
-
} else {
|
|
49
|
-
chain.name("client");
|
|
50
|
-
}
|
|
51
|
-
if (target === "node" || target === "service-worker") {
|
|
52
|
-
applyNodeCompat(target, chain, normalizedConfig, isProd);
|
|
53
|
-
}
|
|
54
|
-
if (isHtmlEnabled(builderConfig, target)) {
|
|
55
|
-
applyBottomHtmlPlugin({
|
|
56
|
-
api,
|
|
57
|
-
chain,
|
|
58
|
-
modernConfig: normalizedConfig,
|
|
59
|
-
appContext,
|
|
60
|
-
CHAIN_ID
|
|
61
|
-
});
|
|
62
|
-
applyAsyncChunkHtmlPlugin({
|
|
63
|
-
chain,
|
|
64
|
-
modernConfig: normalizedConfig,
|
|
65
|
-
CHAIN_ID
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
if (target !== "node" && target !== "web-worker" && target !== "service-worker") {
|
|
69
|
-
const bareServerModuleReg = /\.(server|node)\.[tj]sx?$/;
|
|
70
|
-
chain.module.rule(CHAIN_ID.RULE.JS).exclude.add(bareServerModuleReg);
|
|
71
|
-
chain.module.rule("bare-server-module").test(bareServerModuleReg).use("server-module-loader").loader(require.resolve("../loaders/serverModuleLoader"));
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
applyCallbacks(api, options);
|
|
75
|
-
function isHtmlEnabled(config, target) {
|
|
76
|
-
var _a;
|
|
77
|
-
return ((_a = config.tools) == null ? void 0 : _a.htmlPlugin) !== false && target !== "node" && target !== "service-worker" && target !== "web-worker";
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
function applyCallbacks(api, options) {
|
|
82
|
-
options.onAfterBuild && api.onAfterBuild(options.onAfterBuild);
|
|
83
|
-
options.onAfterCreateCompiler && api.onAfterCreateCompiler(options.onAfterCreateCompiler);
|
|
84
|
-
options.onAfterStartDevServer && api.onAfterStartDevServer(options.onAfterStartDevServer);
|
|
85
|
-
options.onBeforeBuild && api.onBeforeBuild(options.onBeforeBuild);
|
|
86
|
-
options.onBeforeCreateCompiler && api.onBeforeCreateCompiler(options.onBeforeCreateCompiler);
|
|
87
|
-
options.onBeforeStartDevServer && api.onBeforeStartDevServer(options.onBeforeStartDevServer);
|
|
88
|
-
options.onDevCompileDone && api.onDevCompileDone(options.onDevCompileDone);
|
|
89
|
-
options.onExit && api.onExit(options.onExit);
|
|
90
|
-
}
|
|
91
|
-
function applyBottomHtmlPlugin({
|
|
92
|
-
api,
|
|
93
|
-
chain,
|
|
94
|
-
modernConfig,
|
|
95
|
-
appContext,
|
|
96
|
-
CHAIN_ID
|
|
97
|
-
}) {
|
|
98
|
-
for (const entryName of Object.keys(api.context.entry)) {
|
|
99
|
-
const baseTemplateParams = {
|
|
100
|
-
entryName,
|
|
101
|
-
title: getEntryOptions(
|
|
102
|
-
entryName,
|
|
103
|
-
modernConfig.html.title,
|
|
104
|
-
modernConfig.html.titleByEntries,
|
|
105
|
-
appContext.packageName
|
|
106
|
-
),
|
|
107
|
-
mountId: modernConfig.html.mountId,
|
|
108
|
-
...getEntryOptions(
|
|
109
|
-
entryName,
|
|
110
|
-
modernConfig.html.templateParameters,
|
|
111
|
-
modernConfig.html.templateParametersByEntries,
|
|
112
|
-
appContext.packageName
|
|
113
|
-
)
|
|
114
|
-
};
|
|
115
|
-
chain.plugin(`${CHAIN_ID.PLUGIN.HTML}-${entryName}`).tap((args) => [
|
|
116
|
-
{
|
|
117
|
-
...args[0] || {},
|
|
118
|
-
__internal__: true,
|
|
119
|
-
bottomTemplate: appContext.htmlTemplates[`__${entryName}-bottom__`] && lodashTemplate(appContext.htmlTemplates[`__${entryName}-bottom__`])(
|
|
120
|
-
baseTemplateParams
|
|
121
|
-
)
|
|
122
|
-
}
|
|
123
|
-
]);
|
|
124
|
-
}
|
|
125
|
-
chain.plugin(CHAIN_ID.PLUGIN.BOTTOM_TEMPLATE).use(BottomTemplatePlugin, [HtmlWebpackPlugin]);
|
|
126
|
-
}
|
|
127
|
-
function applyAsyncChunkHtmlPlugin({
|
|
128
|
-
chain,
|
|
129
|
-
modernConfig,
|
|
130
|
-
CHAIN_ID
|
|
131
|
-
}) {
|
|
132
|
-
if (isStreamingSSR(modernConfig)) {
|
|
133
|
-
chain.plugin(CHAIN_ID.PLUGIN.HTML_ASYNC_CHUNK).use(HtmlAsyncChunkPlugin, [HtmlWebpackPlugin]);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
function applyNodeCompat(target, chain, modernConfig, isProd) {
|
|
137
|
-
const nodeExts = [
|
|
138
|
-
".node.js",
|
|
139
|
-
".node.jsx",
|
|
140
|
-
".node.ts",
|
|
141
|
-
".node.tsx",
|
|
142
|
-
".server.js",
|
|
143
|
-
".server.ts",
|
|
144
|
-
".server.ts",
|
|
145
|
-
".server.tsx"
|
|
146
|
-
];
|
|
147
|
-
const webWorkerExts = [
|
|
148
|
-
".worker.js",
|
|
149
|
-
".worker.jsx",
|
|
150
|
-
".worker.ts",
|
|
151
|
-
".worker.tsx"
|
|
152
|
-
];
|
|
153
|
-
for (const ext of nodeExts) {
|
|
154
|
-
chain.resolve.extensions.prepend(ext);
|
|
155
|
-
}
|
|
156
|
-
if (target === "service-worker") {
|
|
157
|
-
for (const ext of webWorkerExts) {
|
|
158
|
-
chain.resolve.extensions.prepend(ext);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
filterEntriesBySSRConfig(
|
|
162
|
-
isProd,
|
|
163
|
-
chain,
|
|
164
|
-
modernConfig.server,
|
|
165
|
-
modernConfig.output
|
|
166
|
-
);
|
|
167
|
-
function filterEntriesBySSRConfig(isProd2, chain2, serverConfig, outputConfig) {
|
|
168
|
-
var _a;
|
|
169
|
-
const entries = chain2.entryPoints.entries();
|
|
170
|
-
if (isProd2 && ((outputConfig == null ? void 0 : outputConfig.ssg) === true || typeof ((_a = outputConfig == null ? void 0 : outputConfig.ssg) == null ? void 0 : _a[0]) === "function")) {
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
if (typeof entries === "undefined") {
|
|
174
|
-
throw new Error(
|
|
175
|
-
"No entry found, one of src/routes/layout.tsx, src/App.tsx, src/index.tsx is required"
|
|
176
|
-
);
|
|
177
|
-
}
|
|
178
|
-
const entryNames = Object.keys(entries);
|
|
179
|
-
if (isProd2 && entryNames.length === 1 && (outputConfig == null ? void 0 : outputConfig.ssg)) {
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
const ssgEntries = [];
|
|
183
|
-
if (isProd2 && (outputConfig == null ? void 0 : outputConfig.ssg)) {
|
|
184
|
-
const { ssg } = outputConfig;
|
|
185
|
-
entryNames.forEach((name) => {
|
|
186
|
-
if (ssg[name]) {
|
|
187
|
-
ssgEntries.push(name);
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
const { ssr, ssrByEntries } = serverConfig || {};
|
|
192
|
-
entryNames.forEach((name) => {
|
|
193
|
-
if (!ssgEntries.includes(name) && (ssr && (ssrByEntries == null ? void 0 : ssrByEntries[name]) === false || !ssr && !(ssrByEntries == null ? void 0 : ssrByEntries[name]))) {
|
|
194
|
-
chain2.entryPoints.delete(name);
|
|
195
|
-
}
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
export {
|
|
200
|
-
applyCallbacks,
|
|
201
|
-
builderPluginAdapterModern
|
|
202
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './RouterPlugin';
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { BuilderPlugin, DefaultBuilderPluginAPI } from '@modern-js/builder-shared';
|
|
2
|
-
import { BuilderConfig as RspackBuilderConfig, NormalizedConfig as RspackNormalizedConfig } from '@modern-js/builder-rspack-provider';
|
|
3
|
-
import { BuilderConfig as WebpackBuilderConfig, NormalizedConfig as WebpackNormalizedConfig } from '@modern-js/builder-webpack-provider';
|
|
4
|
-
import type { BuilderOptions } from '../types';
|
|
5
|
-
import type { Bundler } from '../../../types';
|
|
6
|
-
type BuilderConfig = RspackBuilderConfig | WebpackBuilderConfig;
|
|
7
|
-
type NormalizedConfig = RspackNormalizedConfig | WebpackNormalizedConfig;
|
|
8
|
-
type BuilderPluginAPI = DefaultBuilderPluginAPI<BuilderConfig, NormalizedConfig>;
|
|
9
|
-
export declare const builderPluginAdapterModern: <B extends Bundler>(options: BuilderOptions<B>) => BuilderPlugin<BuilderPluginAPI>;
|
|
10
|
-
/** register builder hooks callback */
|
|
11
|
-
|
|
12
|
-
export declare function applyCallbacks<B extends Bundler>(api: BuilderPluginAPI, options: BuilderOptions<B>): void;
|
|
13
|
-
export {};
|