@modern-js/app-tools 2.54.6 → 2.56.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/dist/cjs/builder/generator/getBuilderEnvironments.js +84 -0
- package/dist/cjs/builder/generator/index.js +6 -5
- package/dist/cjs/builder/shared/builderPlugins/adapterBasic.js +7 -14
- package/dist/cjs/builder/shared/builderPlugins/adapterHtml.js +8 -8
- package/dist/cjs/builder/shared/builderPlugins/adapterSSR.js +6 -8
- package/dist/cjs/builder/shared/builderPlugins/adapterWorker.js +5 -3
- package/dist/cjs/commands/index.js +2 -2
- package/dist/cjs/commands/inspect.js +1 -2
- package/dist/cjs/commands/serve.js +1 -0
- package/dist/cjs/config/default.js +2 -2
- package/dist/cjs/config/legacy/createSourceConfig.js +2 -1
- package/dist/cjs/config/legacy/index.js +1 -0
- package/dist/cjs/hooks.js +2 -5
- package/dist/cjs/plugins/analyze/constants.js +3 -18
- package/dist/cjs/plugins/analyze/getBundleEntry.js +2 -1
- package/dist/cjs/plugins/analyze/getFileSystemEntry.js +36 -11
- package/dist/cjs/plugins/analyze/index.js +7 -64
- package/dist/cjs/plugins/analyze/templates.js +2 -55
- package/dist/cjs/plugins/analyze/utils.js +0 -86
- package/dist/esm/builder/generator/{createBuilderOptions.js → getBuilderEnvironments.js} +43 -7
- package/dist/esm/builder/generator/index.js +9 -9
- package/dist/esm/builder/shared/builderPlugins/adapterBasic.js +7 -14
- package/dist/esm/builder/shared/builderPlugins/adapterHtml.js +8 -8
- package/dist/esm/builder/shared/builderPlugins/adapterSSR.js +6 -8
- package/dist/esm/builder/shared/builderPlugins/adapterWorker.js +6 -4
- package/dist/esm/commands/index.js +1 -1
- package/dist/esm/commands/inspect.js +1 -2
- package/dist/esm/commands/serve.js +1 -0
- package/dist/esm/config/default.js +2 -5
- package/dist/esm/config/legacy/createSourceConfig.js +2 -1
- package/dist/esm/config/legacy/index.js +1 -0
- package/dist/esm/hooks.js +2 -5
- package/dist/esm/plugins/analyze/constants.js +2 -12
- package/dist/esm/plugins/analyze/getBundleEntry.js +2 -1
- package/dist/esm/plugins/analyze/getFileSystemEntry.js +57 -14
- package/dist/esm/plugins/analyze/index.js +25 -128
- package/dist/esm/plugins/analyze/templates.js +1 -17
- package/dist/esm/plugins/analyze/utils.js +1 -87
- package/dist/esm-node/builder/generator/getBuilderEnvironments.js +60 -0
- package/dist/esm-node/builder/generator/index.js +6 -5
- package/dist/esm-node/builder/shared/builderPlugins/adapterBasic.js +7 -14
- package/dist/esm-node/builder/shared/builderPlugins/adapterHtml.js +7 -7
- package/dist/esm-node/builder/shared/builderPlugins/adapterSSR.js +5 -7
- package/dist/esm-node/builder/shared/builderPlugins/adapterWorker.js +5 -3
- package/dist/esm-node/commands/index.js +1 -1
- package/dist/esm-node/commands/inspect.js +1 -2
- package/dist/esm-node/commands/serve.js +1 -0
- package/dist/esm-node/config/default.js +2 -2
- package/dist/esm-node/config/legacy/createSourceConfig.js +2 -1
- package/dist/esm-node/config/legacy/index.js +1 -0
- package/dist/esm-node/hooks.js +2 -5
- package/dist/esm-node/plugins/analyze/constants.js +2 -12
- package/dist/esm-node/plugins/analyze/getBundleEntry.js +2 -1
- package/dist/esm-node/plugins/analyze/getFileSystemEntry.js +37 -12
- package/dist/esm-node/plugins/analyze/index.js +10 -67
- package/dist/esm-node/plugins/analyze/templates.js +1 -52
- package/dist/esm-node/plugins/analyze/utils.js +1 -86
- package/dist/types/builder/builder-webpack/createCopyPattern.d.ts +2 -2
- package/dist/types/builder/generator/getBuilderEnvironments.d.ts +5 -0
- package/dist/types/builder/generator/index.d.ts +1 -2
- package/dist/types/builder/shared/builderPlugins/adapterBasic.d.ts +1 -1
- package/dist/types/builder/shared/builderPlugins/adapterHtml.d.ts +1 -1
- package/dist/types/builder/shared/builderPlugins/adapterSSR.d.ts +1 -1
- package/dist/types/builder/shared/builderPlugins/adapterWorker.d.ts +1 -1
- package/dist/types/builder/shared/bundlerPlugins/RouterPlugin.d.ts +1 -1
- package/dist/types/commands/inspect.d.ts +1 -1
- package/dist/types/plugins/analyze/constants.d.ts +1 -6
- package/dist/types/plugins/analyze/templates.d.ts +0 -14
- package/dist/types/plugins/analyze/utils.d.ts +0 -11
- package/dist/types/types/config/index.d.ts +2 -0
- package/dist/types/types/config/source.d.ts +11 -0
- package/dist/types/types/hooks.d.ts +7 -27
- package/dist/types/types/index.d.ts +1 -1
- package/dist/types/types/legacyConfig/output.d.ts +1 -1
- package/dist/types/types/legacyConfig/source.d.ts +4 -0
- package/dist/types/utils/register.d.ts +1 -1
- package/package.json +22 -23
- package/dist/cjs/builder/generator/createBuilderOptions.js +0 -50
- package/dist/cjs/builder/generator/getBuilderTargets.js +0 -42
- package/dist/cjs/plugins/analyze/generateCode.js +0 -185
- package/dist/esm/builder/generator/getBuilderTargets.js +0 -18
- package/dist/esm/plugins/analyze/generateCode.js +0 -296
- package/dist/esm-node/builder/generator/createBuilderOptions.js +0 -26
- package/dist/esm-node/builder/generator/getBuilderTargets.js +0 -18
- package/dist/esm-node/plugins/analyze/generateCode.js +0 -149
- package/dist/types/builder/generator/createBuilderOptions.d.ts +0 -4
- package/dist/types/builder/generator/getBuilderTargets.d.ts +0 -3
- package/dist/types/plugins/analyze/generateCode.d.ts +0 -16
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var getBuilderEnvironments_exports = {};
|
|
20
|
+
__export(getBuilderEnvironments_exports, {
|
|
21
|
+
getBuilderEnvironments: () => getBuilderEnvironments
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(getBuilderEnvironments_exports);
|
|
24
|
+
var import_utils = require("@modern-js/utils");
|
|
25
|
+
var import_uni_builder = require("@modern-js/uni-builder");
|
|
26
|
+
function getBuilderEnvironments(normalizedConfig, appContext) {
|
|
27
|
+
const entries = {};
|
|
28
|
+
const { entrypoints = [], checkedEntries } = appContext;
|
|
29
|
+
for (const { entryName, internalEntry, entry } of entrypoints) {
|
|
30
|
+
if (checkedEntries && !checkedEntries.includes(entryName)) {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
const finalEntry = internalEntry || entry;
|
|
34
|
+
if (entryName in entries) {
|
|
35
|
+
entries[entryName].push(finalEntry);
|
|
36
|
+
} else {
|
|
37
|
+
entries[entryName] = [
|
|
38
|
+
finalEntry
|
|
39
|
+
];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const serverEntries = {};
|
|
43
|
+
for (const entry in entries) {
|
|
44
|
+
const v = entries[entry];
|
|
45
|
+
serverEntries[entry] = v.map((entry2) => entry2.replace("index.jsx", "index.server.jsx"));
|
|
46
|
+
}
|
|
47
|
+
const environments = {
|
|
48
|
+
web: {
|
|
49
|
+
output: {
|
|
50
|
+
target: "web"
|
|
51
|
+
},
|
|
52
|
+
source: {
|
|
53
|
+
entry: entries
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
const useNodeTarget = (0, import_utils.isProd)() ? (0, import_utils.isUseSSRBundle)(normalizedConfig) : (0, import_utils.isSSR)(normalizedConfig);
|
|
58
|
+
if (useNodeTarget) {
|
|
59
|
+
environments.node = {
|
|
60
|
+
output: {
|
|
61
|
+
target: "node"
|
|
62
|
+
},
|
|
63
|
+
source: {
|
|
64
|
+
entry: serverEntries
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
const useWorkerTarget = (0, import_utils.isServiceWorker)(normalizedConfig);
|
|
69
|
+
if (useWorkerTarget) {
|
|
70
|
+
environments[import_uni_builder.SERVICE_WORKER_ENVIRONMENT_NAME] = {
|
|
71
|
+
output: {
|
|
72
|
+
target: "web-worker"
|
|
73
|
+
},
|
|
74
|
+
source: {
|
|
75
|
+
entry: serverEntries
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
return environments;
|
|
80
|
+
}
|
|
81
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
82
|
+
0 && (module.exports = {
|
|
83
|
+
getBuilderEnvironments
|
|
84
|
+
});
|
|
@@ -32,16 +32,17 @@ __export(generator_exports, {
|
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(generator_exports);
|
|
34
34
|
var import_uni_builder = require("@modern-js/uni-builder");
|
|
35
|
+
var import_core = require("@rsbuild/core");
|
|
35
36
|
var import_createBuilderProviderConfig = require("./createBuilderProviderConfig");
|
|
36
|
-
var
|
|
37
|
-
var import_createBuilderOptions = require("./createBuilderOptions");
|
|
37
|
+
var import_getBuilderEnvironments = require("./getBuilderEnvironments");
|
|
38
38
|
async function generateBuilder(options, bundlerType) {
|
|
39
39
|
const { normalizedConfig, appContext } = options;
|
|
40
40
|
const builderConfig = (0, import_createBuilderProviderConfig.createBuilderProviderConfig)(normalizedConfig, appContext);
|
|
41
|
-
const
|
|
42
|
-
|
|
41
|
+
const environments = (0, import_getBuilderEnvironments.getBuilderEnvironments)(normalizedConfig, appContext);
|
|
42
|
+
builderConfig.environments = builderConfig.environments ? (0, import_core.mergeRsbuildConfig)(environments, builderConfig.environments) : environments;
|
|
43
43
|
const builder = await (0, import_uni_builder.createUniBuilder)({
|
|
44
|
-
|
|
44
|
+
cwd: appContext.appDirectory,
|
|
45
|
+
frameworkConfigPath: appContext.configFile || void 0,
|
|
45
46
|
bundlerType,
|
|
46
47
|
config: builderConfig
|
|
47
48
|
});
|
|
@@ -32,21 +32,14 @@ __export(adapterBasic_exports, {
|
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(adapterBasic_exports);
|
|
34
34
|
var import_path = __toESM(require("path"));
|
|
35
|
+
var import_uni_builder = require("@modern-js/uni-builder");
|
|
35
36
|
const builderPluginAdapterBasic = () => ({
|
|
36
37
|
name: "builder-plugin-adapter-modern-basic",
|
|
37
38
|
setup(api) {
|
|
38
|
-
api.modifyBundlerChain((chain, { target, CHAIN_ID }) => {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
chain.name("service-worker");
|
|
43
|
-
} else if (target === "web-worker") {
|
|
44
|
-
chain.name("worker");
|
|
45
|
-
} else {
|
|
46
|
-
chain.name("client");
|
|
47
|
-
}
|
|
48
|
-
if (target === "node" || target === "service-worker") {
|
|
49
|
-
applyNodeCompat(target, chain);
|
|
39
|
+
api.modifyBundlerChain((chain, { target, CHAIN_ID, environment }) => {
|
|
40
|
+
const isServiceWorker = environment.name === import_uni_builder.SERVICE_WORKER_ENVIRONMENT_NAME;
|
|
41
|
+
if (target === "node" || isServiceWorker) {
|
|
42
|
+
applyNodeCompat(isServiceWorker, chain);
|
|
50
43
|
}
|
|
51
44
|
if (target === "web") {
|
|
52
45
|
const bareServerModuleReg = /\.(server|node)\.[tj]sx?$/;
|
|
@@ -57,7 +50,7 @@ const builderPluginAdapterBasic = () => ({
|
|
|
57
50
|
});
|
|
58
51
|
}
|
|
59
52
|
});
|
|
60
|
-
function applyNodeCompat(
|
|
53
|
+
function applyNodeCompat(isServiceWorker, chain) {
|
|
61
54
|
const nodeExts = [
|
|
62
55
|
".node.js",
|
|
63
56
|
".node.jsx",
|
|
@@ -77,7 +70,7 @@ function applyNodeCompat(target, chain) {
|
|
|
77
70
|
for (const ext of nodeExts) {
|
|
78
71
|
chain.resolve.extensions.prepend(ext);
|
|
79
72
|
}
|
|
80
|
-
if (
|
|
73
|
+
if (isServiceWorker) {
|
|
81
74
|
for (const ext of webWorkerExts) {
|
|
82
75
|
chain.resolve.extensions.prepend(ext);
|
|
83
76
|
}
|
|
@@ -21,7 +21,7 @@ __export(adapterHtml_exports, {
|
|
|
21
21
|
builderPluginAdapterHtml: () => builderPluginAdapterHtml
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(adapterHtml_exports);
|
|
24
|
-
var
|
|
24
|
+
var import_uni_builder = require("@modern-js/uni-builder");
|
|
25
25
|
var import_utils = require("@modern-js/utils");
|
|
26
26
|
var import_lodash = require("@modern-js/utils/lodash");
|
|
27
27
|
var import_bundlerPlugins = require("../bundlerPlugins");
|
|
@@ -29,15 +29,15 @@ const createVirtualModule = (content) => `data:text/javascript,${content}`;
|
|
|
29
29
|
const builderPluginAdapterHtml = (options) => ({
|
|
30
30
|
name: "builder-plugin-adapter-modern-html",
|
|
31
31
|
setup(api) {
|
|
32
|
-
api.modifyBundlerChain(async (chain, { CHAIN_ID, target, HtmlPlugin: HtmlBundlerPlugin }) => {
|
|
33
|
-
const builderConfig =
|
|
34
|
-
if (!(0,
|
|
32
|
+
api.modifyBundlerChain(async (chain, { CHAIN_ID, target, HtmlPlugin: HtmlBundlerPlugin, environment }) => {
|
|
33
|
+
const builderConfig = environment.config;
|
|
34
|
+
if (!(0, import_uni_builder.isHtmlDisabled)(builderConfig, target)) {
|
|
35
35
|
applyBottomHtmlPlugin({
|
|
36
|
-
api,
|
|
37
36
|
options,
|
|
38
37
|
chain,
|
|
39
38
|
CHAIN_ID,
|
|
40
|
-
HtmlBundlerPlugin
|
|
39
|
+
HtmlBundlerPlugin,
|
|
40
|
+
htmlPaths: environment.htmlPaths
|
|
41
41
|
});
|
|
42
42
|
await injectAssetPrefix({
|
|
43
43
|
chain
|
|
@@ -55,9 +55,9 @@ async function injectAssetPrefix({ chain }) {
|
|
|
55
55
|
entries[entryName].prepend(createVirtualModule(code));
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
|
-
function applyBottomHtmlPlugin({
|
|
58
|
+
function applyBottomHtmlPlugin({ chain, options, CHAIN_ID, HtmlBundlerPlugin, htmlPaths }) {
|
|
59
59
|
const { normalizedConfig: modernConfig, appContext } = options;
|
|
60
|
-
for (const entryName of Object.keys(
|
|
60
|
+
for (const entryName of Object.keys(htmlPaths)) {
|
|
61
61
|
const { source: { mainEntryName } } = modernConfig;
|
|
62
62
|
const isMainEntry = entryName === (mainEntryName || import_utils.MAIN_ENTRY_NAME);
|
|
63
63
|
const baseTemplateParams = {
|
|
@@ -32,9 +32,9 @@ __export(adapterSSR_exports, {
|
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(adapterSSR_exports);
|
|
34
34
|
var path = __toESM(require("path"));
|
|
35
|
-
var import_shared = require("@rsbuild/shared");
|
|
36
35
|
var import_core = require("@rsbuild/core");
|
|
37
36
|
var import_utils = require("@modern-js/utils");
|
|
37
|
+
var import_uni_builder = require("@modern-js/uni-builder");
|
|
38
38
|
var import_bundlerPlugins = require("../bundlerPlugins");
|
|
39
39
|
var import_utils2 = require("../../../plugins/analyze/utils");
|
|
40
40
|
const builderPluginAdapterSSR = (options) => ({
|
|
@@ -53,25 +53,23 @@ const builderPluginAdapterSSR = (options) => ({
|
|
|
53
53
|
}
|
|
54
54
|
});
|
|
55
55
|
});
|
|
56
|
-
api.modifyBundlerChain(async (chain, { target, isProd, HtmlPlugin: HtmlBundlerPlugin, isServer }) => {
|
|
57
|
-
const builderConfig =
|
|
56
|
+
api.modifyBundlerChain(async (chain, { target, isProd, HtmlPlugin: HtmlBundlerPlugin, isServer, environment }) => {
|
|
57
|
+
const builderConfig = environment.config;
|
|
58
58
|
const { normalizedConfig: normalizedConfig2 } = options;
|
|
59
59
|
applyRouterPlugin(chain, "route-plugin", options, HtmlBundlerPlugin);
|
|
60
60
|
if ((0, import_utils.isUseSSRBundle)(normalizedConfig2)) {
|
|
61
61
|
await applySSRLoaderEntry(chain, options, isServer);
|
|
62
62
|
applySSRDataLoader(chain, options);
|
|
63
63
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
"service-worker"
|
|
67
|
-
].includes(target)) {
|
|
64
|
+
const isServiceWorker = environment.name === import_uni_builder.SERVICE_WORKER_ENVIRONMENT_NAME;
|
|
65
|
+
if (target === "node" || isServiceWorker) {
|
|
68
66
|
applyFilterEntriesBySSRConfig({
|
|
69
67
|
isProd,
|
|
70
68
|
chain,
|
|
71
69
|
appNormalizedConfig: normalizedConfig2
|
|
72
70
|
});
|
|
73
71
|
}
|
|
74
|
-
if (!(0,
|
|
72
|
+
if (!(0, import_uni_builder.isHtmlDisabled)(builderConfig, target)) {
|
|
75
73
|
applyAsyncChunkHtmlPlugin({
|
|
76
74
|
chain,
|
|
77
75
|
modernConfig: options.normalizedConfig,
|
|
@@ -22,6 +22,7 @@ __export(adapterWorker_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(adapterWorker_exports);
|
|
24
24
|
var import_path = require("path");
|
|
25
|
+
var import_uni_builder = require("@modern-js/uni-builder");
|
|
25
26
|
const getDistPath = (outputConfig, type) => {
|
|
26
27
|
const { distPath } = outputConfig;
|
|
27
28
|
const ret = distPath[type];
|
|
@@ -33,10 +34,11 @@ const getDistPath = (outputConfig, type) => {
|
|
|
33
34
|
const builderPluginAdapterWorker = () => ({
|
|
34
35
|
name: "builder-plugin-adapter-worker",
|
|
35
36
|
setup(api) {
|
|
36
|
-
api.modifyBundlerChain(async (chain, {
|
|
37
|
-
const config =
|
|
37
|
+
api.modifyBundlerChain(async (chain, { environment }) => {
|
|
38
|
+
const { config, name } = environment;
|
|
39
|
+
const isServiceWorker = name === import_uni_builder.SERVICE_WORKER_ENVIRONMENT_NAME;
|
|
38
40
|
if (isServiceWorker) {
|
|
39
|
-
const workerPath = getDistPath(config.output, "
|
|
41
|
+
const workerPath = getDistPath(config.output, "root");
|
|
40
42
|
const filename = import_path.posix.join(workerPath, `[name].js`);
|
|
41
43
|
chain.output.filename(filename).chunkFilename(filename).libraryTarget("commonjs2");
|
|
42
44
|
}
|
|
@@ -38,7 +38,7 @@ __export(commands_exports, {
|
|
|
38
38
|
});
|
|
39
39
|
module.exports = __toCommonJS(commands_exports);
|
|
40
40
|
var import_utils = require("@modern-js/utils");
|
|
41
|
-
var
|
|
41
|
+
var import_uni_builder = require("@modern-js/uni-builder");
|
|
42
42
|
var import_locale = require("../locale");
|
|
43
43
|
const devCommand = async (program, api) => {
|
|
44
44
|
const runner = api.useHookRunners();
|
|
@@ -71,7 +71,7 @@ const buildCommand = async (program, api) => {
|
|
|
71
71
|
await build(api, options);
|
|
72
72
|
});
|
|
73
73
|
for (const platformBuilder of platformBuilders) {
|
|
74
|
-
const platforms = (0,
|
|
74
|
+
const platforms = (0, import_uni_builder.castArray)(platformBuilder.platform);
|
|
75
75
|
for (const platform of platforms) {
|
|
76
76
|
buildProgram.command(platform).action(async () => {
|
|
77
77
|
const { appDirectory } = api.useAppContext();
|
|
@@ -21,7 +21,6 @@ __export(inspect_exports, {
|
|
|
21
21
|
inspect: () => inspect
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(inspect_exports);
|
|
24
|
-
var import_path = require("path");
|
|
25
24
|
const inspect = async (api, options) => {
|
|
26
25
|
const appContext = api.useAppContext();
|
|
27
26
|
if (!appContext.builder) {
|
|
@@ -30,7 +29,7 @@ const inspect = async (api, options) => {
|
|
|
30
29
|
return appContext.builder.inspectConfig({
|
|
31
30
|
env: options.env,
|
|
32
31
|
verbose: options.verbose,
|
|
33
|
-
outputPath:
|
|
32
|
+
outputPath: options.output,
|
|
34
33
|
writeToDisk: true
|
|
35
34
|
});
|
|
36
35
|
};
|
|
@@ -57,6 +57,7 @@ const start = async (api) => {
|
|
|
57
57
|
config: {
|
|
58
58
|
...userConfig,
|
|
59
59
|
dev: userConfig.dev,
|
|
60
|
+
// server-core can't get RegExp & Function output.enableInlineScripts by JSON.stringy;
|
|
60
61
|
output: {
|
|
61
62
|
path: (_userConfig_output_distPath = userConfig.output.distPath) === null || _userConfig_output_distPath === void 0 ? void 0 : _userConfig_output_distPath.root,
|
|
62
63
|
...userConfig.output || {}
|
|
@@ -39,8 +39,6 @@ function createDefaultConfig(appContext) {
|
|
|
39
39
|
server: "bundles",
|
|
40
40
|
worker: "worker"
|
|
41
41
|
},
|
|
42
|
-
// no need to emit assets for SSR bundles
|
|
43
|
-
emitAssets: ({ target }) => target !== "node",
|
|
44
42
|
cleanDistPath: true,
|
|
45
43
|
disableNodePolyfill: true,
|
|
46
44
|
enableInlineRouteManifests: true,
|
|
@@ -50,6 +48,7 @@ function createDefaultConfig(appContext) {
|
|
|
50
48
|
entries: void 0,
|
|
51
49
|
mainEntryName: import_utils.MAIN_ENTRY_NAME,
|
|
52
50
|
enableAsyncEntry: false,
|
|
51
|
+
enableCustomEntry: false,
|
|
53
52
|
disableDefaultEntries: false,
|
|
54
53
|
entriesDir: "./src",
|
|
55
54
|
configDir: "./config",
|
|
@@ -122,6 +121,7 @@ function createLegacyDefaultConfig(appContext) {
|
|
|
122
121
|
entries: void 0,
|
|
123
122
|
mainEntryName: import_utils.MAIN_ENTRY_NAME,
|
|
124
123
|
enableAsyncEntry: false,
|
|
124
|
+
enableCustomEntry: false,
|
|
125
125
|
disableDefaultEntries: false,
|
|
126
126
|
entriesDir: "./src",
|
|
127
127
|
configDir: "./config",
|
|
@@ -22,7 +22,7 @@ __export(createSourceConfig_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(createSourceConfig_exports);
|
|
24
24
|
function createSourceConfig(config) {
|
|
25
|
-
const { alias, envVars, globalVars, include, moduleScopes, preEntry, entries, mainEntryName, enableAsyncEntry, disableDefaultEntries, entriesDir, configDir } = config.source;
|
|
25
|
+
const { alias, envVars, globalVars, include, moduleScopes, preEntry, entries, mainEntryName, enableAsyncEntry, enableCustomEntry, disableDefaultEntries, entriesDir, configDir } = config.source;
|
|
26
26
|
const builderGlobalVars = globalVars || {};
|
|
27
27
|
for (const envVar of envVars || []) {
|
|
28
28
|
const envVarValue = process.env[envVar];
|
|
@@ -37,6 +37,7 @@ function createSourceConfig(config) {
|
|
|
37
37
|
entries,
|
|
38
38
|
mainEntryName,
|
|
39
39
|
enableAsyncEntry,
|
|
40
|
+
enableCustomEntry,
|
|
40
41
|
disableDefaultEntries,
|
|
41
42
|
entriesDir,
|
|
42
43
|
configDir,
|
package/dist/cjs/hooks.js
CHANGED
|
@@ -23,17 +23,14 @@ __export(hooks_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(hooks_exports);
|
|
24
24
|
var import_plugin = require("@modern-js/plugin");
|
|
25
25
|
const hooks = {
|
|
26
|
-
|
|
27
|
-
modifyEntryImports: (0, import_plugin.createAsyncWaterfall)(),
|
|
28
|
-
modifyEntryRuntimePlugins: (0, import_plugin.createAsyncWaterfall)(),
|
|
29
|
-
modifyEntryRenderFunction: (0, import_plugin.createAsyncWaterfall)(),
|
|
30
|
-
modifyAsyncEntry: (0, import_plugin.createAsyncWaterfall)(),
|
|
26
|
+
_internalRuntimePlugins: (0, import_plugin.createAsyncWaterfall)(),
|
|
31
27
|
modifyFileSystemRoutes: (0, import_plugin.createAsyncWaterfall)(),
|
|
32
28
|
modifyServerRoutes: (0, import_plugin.createAsyncWaterfall)(),
|
|
33
29
|
/** add entry point info to entrypoints array */
|
|
34
30
|
modifyEntrypoints: (0, import_plugin.createAsyncWaterfall)(),
|
|
35
31
|
/** add entry type */
|
|
36
32
|
checkEntryPoint: (0, import_plugin.createAsyncWaterfall)(),
|
|
33
|
+
generateEntryCode: (0, import_plugin.createAsyncWorkflow)(),
|
|
37
34
|
htmlPartials: (0, import_plugin.createAsyncWaterfall)(),
|
|
38
35
|
beforeGenerateRoutes: (0, import_plugin.createAsyncWaterfall)(),
|
|
39
36
|
addDefineTypes: (0, import_plugin.createAsyncWaterfall)(),
|
|
@@ -18,38 +18,23 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var constants_exports = {};
|
|
20
20
|
__export(constants_exports, {
|
|
21
|
-
|
|
22
|
-
APP_INIT_EXPORTED: () => APP_INIT_EXPORTED,
|
|
23
|
-
APP_INIT_IMPORTED: () => APP_INIT_IMPORTED,
|
|
24
|
-
ENTRY_BOOTSTRAP_FILE_NAME: () => ENTRY_BOOTSTRAP_FILE_NAME,
|
|
25
|
-
ENTRY_POINT_FILE_NAME: () => ENTRY_POINT_FILE_NAME,
|
|
26
|
-
FILE_SYSTEM_ROUTES_FILE_NAME: () => FILE_SYSTEM_ROUTES_FILE_NAME,
|
|
21
|
+
ENTRY_FILE_NAME: () => ENTRY_FILE_NAME,
|
|
27
22
|
HTML_PARTIALS_EXTENSIONS: () => HTML_PARTIALS_EXTENSIONS,
|
|
28
23
|
HTML_PARTIALS_FOLDER: () => HTML_PARTIALS_FOLDER,
|
|
29
24
|
INDEX_FILE_NAME: () => INDEX_FILE_NAME
|
|
30
25
|
});
|
|
31
26
|
module.exports = __toCommonJS(constants_exports);
|
|
32
27
|
const INDEX_FILE_NAME = "index";
|
|
33
|
-
const
|
|
34
|
-
const ENTRY_POINT_FILE_NAME = "index.jsx";
|
|
35
|
-
const ENTRY_BOOTSTRAP_FILE_NAME = "bootstrap.jsx";
|
|
28
|
+
const ENTRY_FILE_NAME = "entry";
|
|
36
29
|
const HTML_PARTIALS_FOLDER = "html";
|
|
37
30
|
const HTML_PARTIALS_EXTENSIONS = [
|
|
38
31
|
".htm",
|
|
39
32
|
".html",
|
|
40
33
|
".ejs"
|
|
41
34
|
];
|
|
42
|
-
const APP_CONFIG_NAME = "config";
|
|
43
|
-
const APP_INIT_EXPORTED = "init";
|
|
44
|
-
const APP_INIT_IMPORTED = "appInit";
|
|
45
35
|
// Annotate the CommonJS export names for ESM import in node:
|
|
46
36
|
0 && (module.exports = {
|
|
47
|
-
|
|
48
|
-
APP_INIT_EXPORTED,
|
|
49
|
-
APP_INIT_IMPORTED,
|
|
50
|
-
ENTRY_BOOTSTRAP_FILE_NAME,
|
|
51
|
-
ENTRY_POINT_FILE_NAME,
|
|
52
|
-
FILE_SYSTEM_ROUTES_FILE_NAME,
|
|
37
|
+
ENTRY_FILE_NAME,
|
|
53
38
|
HTML_PARTIALS_EXTENSIONS,
|
|
54
39
|
HTML_PARTIALS_FOLDER,
|
|
55
40
|
INDEX_FILE_NAME
|
|
@@ -71,7 +71,8 @@ const getBundleEntry = async (hookRunners, appContext, config) => {
|
|
|
71
71
|
absoluteEntryDir: isDirectory((0, import_utils.ensureAbsolutePath)(appDirectory, entryName)) ? (0, import_utils.ensureAbsolutePath)(appDirectory, entryName) : import_path.default.dirname((0, import_utils.ensureAbsolutePath)(appDirectory, entryName)),
|
|
72
72
|
isAutoMount,
|
|
73
73
|
customBootstrap: typeof value === "string" ? false : value.customBootstrap && (0, import_utils.ensureAbsolutePath)(appDirectory, value.customBootstrap),
|
|
74
|
-
fileSystemRoutes: import_utils.fs.statSync((0, import_utils.ensureAbsolutePath)(appDirectory, entryName)).isDirectory() ? {} : void 0
|
|
74
|
+
fileSystemRoutes: import_utils.fs.statSync((0, import_utils.ensureAbsolutePath)(appDirectory, entryName)).isDirectory() ? {} : void 0,
|
|
75
|
+
isCustomSourceEntry: true
|
|
75
76
|
};
|
|
76
77
|
if (!ifAlreadyExists(defaults, entrypoint)) {
|
|
77
78
|
defaults.push(entrypoint);
|
|
@@ -37,16 +37,28 @@ var import_utils = require("@modern-js/utils");
|
|
|
37
37
|
var import_constants = require("./constants");
|
|
38
38
|
var import_isDefaultExportFunction = require("./isDefaultExportFunction");
|
|
39
39
|
const hasIndex = (dir) => (0, import_utils.findExists)(import_utils.JS_EXTENSIONS.map((ext) => import_path.default.resolve(dir, `${import_constants.INDEX_FILE_NAME}${ext}`)));
|
|
40
|
-
const
|
|
41
|
-
|
|
40
|
+
const hasEntry = (dir) => (0, import_utils.findExists)(import_utils.JS_EXTENSIONS.map((ext) => import_path.default.resolve(dir, `${import_constants.ENTRY_FILE_NAME}${ext}`)));
|
|
41
|
+
const hasServerEntry = (dir) => (0, import_utils.findExists)(import_utils.JS_EXTENSIONS.map((ext) => import_path.default.resolve(dir, `${import_constants.ENTRY_FILE_NAME}.server${ext}`)));
|
|
42
|
+
const isBundleEntry = async (hookRunners, dir, enableCustomEntry) => {
|
|
43
|
+
const { entry } = await hookRunners.checkEntryPoint({
|
|
42
44
|
path: dir,
|
|
43
45
|
entry: false
|
|
44
|
-
})
|
|
46
|
+
});
|
|
47
|
+
if (entry) {
|
|
48
|
+
return entry;
|
|
49
|
+
}
|
|
50
|
+
const customEntry = hasEntry(dir);
|
|
51
|
+
if (enableCustomEntry && customEntry) {
|
|
52
|
+
return customEntry;
|
|
53
|
+
}
|
|
54
|
+
return hasIndex(dir);
|
|
45
55
|
};
|
|
46
|
-
const scanDir = (hookRunners, dirs) => Promise.all(dirs.map(async (dir) => {
|
|
56
|
+
const scanDir = (hookRunners, dirs, enableCustomEntry) => Promise.all(dirs.map(async (dir) => {
|
|
47
57
|
const indexFile = hasIndex(dir);
|
|
48
58
|
const customBootstrap = (0, import_isDefaultExportFunction.isDefaultExportFunction)(indexFile) ? indexFile : false;
|
|
49
59
|
const entryName = import_path.default.basename(dir);
|
|
60
|
+
const customEntryFile = hasEntry(dir);
|
|
61
|
+
const customServerEntry = hasServerEntry(dir);
|
|
50
62
|
if (indexFile && !customBootstrap) {
|
|
51
63
|
return {
|
|
52
64
|
entryName,
|
|
@@ -65,17 +77,30 @@ const scanDir = (hookRunners, dirs) => Promise.all(dirs.map(async (dir) => {
|
|
|
65
77
|
return {
|
|
66
78
|
entryName,
|
|
67
79
|
isMainEntry: false,
|
|
68
|
-
entry: entryFile,
|
|
80
|
+
entry: enableCustomEntry ? customEntryFile || entryFile : entryFile,
|
|
81
|
+
customServerEntry,
|
|
69
82
|
absoluteEntryDir: import_path.default.resolve(dir),
|
|
70
83
|
isAutoMount: true,
|
|
71
|
-
customBootstrap
|
|
84
|
+
customBootstrap,
|
|
85
|
+
customEntry: enableCustomEntry ? Boolean(customEntryFile) : false
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
if (enableCustomEntry && customEntryFile) {
|
|
89
|
+
return {
|
|
90
|
+
entryName,
|
|
91
|
+
isMainEntry: false,
|
|
92
|
+
entry: customEntryFile,
|
|
93
|
+
customServerEntry,
|
|
94
|
+
absoluteEntryDir: import_path.default.resolve(dir),
|
|
95
|
+
isAutoMount: false,
|
|
96
|
+
customEntry: Boolean(customEntryFile)
|
|
72
97
|
};
|
|
73
98
|
}
|
|
74
99
|
throw Error("There is no valid entry point in the current project!");
|
|
75
100
|
}));
|
|
76
101
|
const getFileSystemEntry = async (hookRunners, appContext, config) => {
|
|
77
102
|
const { appDirectory } = appContext;
|
|
78
|
-
const { source: { entriesDir, disableEntryDirs } } = config;
|
|
103
|
+
const { source: { entriesDir, disableEntryDirs, enableCustomEntry } } = config;
|
|
79
104
|
let disabledDirs = [];
|
|
80
105
|
if (disableEntryDirs && Array.isArray(disableEntryDirs)) {
|
|
81
106
|
disabledDirs = disableEntryDirs === null || disableEntryDirs === void 0 ? void 0 : disableEntryDirs.map((dir) => (0, import_utils.ensureAbsolutePath)(appDirectory, dir));
|
|
@@ -83,19 +108,19 @@ const getFileSystemEntry = async (hookRunners, appContext, config) => {
|
|
|
83
108
|
const src = (0, import_utils.ensureAbsolutePath)(appDirectory, entriesDir || "");
|
|
84
109
|
if (import_fs.default.existsSync(src)) {
|
|
85
110
|
if (import_fs.default.statSync(src).isDirectory()) {
|
|
86
|
-
if (await isBundleEntry(hookRunners, src)) {
|
|
111
|
+
if (await isBundleEntry(hookRunners, src, enableCustomEntry)) {
|
|
87
112
|
return scanDir(hookRunners, [
|
|
88
113
|
src
|
|
89
|
-
]);
|
|
114
|
+
], enableCustomEntry);
|
|
90
115
|
}
|
|
91
116
|
const dirs = [];
|
|
92
117
|
await Promise.all(import_fs.default.readdirSync(src).map(async (filename) => {
|
|
93
118
|
const file = import_path.default.join(src, filename);
|
|
94
|
-
if (import_fs.default.statSync(file).isDirectory() && await isBundleEntry(hookRunners, file) && !disabledDirs.includes(file)) {
|
|
119
|
+
if (import_fs.default.statSync(file).isDirectory() && await isBundleEntry(hookRunners, file, enableCustomEntry) && !disabledDirs.includes(file)) {
|
|
95
120
|
dirs.push(file);
|
|
96
121
|
}
|
|
97
122
|
}));
|
|
98
|
-
return scanDir(hookRunners, dirs);
|
|
123
|
+
return scanDir(hookRunners, dirs, enableCustomEntry);
|
|
99
124
|
} else {
|
|
100
125
|
throw Error(`source.entriesDir accept a directory.`);
|
|
101
126
|
}
|
|
@@ -40,11 +40,12 @@ var import_getSelectedEntries = require("../../utils/getSelectedEntries");
|
|
|
40
40
|
var import_config2 = require("../../config");
|
|
41
41
|
var import_builder = require("../../builder");
|
|
42
42
|
var import_utils2 = require("./utils");
|
|
43
|
-
var import_constants = require("./constants");
|
|
44
|
-
var import_generateCode = require("./generateCode");
|
|
45
43
|
const debug = (0, import_utils.createDebugger)("plugin-analyze");
|
|
46
44
|
var analyze_default = ({ bundler }) => ({
|
|
47
45
|
name: "@modern-js/plugin-analyze",
|
|
46
|
+
post: [
|
|
47
|
+
"@modern-js/runtime"
|
|
48
|
+
],
|
|
48
49
|
setup: (api) => {
|
|
49
50
|
let pagesDir = [];
|
|
50
51
|
let nestedRouteEntries = [];
|
|
@@ -75,10 +76,9 @@ var analyze_default = ({ bundler }) => ({
|
|
|
75
76
|
api.setAppContext(appContext);
|
|
76
77
|
return;
|
|
77
78
|
}
|
|
78
|
-
const [{ getBundleEntry }, { getServerRoutes }, {
|
|
79
|
+
const [{ getBundleEntry }, { getServerRoutes }, { getHtmlTemplate }] = await Promise.all([
|
|
79
80
|
Promise.resolve().then(() => __toESM(require("./getBundleEntry"))),
|
|
80
81
|
Promise.resolve().then(() => __toESM(require("./getServerRoutes"))),
|
|
81
|
-
Promise.resolve().then(() => __toESM(require("./generateCode"))),
|
|
82
82
|
Promise.resolve().then(() => __toESM(require("./getHtmlTemplate")))
|
|
83
83
|
]);
|
|
84
84
|
const { entrypoints } = await hookRunners.modifyEntrypoints({
|
|
@@ -101,7 +101,6 @@ var analyze_default = ({ bundler }) => ({
|
|
|
101
101
|
api.setAppContext(appContext);
|
|
102
102
|
nestedRouteEntries = entrypoints.map((point) => point.nestedRoutesEntry).filter(Boolean);
|
|
103
103
|
pagesDir = entrypoints.map((point) => point.entry).filter((entry) => entry && !path.extname(entry)).concat(nestedRouteEntries);
|
|
104
|
-
const { importsStatemets } = await generateCode(appContext, resolvedConfig, entrypoints, api);
|
|
105
104
|
const htmlTemplates = await getHtmlTemplate(entrypoints, api, {
|
|
106
105
|
appContext,
|
|
107
106
|
config: resolvedConfig
|
|
@@ -124,6 +123,9 @@ var analyze_default = ({ bundler }) => ({
|
|
|
124
123
|
};
|
|
125
124
|
api.setAppContext(appContext);
|
|
126
125
|
if ((0, import_utils2.checkIsBuildCommands)()) {
|
|
126
|
+
await hookRunners.generateEntryCode({
|
|
127
|
+
entrypoints
|
|
128
|
+
});
|
|
127
129
|
const normalizedConfig = api.useResolvedConfigContext();
|
|
128
130
|
const createBuilderForModern = await (0, import_builder.createBuilderGenerator)(bundler);
|
|
129
131
|
const builder = await createBuilderForModern({
|
|
@@ -155,14 +157,6 @@ var analyze_default = ({ bundler }) => ({
|
|
|
155
157
|
});
|
|
156
158
|
builder.onBeforeCreateCompiler(async ({ bundlerConfigs }) => {
|
|
157
159
|
const hookRunners2 = api.useHookRunners();
|
|
158
|
-
await (0, import_generateCode.generateIndexCode)({
|
|
159
|
-
appContext,
|
|
160
|
-
config: resolvedConfig,
|
|
161
|
-
entrypoints,
|
|
162
|
-
api,
|
|
163
|
-
importsStatemets,
|
|
164
|
-
bundlerConfigs
|
|
165
|
-
});
|
|
166
160
|
await hookRunners2.beforeCreateCompiler({
|
|
167
161
|
bundlerConfigs
|
|
168
162
|
});
|
|
@@ -193,57 +187,6 @@ var analyze_default = ({ bundler }) => ({
|
|
|
193
187
|
return {
|
|
194
188
|
resolved: config
|
|
195
189
|
};
|
|
196
|
-
},
|
|
197
|
-
// This logic is not in the router plugin to avoid having to include some dependencies in the utils package
|
|
198
|
-
async modifyEntryImports({ entrypoint, imports }) {
|
|
199
|
-
const appContext = api.useAppContext();
|
|
200
|
-
const { srcDirectory, internalSrcAlias } = appContext;
|
|
201
|
-
const { fileSystemRoutes, nestedRoutesEntry } = entrypoint;
|
|
202
|
-
if (fileSystemRoutes && nestedRoutesEntry) {
|
|
203
|
-
const rootLayoutPath = path.join(nestedRoutesEntry, "layout");
|
|
204
|
-
const rootLayoutFile = (0, import_utils.findExists)([
|
|
205
|
-
".js",
|
|
206
|
-
".ts",
|
|
207
|
-
".jsx",
|
|
208
|
-
".tsx"
|
|
209
|
-
].map((ext) => `${rootLayoutPath}${ext}`));
|
|
210
|
-
if (rootLayoutFile) {
|
|
211
|
-
const rootLayoutBuffer = await import_utils.fs.readFile(rootLayoutFile);
|
|
212
|
-
const rootLayout = rootLayoutBuffer.toString();
|
|
213
|
-
const [, moduleExports] = await (0, import_utils2.parseModule)({
|
|
214
|
-
source: rootLayout.toString(),
|
|
215
|
-
filename: rootLayoutFile
|
|
216
|
-
});
|
|
217
|
-
const hasAppConfig = moduleExports.some((e) => e.n === import_constants.APP_CONFIG_NAME);
|
|
218
|
-
const generateLayoutPath = (0, import_routes.getPathWithoutExt)((0, import_utils2.replaceWithAlias)(srcDirectory, rootLayoutFile, internalSrcAlias));
|
|
219
|
-
if (hasAppConfig) {
|
|
220
|
-
imports.push({
|
|
221
|
-
value: generateLayoutPath,
|
|
222
|
-
specifiers: [
|
|
223
|
-
{
|
|
224
|
-
imported: import_constants.APP_CONFIG_NAME
|
|
225
|
-
}
|
|
226
|
-
]
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
const hasAppInit = moduleExports.some((e) => e.n === import_constants.APP_INIT_EXPORTED);
|
|
230
|
-
if (hasAppInit) {
|
|
231
|
-
imports.push({
|
|
232
|
-
value: generateLayoutPath,
|
|
233
|
-
specifiers: [
|
|
234
|
-
{
|
|
235
|
-
imported: import_constants.APP_INIT_EXPORTED,
|
|
236
|
-
local: import_constants.APP_INIT_IMPORTED
|
|
237
|
-
}
|
|
238
|
-
]
|
|
239
|
-
});
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
return {
|
|
244
|
-
entrypoint,
|
|
245
|
-
imports
|
|
246
|
-
};
|
|
247
190
|
}
|
|
248
191
|
};
|
|
249
192
|
}
|