@modern-js/app-tools 2.57.0 → 2.57.1-alpha.1
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/builder-webpack/index.js +1 -1
- package/dist/cjs/builder/generator/index.js +2 -2
- package/dist/cjs/builder/index.js +2 -2
- package/dist/cjs/commands/build.js +19 -0
- package/dist/cjs/commands/dev.js +9 -0
- package/dist/cjs/commands/index.js +8 -8
- package/dist/cjs/esm/esbuild-loader.mjs +20 -0
- package/dist/cjs/esm/register-esm.mjs +65 -0
- package/dist/cjs/esm/ts-node-loader.mjs +21 -0
- package/dist/cjs/esm/utils.mjs +28 -0
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/plugins/analyze/index.js +3 -3
- package/dist/cjs/plugins/deploy/dependencies/index.js +1 -0
- package/dist/cjs/plugins/deploy/dependencies/utils.js +12 -1
- package/dist/cjs/plugins/deploy/platforms/netlify-entry-cjs.js +1 -0
- package/dist/cjs/plugins/deploy/platforms/netlify-entry-mjs.js +10 -0
- package/dist/cjs/plugins/deploy/platforms/netlify.js +9 -2
- package/dist/cjs/plugins/deploy/platforms/netlifyEntry.js +26 -0
- package/dist/cjs/plugins/deploy/platforms/node.js +9 -2
- package/dist/cjs/utils/loadPlugins.js +1 -1
- package/dist/cjs/utils/register.js +38 -22
- package/dist/esm/builder/generator/getBuilderEnvironments.js +0 -2
- package/dist/esm/builder/generator/index.js +1 -1
- package/dist/esm/builder/index.js +2 -2
- package/dist/esm/builder/shared/builderPlugins/adapterBasic.js +1 -1
- package/dist/esm/commands/build.js +9 -16
- package/dist/esm/commands/dev.js +37 -55
- package/dist/esm/commands/index.js +6 -6
- package/dist/esm/custom-loader.mjs +41 -0
- package/dist/esm/index.js +42 -1
- package/dist/esm/plugins/analyze/index.js +4 -3
- package/dist/esm/plugins/deploy/dependencies/index.js +2 -3
- package/dist/esm/register-esm.mjs +22 -0
- package/dist/esm/utils/createServer.js +1 -1
- package/dist/esm-node/builder/generator/getBuilderEnvironments.js +1 -1
- package/dist/esm-node/builder/generator/index.js +1 -1
- package/dist/esm-node/builder/index.js +2 -2
- package/dist/esm-node/builder/shared/builderPlugins/adapterBasic.js +1 -1
- package/dist/esm-node/commands/build.js +0 -3
- package/dist/esm-node/commands/dev.js +16 -24
- package/dist/esm-node/commands/index.js +6 -6
- package/dist/esm-node/esm/esbuild-loader.js +39 -0
- package/dist/esm-node/esm/register-esm.js +39 -0
- package/dist/esm-node/esm/ts-node-loader.js +42 -0
- package/dist/esm-node/index.js +17 -1
- package/dist/esm-node/plugins/analyze/index.js +4 -3
- package/dist/esm-node/plugins/deploy/dependencies/index.js +1 -2
- package/dist/esm-node/utils/createServer.js +1 -1
- package/dist/types/builder/index.d.ts +1 -1
- package/dist/types/esm/esbuild-loader.d.mts +6 -0
- package/dist/types/esm/register-esm.d.mts +5 -0
- package/dist/types/esm/ts-node-loader.d.mts +6 -0
- package/dist/types/esm/utils.d.mts +6 -0
- package/dist/types/plugins/deploy/platforms/netlify-entry-cjs.d.ts +0 -0
- package/dist/types/plugins/deploy/platforms/netlify-entry-mjs.d.ts +1 -0
- package/dist/types/plugins/deploy/platforms/netlifyEntry.d.ts +1 -2
- package/package.json +8 -8
|
@@ -38,7 +38,7 @@ async function createWebpackBuilderForModern(options) {
|
|
|
38
38
|
const { normalizedConfig } = options;
|
|
39
39
|
if (normalizedConfig.tools.esbuild) {
|
|
40
40
|
const { esbuild: esbuildOptions } = normalizedConfig.tools;
|
|
41
|
-
const { pluginEsbuild } = await
|
|
41
|
+
const { pluginEsbuild } = await import("@modern-js/rsbuild-plugin-esbuild");
|
|
42
42
|
builder.addPlugins([
|
|
43
43
|
pluginEsbuild(esbuildOptions)
|
|
44
44
|
]);
|
|
@@ -50,7 +50,7 @@ async function generateBuilder(options, bundlerType) {
|
|
|
50
50
|
return builder;
|
|
51
51
|
}
|
|
52
52
|
async function applyBuilderPlugins(builder, options) {
|
|
53
|
-
const { builderPluginAdapterBasic, builderPluginAdapterHtml, builderPluginAdapterSSR, builderPluginAdapterWorker } = await
|
|
53
|
+
const { builderPluginAdapterBasic, builderPluginAdapterHtml, builderPluginAdapterSSR, builderPluginAdapterWorker } = await import("../shared/builderPlugins/index.js");
|
|
54
54
|
builder.addPlugins([
|
|
55
55
|
builderPluginAdapterBasic(),
|
|
56
56
|
builderPluginAdapterSSR(options),
|
|
@@ -59,7 +59,7 @@ async function applyBuilderPlugins(builder, options) {
|
|
|
59
59
|
]);
|
|
60
60
|
const { normalizedConfig } = options;
|
|
61
61
|
if (!normalizedConfig.output.disableNodePolyfill) {
|
|
62
|
-
const { pluginNodePolyfill } = await
|
|
62
|
+
const { pluginNodePolyfill } = await import("@rsbuild/plugin-node-polyfill");
|
|
63
63
|
builder.addPlugins([
|
|
64
64
|
pluginNodePolyfill()
|
|
65
65
|
]);
|
|
@@ -33,10 +33,10 @@ __export(builder_exports, {
|
|
|
33
33
|
module.exports = __toCommonJS(builder_exports);
|
|
34
34
|
async function createBuilderGenerator(bundler) {
|
|
35
35
|
if (bundler === "rspack") {
|
|
36
|
-
const { createRspackBuilderForModern } = await
|
|
36
|
+
const { createRspackBuilderForModern } = await import("./builder-rspack/index.js");
|
|
37
37
|
return createRspackBuilderForModern;
|
|
38
38
|
}
|
|
39
|
-
const { createWebpackBuilderForModern } = await
|
|
39
|
+
const { createWebpackBuilderForModern } = await import("./builder-webpack/index.js");
|
|
40
40
|
return createWebpackBuilderForModern;
|
|
41
41
|
}
|
|
42
42
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
5
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
8
|
var __export = (target, all) => {
|
|
7
9
|
for (var name in all)
|
|
@@ -15,6 +17,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
17
|
}
|
|
16
18
|
return to;
|
|
17
19
|
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
18
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
29
|
var build_exports = {};
|
|
20
30
|
__export(build_exports, {
|
|
@@ -36,6 +46,15 @@ const build = async (api, options) => {
|
|
|
36
46
|
const appContext = api.useAppContext();
|
|
37
47
|
const hookRunners = api.useHookRunners();
|
|
38
48
|
await (0, import_loadPlugins.loadServerPlugins)(api, appContext.appDirectory, appContext.metaName);
|
|
49
|
+
if (appContext.moduleType && appContext.moduleType === "module") {
|
|
50
|
+
var _resolvedConfig_source1;
|
|
51
|
+
const { registerEsm } = await import("../esm/register-esm.mjs");
|
|
52
|
+
await registerEsm({
|
|
53
|
+
appDir: appContext.appDirectory,
|
|
54
|
+
distDir: appContext.distDirectory,
|
|
55
|
+
alias: (_resolvedConfig_source1 = resolvedConfig.source) === null || _resolvedConfig_source1 === void 0 ? void 0 : _resolvedConfig_source1.alias
|
|
56
|
+
});
|
|
57
|
+
}
|
|
39
58
|
await (0, import_register.registerCompiler)(appContext.appDirectory, appContext.distDirectory, resolvedConfig === null || resolvedConfig === void 0 ? void 0 : (_resolvedConfig_source = resolvedConfig.source) === null || _resolvedConfig_source === void 0 ? void 0 : _resolvedConfig_source.alias);
|
|
40
59
|
const { apiOnly } = appContext;
|
|
41
60
|
if (apiOnly) {
|
package/dist/cjs/commands/dev.js
CHANGED
|
@@ -50,6 +50,15 @@ const dev = async (api, options, devServerOptions) => {
|
|
|
50
50
|
let normalizedConfig = api.useResolvedConfigContext();
|
|
51
51
|
const appContext = api.useAppContext();
|
|
52
52
|
const hookRunners = api.useHookRunners();
|
|
53
|
+
if (appContext.moduleType && appContext.moduleType === "module") {
|
|
54
|
+
var _normalizedConfig_source1;
|
|
55
|
+
const { registerEsm } = await import("../esm/register-esm.mjs");
|
|
56
|
+
await registerEsm({
|
|
57
|
+
appDir: appContext.appDirectory,
|
|
58
|
+
distDir: appContext.distDirectory,
|
|
59
|
+
alias: (_normalizedConfig_source1 = normalizedConfig.source) === null || _normalizedConfig_source1 === void 0 ? void 0 : _normalizedConfig_source1.alias
|
|
60
|
+
});
|
|
61
|
+
}
|
|
53
62
|
await (0, import_register.registerCompiler)(appContext.appDirectory, appContext.distDirectory, normalizedConfig === null || normalizedConfig === void 0 ? void 0 : (_normalizedConfig_source = normalizedConfig.source) === null || _normalizedConfig_source === void 0 ? void 0 : _normalizedConfig_source.alias);
|
|
54
63
|
normalizedConfig = {
|
|
55
64
|
...normalizedConfig,
|
|
@@ -44,7 +44,7 @@ const devCommand = async (program, api) => {
|
|
|
44
44
|
const runner = api.useHookRunners();
|
|
45
45
|
const devToolMetas = await runner.registerDev();
|
|
46
46
|
const devProgram = program.command("dev").alias("start").usage("[options]").description(import_locale.i18n.t(import_locale.localeKeys.command.dev.describe)).option("-c --config <config>", import_locale.i18n.t(import_locale.localeKeys.command.shared.config)).option("-e --entry [entry...]", import_locale.i18n.t(import_locale.localeKeys.command.dev.entry)).option("--analyze", import_locale.i18n.t(import_locale.localeKeys.command.shared.analyze)).option("--api-only", import_locale.i18n.t(import_locale.localeKeys.command.dev.apiOnly)).option("--web-only", import_locale.i18n.t(import_locale.localeKeys.command.dev.webOnly)).action(async (options) => {
|
|
47
|
-
const { dev } = await
|
|
47
|
+
const { dev } = await import("./dev.js");
|
|
48
48
|
await dev(api, options);
|
|
49
49
|
});
|
|
50
50
|
for (const meta of devToolMetas) {
|
|
@@ -54,7 +54,7 @@ const devCommand = async (program, api) => {
|
|
|
54
54
|
for (const subCmd of meta.subCommands) {
|
|
55
55
|
devProgram.command(subCmd).action(async (options = {}) => {
|
|
56
56
|
const { appDirectory } = api.useAppContext();
|
|
57
|
-
const { isTypescript } = await
|
|
57
|
+
const { isTypescript } = await import("@modern-js/utils");
|
|
58
58
|
await runner.beforeDevTask(meta);
|
|
59
59
|
await meta.action(options, {
|
|
60
60
|
isTsProject: isTypescript(appDirectory)
|
|
@@ -67,7 +67,7 @@ const buildCommand = async (program, api) => {
|
|
|
67
67
|
const runner = api.useHookRunners();
|
|
68
68
|
const platformBuilders = await runner.registerBuildPlatform();
|
|
69
69
|
const buildProgram = program.command("build").usage("[options]").description(import_locale.i18n.t(import_locale.localeKeys.command.build.describe)).option("-c --config <config>", import_locale.i18n.t(import_locale.localeKeys.command.shared.config)).option("--analyze", import_locale.i18n.t(import_locale.localeKeys.command.shared.analyze)).action(async (options) => {
|
|
70
|
-
const { build } = await
|
|
70
|
+
const { build } = await import("./build.js");
|
|
71
71
|
await build(api, options);
|
|
72
72
|
});
|
|
73
73
|
for (const platformBuilder of platformBuilders) {
|
|
@@ -75,7 +75,7 @@ const buildCommand = async (program, api) => {
|
|
|
75
75
|
for (const platform of platforms) {
|
|
76
76
|
buildProgram.command(platform).action(async () => {
|
|
77
77
|
const { appDirectory } = api.useAppContext();
|
|
78
|
-
const { isTypescript } = await
|
|
78
|
+
const { isTypescript } = await import("@modern-js/utils");
|
|
79
79
|
await runner.beforeBuildPlatform(platformBuilders);
|
|
80
80
|
await platformBuilder.build(platform, {
|
|
81
81
|
isTsProject: isTypescript(appDirectory)
|
|
@@ -86,17 +86,17 @@ const buildCommand = async (program, api) => {
|
|
|
86
86
|
};
|
|
87
87
|
const serverCommand = (program, api) => {
|
|
88
88
|
program.command("serve").usage("[options]").description(import_locale.i18n.t(import_locale.localeKeys.command.serve.describe)).option("--api-only", import_locale.i18n.t(import_locale.localeKeys.command.dev.apiOnly)).option("-c --config <config>", import_locale.i18n.t(import_locale.localeKeys.command.shared.config)).action(async () => {
|
|
89
|
-
const { start } = await
|
|
89
|
+
const { start } = await import("./serve.js");
|
|
90
90
|
await start(api);
|
|
91
91
|
});
|
|
92
92
|
};
|
|
93
93
|
const deployCommand = (program, api) => {
|
|
94
94
|
program.command("deploy").usage("[options]").option("-c --config <config>", import_locale.i18n.t(import_locale.localeKeys.command.shared.config)).option("-s --skip-build", import_locale.i18n.t(import_locale.localeKeys.command.shared.skipBuild)).description(import_locale.i18n.t(import_locale.localeKeys.command.deploy.describe)).action(async (options) => {
|
|
95
95
|
if (!options.skipBuild) {
|
|
96
|
-
const { build } = await
|
|
96
|
+
const { build } = await import("./build.js");
|
|
97
97
|
await build(api);
|
|
98
98
|
}
|
|
99
|
-
const { deploy } = await
|
|
99
|
+
const { deploy } = await import("./deploy.js");
|
|
100
100
|
await deploy(api, options);
|
|
101
101
|
process.exit(0);
|
|
102
102
|
});
|
|
@@ -111,7 +111,7 @@ const newCommand = (program, locale) => {
|
|
|
111
111
|
};
|
|
112
112
|
const inspectCommand = (program, api) => {
|
|
113
113
|
program.command("inspect").description("inspect the internal configs").option(`--env <env>`, import_locale.i18n.t(import_locale.localeKeys.command.inspect.env), "development").option("--output <output>", import_locale.i18n.t(import_locale.localeKeys.command.inspect.output), "/").option("--verbose", import_locale.i18n.t(import_locale.localeKeys.command.inspect.verbose)).option("-c --config <config>", import_locale.i18n.t(import_locale.localeKeys.command.shared.config)).action(async (options) => {
|
|
114
|
-
const { inspect } = await
|
|
114
|
+
const { inspect } = await import("./inspect.js");
|
|
115
115
|
inspect(api, options);
|
|
116
116
|
});
|
|
117
117
|
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { pathToFileURL } from 'url';
|
|
2
|
+
import { createMatchPath } from './utils.mjs';
|
|
3
|
+
|
|
4
|
+
let matchPath;
|
|
5
|
+
export async function initialize({ appDir, alias, tsconfigPath }) {
|
|
6
|
+
matchPath = createMatchPath({
|
|
7
|
+
alias,
|
|
8
|
+
appDir,
|
|
9
|
+
tsconfigPath,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function resolve(specifier, context, defaultResolve) {
|
|
14
|
+
const match = matchPath(specifier);
|
|
15
|
+
return match
|
|
16
|
+
? defaultResolve(pathToFileURL(match).href, context)
|
|
17
|
+
: defaultResolve(specifier, context);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { load } from 'esbuild-register/loader';
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { fs, readTsConfigByFile } from '@modern-js/utils';
|
|
3
|
+
|
|
4
|
+
const checkDep = async dep => {
|
|
5
|
+
try {
|
|
6
|
+
await import(dep);
|
|
7
|
+
return true;
|
|
8
|
+
} catch (error) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export const registerEsm = async ({ appDir, distDir, alias }) => {
|
|
14
|
+
const nodeVersion = process.versions.node;
|
|
15
|
+
const versionArr = nodeVersion.split('.').map(Number);
|
|
16
|
+
if (versionArr[0] < 18 || (versionArr[0] === 18 && versionArr[1] < 19)) {
|
|
17
|
+
throw new Error(
|
|
18
|
+
`The node version of the esm project must be greater than 18.19.0, current version is ${nodeVersion}`,
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
const hasTsNode = await checkDep('ts-node');
|
|
22
|
+
const TS_CONFIG_FILENAME = `tsconfig.json`;
|
|
23
|
+
const tsconfigPath = path.resolve(appDir, TS_CONFIG_FILENAME);
|
|
24
|
+
const hasTsconfig = await fs.pathExists(tsconfigPath);
|
|
25
|
+
const { register } = await import('node:module');
|
|
26
|
+
if (hasTsNode && hasTsconfig) {
|
|
27
|
+
// These can be overridden by ts-node options in tsconfig.json
|
|
28
|
+
process.env.TS_NODE_TRANSPILE_ONLY = true;
|
|
29
|
+
process.env.TS_NODE_PROJECT = tsconfigPath;
|
|
30
|
+
process.env.TS_NODE_SCOPE = true;
|
|
31
|
+
process.env.TS_NODE_FILES = true;
|
|
32
|
+
process.env.TS_NODE_IGNORE = `(?:^|/)node_modules/,(?:^|/)${path.relative(
|
|
33
|
+
appDir,
|
|
34
|
+
distDir,
|
|
35
|
+
)}/`;
|
|
36
|
+
register('./ts-node-loader.mjs', import.meta.url, {
|
|
37
|
+
data: {
|
|
38
|
+
appDir,
|
|
39
|
+
distDir,
|
|
40
|
+
alias,
|
|
41
|
+
tsconfigPath,
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
} else {
|
|
45
|
+
process.env.MODERN_NODE_LOADER = 'esbuild';
|
|
46
|
+
let tsConfig = {};
|
|
47
|
+
if (hasTsconfig) {
|
|
48
|
+
tsConfig = readTsConfigByFile(tsconfigPath);
|
|
49
|
+
}
|
|
50
|
+
const esbuildRegister = await import('esbuild-register/dist/node');
|
|
51
|
+
esbuildRegister.register({
|
|
52
|
+
tsconfigRaw: hasTsconfig ? tsConfig : undefined,
|
|
53
|
+
hookIgnoreNodeModules: true,
|
|
54
|
+
hookMatcher: fileName => !fileName.startsWith(distDir),
|
|
55
|
+
});
|
|
56
|
+
register('./esbuild-loader.mjs', import.meta.url, {
|
|
57
|
+
data: {
|
|
58
|
+
appDir,
|
|
59
|
+
distDir,
|
|
60
|
+
alias,
|
|
61
|
+
tsconfigPath,
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { pathToFileURL } from 'url';
|
|
2
|
+
import { resolve as tsNodeResolve } from 'ts-node/esm';
|
|
3
|
+
import { createMatchPath } from './utils.mjs';
|
|
4
|
+
|
|
5
|
+
let matchPath;
|
|
6
|
+
export async function initialize({ appDir, alias, tsconfigPath }) {
|
|
7
|
+
matchPath = createMatchPath({
|
|
8
|
+
alias,
|
|
9
|
+
appDir,
|
|
10
|
+
tsconfigPath,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function resolve(specifier, context, defaultResolve) {
|
|
15
|
+
const match = matchPath(specifier, undefined, undefined, ['']);
|
|
16
|
+
return match
|
|
17
|
+
? tsNodeResolve(pathToFileURL(match).href, context, defaultResolve)
|
|
18
|
+
: tsNodeResolve(specifier, context, defaultResolve);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { transformSource, load } from 'ts-node/esm';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import tsConfigPaths from '@modern-js/utils/tsconfig-paths';
|
|
3
|
+
import { getAliasConfig } from '@modern-js/utils';
|
|
4
|
+
|
|
5
|
+
export function createMatchPath({ alias, appDir, tsconfigPath }) {
|
|
6
|
+
const aliasConfig = getAliasConfig(alias, {
|
|
7
|
+
appDirectory: appDir,
|
|
8
|
+
tsconfigPath,
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
const { paths = {}, absoluteBaseUrl = './' } = aliasConfig;
|
|
12
|
+
|
|
13
|
+
const tsPaths = Object.keys(paths).reduce((o, key) => {
|
|
14
|
+
let tsPath = paths[key];
|
|
15
|
+
if (typeof tsPath === 'string' && path.isAbsolute(tsPath)) {
|
|
16
|
+
tsPath = path.relative(absoluteBaseUrl, tsPath);
|
|
17
|
+
}
|
|
18
|
+
if (typeof tsPath === 'string') {
|
|
19
|
+
tsPath = [tsPath];
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
...o,
|
|
23
|
+
[`${key}`]: tsPath,
|
|
24
|
+
};
|
|
25
|
+
}, {});
|
|
26
|
+
|
|
27
|
+
return tsConfigPaths.createMatchPath(absoluteBaseUrl, tsPaths);
|
|
28
|
+
}
|
package/dist/cjs/index.js
CHANGED
|
@@ -139,7 +139,7 @@ const appTools = (options = {
|
|
|
139
139
|
async fileChange(e) {
|
|
140
140
|
const { filename, eventType, isPrivate } = e;
|
|
141
141
|
if (!isPrivate && (eventType === "change" || eventType === "unlink")) {
|
|
142
|
-
const { closeServer } = await
|
|
142
|
+
const { closeServer } = await import("./utils/createServer");
|
|
143
143
|
await closeServer();
|
|
144
144
|
await (0, import_restart.restart)(api.useHookRunners(), filename);
|
|
145
145
|
}
|
|
@@ -77,9 +77,9 @@ var analyze_default = ({ bundler }) => ({
|
|
|
77
77
|
return;
|
|
78
78
|
}
|
|
79
79
|
const [{ getBundleEntry }, { getServerRoutes }, { getHtmlTemplate }] = await Promise.all([
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
80
|
+
import("./getBundleEntry.js"),
|
|
81
|
+
import("./getServerRoutes.js"),
|
|
82
|
+
import("./getHtmlTemplate.js")
|
|
83
83
|
]);
|
|
84
84
|
const { entrypoints } = await hookRunners.modifyEntrypoints({
|
|
85
85
|
entrypoints: await getBundleEntry(hookRunners, appContext, resolvedConfig)
|
|
@@ -212,6 +212,7 @@ const handleDependencies = async ({ appDir, serverRootDir, includeEntries, trace
|
|
|
212
212
|
name: `${projectPkgJson.name || "modernjs-project"}-prod`,
|
|
213
213
|
version: projectPkgJson.version || "0.0.0",
|
|
214
214
|
private: true,
|
|
215
|
+
type: projectPkgJson.type || "commonjs",
|
|
215
216
|
dependencies: Object.fromEntries([
|
|
216
217
|
...Object.values(tracedPackages).map((pkg) => [
|
|
217
218
|
pkg.name,
|
|
@@ -141,7 +141,18 @@ const findPackageParents = (pkg, version, tracedFiles) => {
|
|
|
141
141
|
const traceFiles = async (entryFiles, serverRootDir, base = "/") => {
|
|
142
142
|
return await (0, import_nft.nodeFileTrace)(entryFiles, {
|
|
143
143
|
base,
|
|
144
|
-
processCwd: serverRootDir
|
|
144
|
+
processCwd: serverRootDir,
|
|
145
|
+
resolve: async (id, parent, job, isCjs) => {
|
|
146
|
+
if (id.startsWith("@modern-js/prod-server")) {
|
|
147
|
+
return require.resolve(id, {
|
|
148
|
+
paths: [
|
|
149
|
+
require.resolve("@modern-js/app-tools")
|
|
150
|
+
]
|
|
151
|
+
});
|
|
152
|
+
} else {
|
|
153
|
+
return (0, import_nft.resolve)(id, parent, job, isCjs);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
145
156
|
});
|
|
146
157
|
};
|
|
147
158
|
const resolveTracedPath = async (base, p) => import_utils.fs.realpath(import_path.default.resolve(base, p));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var import_index = require("./index.cjs");
|
|
3
|
+
const requestHandler = null;
|
|
4
|
+
(0, import_index.createHandler)();
|
|
5
|
+
exports.handler = async (req, res) => {
|
|
6
|
+
if (!requestHandler) {
|
|
7
|
+
await (0, import_index.createHandler)();
|
|
8
|
+
}
|
|
9
|
+
return requestHandler(req, res);
|
|
10
|
+
};
|
|
@@ -50,7 +50,8 @@ async function cleanDistDirectory(dir) {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
const createNetlifyPreset = (appContext, modernConfig, needModernServer) => {
|
|
53
|
-
const { appDirectory, distDirectory, entrypoints, serverPlugins } = appContext;
|
|
53
|
+
const { appDirectory, distDirectory, entrypoints, serverPlugins, moduleType } = appContext;
|
|
54
|
+
const isEsmProject = moduleType === "module";
|
|
54
55
|
const plugins = serverPlugins.map((plugin) => plugin.name);
|
|
55
56
|
const netlifyOutput = import_node_path.default.join(appDirectory, ".netlify");
|
|
56
57
|
const funcsDirectory = import_node_path.default.join(netlifyOutput, "functions");
|
|
@@ -117,7 +118,13 @@ const createNetlifyPreset = (appContext, modernConfig, needModernServer) => {
|
|
|
117
118
|
let entryCode = (await import_utils.fs.readFile(import_node_path.default.join(__dirname, "./netlifyEntry.js"))).toString();
|
|
118
119
|
const serverAppContext = (0, import_utils2.serverAppContenxtTemplate)(appContext);
|
|
119
120
|
entryCode = entryCode.replace("p_genPluginImportsCode", pluginImportCode).replace("p_ROUTE_SPEC_FILE", `"${import_utils.ROUTE_SPEC_FILE}"`).replace("p_dynamicProdOptions", JSON.stringify(dynamicProdOptions)).replace("p_plugins", pluginsCode).replace("p_sharedDirectory", serverAppContext.sharedDirectory).replace("p_apiDirectory", serverAppContext.apiDirectory).replace("p_lambdaDirectory", serverAppContext.lambdaDirectory);
|
|
120
|
-
|
|
121
|
+
if (isEsmProject) {
|
|
122
|
+
const cjsEntryFilePath = import_node_path.default.join(funcsDirectory, "index.cjs");
|
|
123
|
+
await import_utils.fs.writeFile(cjsEntryFilePath, entryCode);
|
|
124
|
+
await import_utils.fs.writeFile(entryFilePath, `import('./index.cjs');`);
|
|
125
|
+
} else {
|
|
126
|
+
await import_utils.fs.writeFile(entryFilePath, entryCode);
|
|
127
|
+
}
|
|
121
128
|
},
|
|
122
129
|
async end() {
|
|
123
130
|
if (process.env.NODE_ENV !== "development") {
|
|
@@ -1,4 +1,26 @@
|
|
|
1
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 netlifyEntry_exports = {};
|
|
20
|
+
__export(netlifyEntry_exports, {
|
|
21
|
+
createHandler: () => createHandler
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(netlifyEntry_exports);
|
|
2
24
|
const fs = require("node:fs/promises");
|
|
3
25
|
const path = require("node:path");
|
|
4
26
|
const { createNetlifyFunction } = require("@modern-js/prod-server/netlify");
|
|
@@ -59,3 +81,7 @@ module.exports.default = async (request, context) => {
|
|
|
59
81
|
}
|
|
60
82
|
return requestHandler(request, context);
|
|
61
83
|
};
|
|
84
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
85
|
+
0 && (module.exports = {
|
|
86
|
+
createHandler
|
|
87
|
+
});
|
|
@@ -36,7 +36,8 @@ var import_utils = require("@modern-js/utils");
|
|
|
36
36
|
var import_utils2 = require("../utils");
|
|
37
37
|
var import_dependencies = require("../dependencies");
|
|
38
38
|
const createNodePreset = (appContext, config) => {
|
|
39
|
-
const { appDirectory, distDirectory, serverPlugins } = appContext;
|
|
39
|
+
const { appDirectory, distDirectory, serverPlugins, moduleType } = appContext;
|
|
40
|
+
const isEsmProject = moduleType === "module";
|
|
40
41
|
const plugins = serverPlugins.map((plugin) => plugin.name);
|
|
41
42
|
const outputDirectory = import_node_path.default.join(appDirectory, ".output");
|
|
42
43
|
const staticDirectory = import_node_path.default.join(outputDirectory, "static");
|
|
@@ -72,7 +73,13 @@ const createNodePreset = (appContext, config) => {
|
|
|
72
73
|
let entryCode = (await import_utils.fs.readFile(import_node_path.default.join(__dirname, "./nodeEntry.js"))).toString();
|
|
73
74
|
const serverAppContext = (0, import_utils2.serverAppContenxtTemplate)(appContext);
|
|
74
75
|
entryCode = entryCode.replace("p_genPluginImportsCode", pluginImportCode).replace("p_ROUTE_SPEC_FILE", `"${import_utils.ROUTE_SPEC_FILE}"`).replace("p_dynamicProdOptions", JSON.stringify(dynamicProdOptions)).replace("p_plugins", pluginsCode).replace("p_sharedDirectory", serverAppContext.sharedDirectory).replace("p_apiDirectory", serverAppContext.apiDirectory).replace("p_lambdaDirectory", serverAppContext.lambdaDirectory);
|
|
75
|
-
|
|
76
|
+
if (isEsmProject) {
|
|
77
|
+
const cjsEntryFilePath = import_node_path.default.join(outputDirectory, "index.cjs");
|
|
78
|
+
await import_utils.fs.writeFile(cjsEntryFilePath, entryCode);
|
|
79
|
+
await import_utils.fs.writeFile(entryFilePath, `import('./index.cjs');`);
|
|
80
|
+
} else {
|
|
81
|
+
await import_utils.fs.writeFile(entryFilePath, entryCode);
|
|
82
|
+
}
|
|
76
83
|
},
|
|
77
84
|
async end() {
|
|
78
85
|
console.log("Static directory:", import_utils.chalk.blue(import_node_path.default.relative(appDirectory, staticDirectory)));
|
|
@@ -37,7 +37,7 @@ async function getServerPlugins(api, metaName = "modern-js") {
|
|
|
37
37
|
}
|
|
38
38
|
async function loadServerPlugins(api, appDirectory, metaName) {
|
|
39
39
|
const plugins = await getServerPlugins(api, metaName);
|
|
40
|
-
const instances = (0, import_prod_server.loadServerPlugins)(plugins, appDirectory);
|
|
40
|
+
const instances = await (0, import_prod_server.loadServerPlugins)(plugins, appDirectory);
|
|
41
41
|
return instances;
|
|
42
42
|
}
|
|
43
43
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -33,6 +33,14 @@ __export(register_exports, {
|
|
|
33
33
|
module.exports = __toCommonJS(register_exports);
|
|
34
34
|
var import_node_path = __toESM(require("node:path"));
|
|
35
35
|
var import_utils = require("@modern-js/utils");
|
|
36
|
+
const registerEsbuild = async ({ isTsProject, tsConfig, distDir }) => {
|
|
37
|
+
const esbuildRegister = await import("esbuild-register/dist/node");
|
|
38
|
+
esbuildRegister.register({
|
|
39
|
+
tsconfigRaw: isTsProject ? tsConfig : void 0,
|
|
40
|
+
hookIgnoreNodeModules: true,
|
|
41
|
+
hookMatcher: (fileName) => !fileName.startsWith(distDir)
|
|
42
|
+
});
|
|
43
|
+
};
|
|
36
44
|
const registerCompiler = async (appDir = process.cwd(), distDir, alias) => {
|
|
37
45
|
const TS_CONFIG_FILENAME = `tsconfig.json`;
|
|
38
46
|
const tsconfigPath = import_node_path.default.resolve(appDir, TS_CONFIG_FILENAME);
|
|
@@ -61,32 +69,40 @@ const registerCompiler = async (appDir = process.cwd(), distDir, alias) => {
|
|
|
61
69
|
if (isTsProject) {
|
|
62
70
|
tsConfig = (0, import_utils.readTsConfigByFile)(tsconfigPath);
|
|
63
71
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
72
|
+
const { MODERN_NODE_LOADER } = process.env;
|
|
73
|
+
if (MODERN_NODE_LOADER !== "esbuild") {
|
|
74
|
+
try {
|
|
75
|
+
const tsNode = await import("ts-node");
|
|
76
|
+
const tsNodeOptions = tsConfig["ts-node"];
|
|
77
|
+
if (isTsProject) {
|
|
78
|
+
tsNode.register({
|
|
79
|
+
project: tsconfigPath,
|
|
80
|
+
scope: true,
|
|
81
|
+
// for env.d.ts, https://www.npmjs.com/package/ts-node#missing-types
|
|
82
|
+
files: true,
|
|
83
|
+
transpileOnly: true,
|
|
84
|
+
ignore: [
|
|
85
|
+
"(?:^|/)node_modules/",
|
|
86
|
+
`(?:^|/)${import_node_path.default.relative(appDir, distDir)}/`
|
|
87
|
+
],
|
|
88
|
+
...tsNodeOptions
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
} catch (error) {
|
|
92
|
+
await registerEsbuild({
|
|
93
|
+
isTsProject,
|
|
94
|
+
tsConfig,
|
|
95
|
+
distDir
|
|
79
96
|
});
|
|
80
97
|
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
hookMatcher: (fileName) => !fileName.startsWith(distDir)
|
|
98
|
+
} else {
|
|
99
|
+
await registerEsbuild({
|
|
100
|
+
isTsProject,
|
|
101
|
+
tsConfig,
|
|
102
|
+
distDir
|
|
87
103
|
});
|
|
88
104
|
}
|
|
89
|
-
const tsConfigPaths = await
|
|
105
|
+
const tsConfigPaths = (await import("@modern-js/utils/tsconfig-paths")).default;
|
|
90
106
|
if (await import_utils.fs.pathExists(appDir)) {
|
|
91
107
|
const loaderRes = tsConfigPaths.loadConfig(appDir);
|
|
92
108
|
if (loaderRes.resultType === "success") {
|
|
@@ -38,8 +38,6 @@ function getBuilderEnvironments(normalizedConfig, appContext) {
|
|
|
38
38
|
var v = entries[entry1];
|
|
39
39
|
serverEntries[entry1] = v.map(function(entry2) {
|
|
40
40
|
return entry2.replace("index.jsx", "index.server.jsx");
|
|
41
|
-
}).map(function(entry2) {
|
|
42
|
-
return entry2.replace("bootstrap.jsx", "bootstrap.server.jsx");
|
|
43
41
|
});
|
|
44
42
|
}
|
|
45
43
|
var environments = {
|
|
@@ -54,7 +54,7 @@ function _applyBuilderPlugins() {
|
|
|
54
54
|
case 0:
|
|
55
55
|
return [
|
|
56
56
|
4,
|
|
57
|
-
import("../shared/builderPlugins")
|
|
57
|
+
import("../shared/builderPlugins/index.js")
|
|
58
58
|
];
|
|
59
59
|
case 1:
|
|
60
60
|
_ref = _state.sent(), builderPluginAdapterBasic = _ref.builderPluginAdapterBasic, builderPluginAdapterHtml = _ref.builderPluginAdapterHtml, builderPluginAdapterSSR = _ref.builderPluginAdapterSSR, builderPluginAdapterWorker = _ref.builderPluginAdapterWorker;
|
|
@@ -16,7 +16,7 @@ function _createBuilderGenerator() {
|
|
|
16
16
|
];
|
|
17
17
|
return [
|
|
18
18
|
4,
|
|
19
|
-
import("./builder-rspack")
|
|
19
|
+
import("./builder-rspack/index.js")
|
|
20
20
|
];
|
|
21
21
|
case 1:
|
|
22
22
|
createRspackBuilderForModern = _state.sent().createRspackBuilderForModern;
|
|
@@ -27,7 +27,7 @@ function _createBuilderGenerator() {
|
|
|
27
27
|
case 2:
|
|
28
28
|
return [
|
|
29
29
|
4,
|
|
30
|
-
import("./builder-webpack")
|
|
30
|
+
import("./builder-webpack/index.js")
|
|
31
31
|
];
|
|
32
32
|
case 3:
|
|
33
33
|
createWebpackBuilderForModern = _state.sent().createWebpackBuilderForModern;
|