@modern-js/app-tools 2.62.1 → 2.63.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/bin/modern.js +2 -2
- package/dist/cjs/index.js +12 -144
- package/dist/cjs/new/compat/hooks.js +165 -0
- package/dist/cjs/new/compat/index.js +60 -0
- package/dist/cjs/new/compat/utils.js +95 -0
- package/dist/cjs/new/constants.js +37 -0
- package/dist/cjs/new/context.js +64 -0
- package/dist/cjs/new/getConfigFile.js +41 -0
- package/dist/cjs/new/index.js +79 -0
- package/dist/cjs/new/loadPlugins.js +57 -0
- package/dist/cjs/new/run.js +67 -0
- package/dist/cjs/new/utils/index.js +34 -0
- package/dist/cjs/old.js +179 -0
- package/dist/cjs/plugins/initialize/index.js +44 -50
- package/dist/cjs/types/new.js +16 -0
- package/dist/cjs/utils/restart.js +2 -2
- package/dist/esm/index.js +7 -249
- package/dist/esm/new/compat/hooks.js +452 -0
- package/dist/esm/new/compat/index.js +41 -0
- package/dist/esm/new/compat/utils.js +69 -0
- package/dist/esm/new/constants.js +10 -0
- package/dist/esm/new/context.js +31 -0
- package/dist/esm/new/getConfigFile.js +11 -0
- package/dist/esm/new/index.js +55 -0
- package/dist/esm/new/loadPlugins.js +94 -0
- package/dist/esm/new/run.js +80 -0
- package/dist/esm/new/utils/index.js +33 -0
- package/dist/esm/old.js +258 -0
- package/dist/esm/plugins/initialize/index.js +61 -64
- package/dist/esm/types/new.js +0 -0
- package/dist/esm/utils/restart.js +1 -1
- package/dist/esm-node/index.js +7 -131
- package/dist/esm-node/new/compat/hooks.js +140 -0
- package/dist/esm-node/new/compat/index.js +36 -0
- package/dist/esm-node/new/compat/utils.js +69 -0
- package/dist/esm-node/new/constants.js +10 -0
- package/dist/esm-node/new/context.js +30 -0
- package/dist/esm-node/new/getConfigFile.js +7 -0
- package/dist/esm-node/new/index.js +52 -0
- package/dist/esm-node/new/loadPlugins.js +33 -0
- package/dist/esm-node/new/run.js +43 -0
- package/dist/esm-node/new/utils/index.js +10 -0
- package/dist/esm-node/old.js +140 -0
- package/dist/esm-node/plugins/initialize/index.js +44 -50
- package/dist/esm-node/types/new.js +0 -0
- package/dist/esm-node/utils/restart.js +1 -1
- package/dist/types/config/default.d.ts +4 -3
- package/dist/types/index.d.ts +6 -16
- package/dist/types/new/compat/hooks.d.ts +7 -0
- package/dist/types/new/compat/index.d.ts +2 -0
- package/dist/types/new/compat/utils.d.ts +6 -0
- package/dist/types/new/constants.d.ts +4 -0
- package/dist/types/new/context.d.ts +33 -0
- package/dist/types/new/getConfigFile.d.ts +1 -0
- package/dist/types/new/index.d.ts +6 -0
- package/dist/types/new/loadPlugins.d.ts +9 -0
- package/dist/types/new/run.d.ts +13 -0
- package/dist/types/new/utils/index.d.ts +1 -0
- package/dist/types/old.d.ts +13 -0
- package/dist/types/plugins/initialize/index.d.ts +2 -2
- package/dist/types/types/index.d.ts +12 -3
- package/dist/types/types/new.d.ts +145 -0
- package/dist/types/utils/env.d.ts +2 -2
- package/dist/types/utils/restart.d.ts +1 -1
- package/lib/types.d.ts +82 -61
- package/package.json +27 -18
@@ -0,0 +1,43 @@
|
|
1
|
+
import { initAppDir } from "@modern-js/plugin-v2/cli";
|
2
|
+
import { run as CLIPluginRun } from "@modern-js/plugin-v2/run";
|
3
|
+
import { minimist } from "@modern-js/utils";
|
4
|
+
import { handleSetupResult } from "./compat/hooks";
|
5
|
+
import { PACKAGE_JSON_CONFIG_NAME } from "./constants";
|
6
|
+
import { getConfigFile } from "./getConfigFile";
|
7
|
+
import { loadInternalPlugins } from "./loadPlugins";
|
8
|
+
import { getIsAutoLoadPlugins } from "./utils";
|
9
|
+
async function run({ cwd, initialLog, version, internalPlugins, packageJsonConfig, configFile }) {
|
10
|
+
const command = process.argv[2];
|
11
|
+
const cliParams = minimist(process.argv.slice(2));
|
12
|
+
const SUPPORT_CONFIG_PARAM_COMMANDS = [
|
13
|
+
"dev",
|
14
|
+
"build",
|
15
|
+
"deploy",
|
16
|
+
"start",
|
17
|
+
"serve",
|
18
|
+
"inspect",
|
19
|
+
"upgrade"
|
20
|
+
];
|
21
|
+
let customConfigFile;
|
22
|
+
if (SUPPORT_CONFIG_PARAM_COMMANDS.includes(command)) {
|
23
|
+
customConfigFile = cliParams.config || cliParams.c;
|
24
|
+
}
|
25
|
+
if (command === "new") {
|
26
|
+
customConfigFile = cliParams["config-file"];
|
27
|
+
}
|
28
|
+
const appDirectory = await initAppDir(cwd);
|
29
|
+
const finalConfigFile = customConfigFile || getConfigFile(configFile);
|
30
|
+
const autoLoadPlugins = await getIsAutoLoadPlugins(appDirectory, finalConfigFile);
|
31
|
+
const plugins = await loadInternalPlugins(appDirectory, internalPlugins === null || internalPlugins === void 0 ? void 0 : internalPlugins.cli, internalPlugins === null || internalPlugins === void 0 ? void 0 : internalPlugins.autoLoad, autoLoadPlugins);
|
32
|
+
await CLIPluginRun({
|
33
|
+
cwd,
|
34
|
+
initialLog: initialLog || `Modern.js Framework v${version}`,
|
35
|
+
configFile: finalConfigFile,
|
36
|
+
packageJsonConfig: packageJsonConfig || PACKAGE_JSON_CONFIG_NAME,
|
37
|
+
internalPlugins: plugins,
|
38
|
+
handleSetupResult
|
39
|
+
});
|
40
|
+
}
|
41
|
+
export {
|
42
|
+
run
|
43
|
+
};
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { createLoadedConfig } from "@modern-js/plugin-v2/cli";
|
2
|
+
async function getIsAutoLoadPlugins(appDirectory, configFile = "modern.config.ts", packageJsonConfig = "ModernConfig") {
|
3
|
+
var _loaded_config;
|
4
|
+
const loaded = await createLoadedConfig(appDirectory, configFile, packageJsonConfig);
|
5
|
+
const autoLoadPlugins = (_loaded_config = loaded.config) === null || _loaded_config === void 0 ? void 0 : _loaded_config.autoLoadPlugins;
|
6
|
+
return autoLoadPlugins || false;
|
7
|
+
}
|
8
|
+
export {
|
9
|
+
getIsAutoLoadPlugins
|
10
|
+
};
|
@@ -0,0 +1,140 @@
|
|
1
|
+
import path from "path";
|
2
|
+
import { getLocaleLanguage } from "@modern-js/plugin-i18n/language-detector";
|
3
|
+
import { castArray } from "@modern-js/uni-builder";
|
4
|
+
import { cleanRequireCache, deprecatedCommands, emptyDir, getArgv, getCommand } from "@modern-js/utils";
|
5
|
+
import { hooks } from "./hooks";
|
6
|
+
import { i18n } from "./locale";
|
7
|
+
import analyzePlugin from "./plugins/analyze";
|
8
|
+
import deployPlugin from "./plugins/deploy";
|
9
|
+
import initializePlugin from "./plugins/initialize";
|
10
|
+
import serverBuildPlugin from "./plugins/serverBuild";
|
11
|
+
import { buildCommand, deployCommand, devCommand, inspectCommand, newCommand, serverCommand, upgradeCommand } from "./commands";
|
12
|
+
import { generateWatchFiles } from "./utils/generateWatchFiles";
|
13
|
+
import { restart } from "./utils/restart";
|
14
|
+
import { dev } from "./commands/dev";
|
15
|
+
import { mergeConfig } from "@modern-js/core";
|
16
|
+
export * from "./defineConfig";
|
17
|
+
export * from "./types";
|
18
|
+
const appTools = (options = {
|
19
|
+
// default webpack to be compatible with original projects
|
20
|
+
bundler: "webpack"
|
21
|
+
}) => ({
|
22
|
+
name: "@modern-js/app-tools-old",
|
23
|
+
post: [
|
24
|
+
"@modern-js/plugin-initialize",
|
25
|
+
"@modern-js/plugin-analyze",
|
26
|
+
"@modern-js/plugin-ssr",
|
27
|
+
"@modern-js/plugin-document",
|
28
|
+
"@modern-js/plugin-state",
|
29
|
+
"@modern-js/plugin-router",
|
30
|
+
"@modern-js/plugin-router-v5",
|
31
|
+
"@modern-js/plugin-polyfill"
|
32
|
+
],
|
33
|
+
registerHook: hooks,
|
34
|
+
usePlugins: [
|
35
|
+
initializePlugin({
|
36
|
+
bundler: (options === null || options === void 0 ? void 0 : options.bundler) && [
|
37
|
+
"rspack",
|
38
|
+
"experimental-rspack"
|
39
|
+
].includes(options.bundler) ? "rspack" : "webpack"
|
40
|
+
}),
|
41
|
+
analyzePlugin({
|
42
|
+
bundler: (options === null || options === void 0 ? void 0 : options.bundler) && [
|
43
|
+
"rspack",
|
44
|
+
"experimental-rspack"
|
45
|
+
].includes(options.bundler) ? "rspack" : "webpack"
|
46
|
+
}),
|
47
|
+
serverBuildPlugin(),
|
48
|
+
deployPlugin()
|
49
|
+
],
|
50
|
+
setup: (api) => {
|
51
|
+
const appContext = api.useAppContext();
|
52
|
+
api.setAppContext({
|
53
|
+
...appContext,
|
54
|
+
toolsType: "app-tools"
|
55
|
+
});
|
56
|
+
const locale = getLocaleLanguage();
|
57
|
+
i18n.changeLanguage({
|
58
|
+
locale
|
59
|
+
});
|
60
|
+
return {
|
61
|
+
async beforeConfig() {
|
62
|
+
var _userConfig_output;
|
63
|
+
const userConfig = api.useConfigContext();
|
64
|
+
const appContext2 = api.useAppContext();
|
65
|
+
if ((_userConfig_output = userConfig.output) === null || _userConfig_output === void 0 ? void 0 : _userConfig_output.tempDir) {
|
66
|
+
api.setAppContext({
|
67
|
+
...appContext2,
|
68
|
+
internalDirectory: path.resolve(appContext2.appDirectory, userConfig.output.tempDir)
|
69
|
+
});
|
70
|
+
}
|
71
|
+
},
|
72
|
+
async commands({ program }) {
|
73
|
+
await devCommand(program, api);
|
74
|
+
await buildCommand(program, api);
|
75
|
+
serverCommand(program, api);
|
76
|
+
deployCommand(program, api);
|
77
|
+
newCommand(program, locale);
|
78
|
+
inspectCommand(program, api);
|
79
|
+
upgradeCommand(program);
|
80
|
+
deprecatedCommands(program);
|
81
|
+
},
|
82
|
+
async prepare() {
|
83
|
+
const command = getCommand();
|
84
|
+
if (command === "deploy") {
|
85
|
+
const isSkipBuild = [
|
86
|
+
"-s",
|
87
|
+
"--skip-build"
|
88
|
+
].some((tag) => {
|
89
|
+
return getArgv().includes(tag);
|
90
|
+
});
|
91
|
+
if (isSkipBuild) {
|
92
|
+
return;
|
93
|
+
}
|
94
|
+
}
|
95
|
+
if (command === "dev" || command === "start" || command === "build" || command === "deploy") {
|
96
|
+
const resolvedConfig = api.useResolvedConfigContext();
|
97
|
+
if (resolvedConfig.output.cleanDistPath) {
|
98
|
+
const appContext2 = api.useAppContext();
|
99
|
+
await emptyDir(appContext2.distDirectory);
|
100
|
+
}
|
101
|
+
}
|
102
|
+
},
|
103
|
+
async watchFiles() {
|
104
|
+
const appContext2 = api.useAppContext();
|
105
|
+
const config = api.useResolvedConfigContext();
|
106
|
+
const files = await generateWatchFiles(appContext2, config.source.configDir);
|
107
|
+
const watchFiles = castArray(config.dev.watchFiles);
|
108
|
+
watchFiles.forEach(({ type, paths }) => {
|
109
|
+
if (type === "reload-server") {
|
110
|
+
files.push(...Array.isArray(paths) ? paths : [
|
111
|
+
paths
|
112
|
+
]);
|
113
|
+
}
|
114
|
+
});
|
115
|
+
return files;
|
116
|
+
},
|
117
|
+
// 这里会被 core/initWatcher 监听的文件变动触发,如果是 src 目录下的文件变动,则不做 restart
|
118
|
+
async fileChange(e) {
|
119
|
+
const { filename, eventType, isPrivate } = e;
|
120
|
+
if (!isPrivate && (eventType === "change" || eventType === "unlink")) {
|
121
|
+
const { closeServer } = await import("./utils/createServer.js");
|
122
|
+
await closeServer();
|
123
|
+
await restart(api.useHookRunners(), filename);
|
124
|
+
}
|
125
|
+
},
|
126
|
+
async beforeRestart() {
|
127
|
+
cleanRequireCache([
|
128
|
+
require.resolve("./plugins/analyze")
|
129
|
+
]);
|
130
|
+
}
|
131
|
+
};
|
132
|
+
}
|
133
|
+
});
|
134
|
+
var old_default = appTools;
|
135
|
+
export {
|
136
|
+
appTools,
|
137
|
+
old_default as default,
|
138
|
+
dev,
|
139
|
+
mergeConfig
|
140
|
+
};
|
@@ -11,60 +11,54 @@ var initialize_default = ({ bundler }) => ({
|
|
11
11
|
"@modern-js/plugin-polyfill"
|
12
12
|
],
|
13
13
|
setup(api) {
|
14
|
-
|
15
|
-
const appContext = api.
|
16
|
-
const userConfig = api.
|
17
|
-
api.
|
18
|
-
...appContext,
|
14
|
+
api.config(() => {
|
15
|
+
const appContext = api.getAppContext();
|
16
|
+
const userConfig = api.getConfig();
|
17
|
+
api.updateAppContext({
|
19
18
|
bundlerType: bundler
|
20
19
|
});
|
21
20
|
return checkIsLegacyConfig(userConfig) ? createLegacyDefaultConfig(appContext) : createDefaultConfig(appContext);
|
22
|
-
};
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
resolved.security = normalizedConfig.security || {};
|
61
|
-
resolved.experiments = normalizedConfig.experiments;
|
62
|
-
}
|
63
|
-
return {
|
64
|
-
resolved
|
65
|
-
};
|
21
|
+
});
|
22
|
+
api.modifyResolvedConfig(async (resolved) => {
|
23
|
+
var _resolved_output_distPath;
|
24
|
+
let appContext = api.getAppContext();
|
25
|
+
const userConfig = api.getConfig();
|
26
|
+
const port = await getServerPort(resolved);
|
27
|
+
appContext = {
|
28
|
+
...appContext,
|
29
|
+
port,
|
30
|
+
distDirectory: ensureAbsolutePath(appContext.distDirectory, ((_resolved_output_distPath = resolved.output.distPath) === null || _resolved_output_distPath === void 0 ? void 0 : _resolved_output_distPath.root) || "dist")
|
31
|
+
};
|
32
|
+
api.updateAppContext(appContext);
|
33
|
+
const normalizedConfig = checkIsLegacyConfig(resolved) ? transformNormalizedConfig(resolved) : resolved;
|
34
|
+
resolved._raw = userConfig;
|
35
|
+
resolved.server = {
|
36
|
+
...normalizedConfig.server || {},
|
37
|
+
port
|
38
|
+
};
|
39
|
+
var _normalizedConfig_autoLoadPlugins;
|
40
|
+
resolved.autoLoadPlugins = (_normalizedConfig_autoLoadPlugins = normalizedConfig.autoLoadPlugins) !== null && _normalizedConfig_autoLoadPlugins !== void 0 ? _normalizedConfig_autoLoadPlugins : false;
|
41
|
+
stabilizeConfig(resolved, normalizedConfig, [
|
42
|
+
"source",
|
43
|
+
"bff",
|
44
|
+
"dev",
|
45
|
+
"html",
|
46
|
+
"output",
|
47
|
+
"tools",
|
48
|
+
"testing",
|
49
|
+
"plugins",
|
50
|
+
"builderPlugins",
|
51
|
+
"runtime",
|
52
|
+
"runtimeByEntries",
|
53
|
+
"deploy",
|
54
|
+
"performance"
|
55
|
+
]);
|
56
|
+
if (bundler === "webpack") {
|
57
|
+
resolved.security = normalizedConfig.security || {};
|
58
|
+
resolved.experiments = normalizedConfig.experiments;
|
66
59
|
}
|
67
|
-
|
60
|
+
return resolved;
|
61
|
+
});
|
68
62
|
}
|
69
63
|
});
|
70
64
|
function stabilizeConfig(resolve, config, keys) {
|
File without changes
|
@@ -1,3 +1,4 @@
|
|
1
|
-
import type { AppLegacyUserConfig, AppUserConfig
|
2
|
-
|
3
|
-
export declare function
|
1
|
+
import type { AppLegacyUserConfig, AppUserConfig } from '../types';
|
2
|
+
import type { AppToolsContext } from '../types/new';
|
3
|
+
export declare function createDefaultConfig(appContext: AppToolsContext<'shared'>): AppUserConfig<'webpack'> | AppUserConfig<'rspack'>;
|
4
|
+
export declare function createLegacyDefaultConfig(appContext: AppToolsContext<'shared'>): AppLegacyUserConfig;
|
package/dist/types/index.d.ts
CHANGED
@@ -1,20 +1,10 @@
|
|
1
|
-
import
|
2
|
-
|
1
|
+
import { appTools } from './new/index';
|
2
|
+
export { appTools };
|
3
|
+
export { initAppContext } from './new/index';
|
4
|
+
export { defineConfig, defineLegacyConfig } from './defineConfig';
|
5
|
+
export { mergeConfig } from '@modern-js/core';
|
6
|
+
export type { RuntimeUserConfig } from './types/config';
|
3
7
|
export { dev } from './commands/dev';
|
4
8
|
export type { DevOptions } from './utils/types';
|
5
|
-
export { mergeConfig } from '@modern-js/core';
|
6
|
-
export * from './defineConfig';
|
7
9
|
export * from './types';
|
8
|
-
export type { RuntimeUserConfig } from './types/config';
|
9
|
-
export type AppToolsOptions = {
|
10
|
-
/**
|
11
|
-
* Specify which bundler to use for the build.
|
12
|
-
* @default `webpack`
|
13
|
-
* */
|
14
|
-
bundler?: 'rspack' | 'webpack' | 'experimental-rspack';
|
15
|
-
};
|
16
|
-
/**
|
17
|
-
* The core package of the framework, providing CLI commands, build capabilities, configuration parsing and more.
|
18
|
-
*/
|
19
|
-
export declare const appTools: (options?: AppToolsOptions) => CliPlugin<AppTools<'shared'>>;
|
20
10
|
export default appTools;
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import type { InternalContext } from '@modern-js/plugin-v2';
|
2
|
+
import type { AppTools } from '../../types';
|
3
|
+
/**
|
4
|
+
* old plugin useHookRunners function result
|
5
|
+
*/
|
6
|
+
export declare function getHookRunners(context: InternalContext<AppTools>): Record<string, any>;
|
7
|
+
export declare function handleSetupResult(setupResult: Record<string, (...args: any) => any>, api: Record<string, any>): void;
|
@@ -0,0 +1,6 @@
|
|
1
|
+
/**
|
2
|
+
* Maps old plugin hook function names to new plugin API names
|
3
|
+
*/
|
4
|
+
export declare function transformHookRunner(hookRunnerName: string): string;
|
5
|
+
export declare function transformHookParams(hookRunnerName: string, params: any): any;
|
6
|
+
export declare function transformHookResult(hookRunnerName: string, result: any): any;
|
@@ -0,0 +1,4 @@
|
|
1
|
+
export declare const PACKAGE_JSON_CONFIG_NAME = "modernConfig";
|
2
|
+
export declare const DEFAULT_CONFIG_FILE = "modern.config";
|
3
|
+
export declare const DEFAULT_SERVER_CONFIG_FILE = "modern.server-runtime.config";
|
4
|
+
export declare const DEFAULT_RUNTIME_CONFIG_FILE = "modern.runtime";
|
@@ -0,0 +1,33 @@
|
|
1
|
+
export declare const initAppContext: ({ appDirectory, runtimeConfigFile, options, serverConfigFile, tempDir, }: {
|
2
|
+
appDirectory: string;
|
3
|
+
runtimeConfigFile: string | false;
|
4
|
+
options?: {
|
5
|
+
metaName?: string | undefined;
|
6
|
+
srcDir?: string | undefined;
|
7
|
+
apiDir?: string | undefined;
|
8
|
+
distDir?: string | undefined;
|
9
|
+
sharedDir?: string | undefined;
|
10
|
+
} | undefined;
|
11
|
+
serverConfigFile: string;
|
12
|
+
tempDir?: string | undefined;
|
13
|
+
}) => {
|
14
|
+
metaName: string;
|
15
|
+
runtimeConfigFile: string | false;
|
16
|
+
serverConfigFile: string;
|
17
|
+
ip: any;
|
18
|
+
port: number;
|
19
|
+
moduleType: any;
|
20
|
+
apiDirectory: string;
|
21
|
+
lambdaDirectory: string;
|
22
|
+
sharedDirectory: string;
|
23
|
+
distDirectory: string;
|
24
|
+
serverPlugins: never[];
|
25
|
+
internalDirectory: string;
|
26
|
+
htmlTemplates: {};
|
27
|
+
serverRoutes: never[];
|
28
|
+
entrypoints: never[];
|
29
|
+
checkedEntries: never[];
|
30
|
+
apiOnly: boolean;
|
31
|
+
internalDirAlias: string;
|
32
|
+
internalSrcAlias: string;
|
33
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const getConfigFile: (configFile?: string) => string | false;
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { type AppToolsOptions } from '../old';
|
2
|
+
import type { AppTools, CliPluginFuture } from '../types';
|
3
|
+
import { initAppContext } from './context';
|
4
|
+
export * from '../defineConfig';
|
5
|
+
export { initAppContext };
|
6
|
+
export declare const appTools: (options?: AppToolsOptions) => CliPluginFuture<AppTools<'shared'>>;
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import type { Plugin } from '@modern-js/plugin-v2';
|
2
|
+
import type { InternalPlugins } from '@modern-js/types';
|
3
|
+
/**
|
4
|
+
* Load internal plugins which in @modern-js scope and user's custom plugins.
|
5
|
+
* @param appDirectory - Application root directory.
|
6
|
+
* @param internalPlugins - Internal plugins.
|
7
|
+
* @returns Plugin Objects has been required.
|
8
|
+
*/
|
9
|
+
export declare const loadInternalPlugins: (appDirectory: string, internalPlugins?: InternalPlugins, autoLoad?: InternalPlugins, autoLoadPlugins?: boolean) => Promise<Plugin[]>;
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import type { InternalPlugins } from '@modern-js/types';
|
2
|
+
export interface RunOptions {
|
3
|
+
cwd?: string;
|
4
|
+
configFile?: string;
|
5
|
+
packageJsonConfig?: string;
|
6
|
+
internalPlugins?: {
|
7
|
+
cli?: InternalPlugins;
|
8
|
+
autoLoad?: InternalPlugins;
|
9
|
+
};
|
10
|
+
initialLog?: string;
|
11
|
+
version: string;
|
12
|
+
}
|
13
|
+
export declare function run({ cwd, initialLog, version, internalPlugins, packageJsonConfig, configFile, }: RunOptions): Promise<void>;
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare function getIsAutoLoadPlugins(appDirectory: string, configFile?: string, packageJsonConfig?: string): Promise<boolean>;
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import type { CliPlugin } from '@modern-js/core';
|
2
|
+
import type { AppTools, AppToolsOptions } from './types';
|
3
|
+
export { dev } from './commands/dev';
|
4
|
+
export type { DevOptions } from './utils/types';
|
5
|
+
export { mergeConfig } from '@modern-js/core';
|
6
|
+
export * from './defineConfig';
|
7
|
+
export * from './types';
|
8
|
+
export type { RuntimeUserConfig } from './types/config';
|
9
|
+
/**
|
10
|
+
* The core package of the framework, providing CLI commands, build capabilities, configuration parsing and more.
|
11
|
+
*/
|
12
|
+
export declare const appTools: (options?: AppToolsOptions) => CliPlugin<AppTools<'shared'>>;
|
13
|
+
export default appTools;
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import type { AppTools,
|
1
|
+
import type { AppTools, CliPluginFuture } from '../../types';
|
2
2
|
declare const _default: ({ bundler, }: {
|
3
3
|
bundler: 'rspack' | 'webpack';
|
4
|
-
}) =>
|
4
|
+
}) => CliPluginFuture<AppTools<'shared'>>;
|
5
5
|
export default _default;
|
@@ -1,7 +1,9 @@
|
|
1
1
|
import type { NormalizedConfig, UserConfig } from '@modern-js/core';
|
2
|
+
import type { CLIPlugin, CLIPluginExtends } from '@modern-js/plugin-v2';
|
2
3
|
import type { AppToolsNormalizedConfig, AppToolsUserConfig } from './config';
|
3
4
|
import type { AppToolsHooks } from './hooks';
|
4
5
|
import type { AppToolsLegacyNormalizedConfig, AppToolsLegacyUserConfig } from './legacyConfig';
|
6
|
+
import type { AppToolsExtendAPI, AppToolsExtendContext, AppToolsExtendHooks } from './new';
|
5
7
|
import type { Bundler } from './utils';
|
6
8
|
export * from './hooks';
|
7
9
|
export * from './config';
|
@@ -10,17 +12,24 @@ export type { webpack, Rspack } from '@modern-js/uni-builder';
|
|
10
12
|
export type { Bundler } from './utils';
|
11
13
|
export type { ServerUserConfig, ServerNormalizedConfig, BffUserConfig, BffNormalizedConfig, SSR, SSRByEntries, Resource, Params, RequestHandlerConfig, LoaderContext, OnError, OnTiming, RequestHandlerOptions, RequestHandler, } from '@modern-js/server-core';
|
12
14
|
export type { IAppContext, PluginAPI, CliPlugin, NormalizedConfig, UserConfig, } from '@modern-js/core';
|
13
|
-
export type AppTools<B extends Bundler = 'webpack'> = {
|
14
|
-
hooks: AppToolsHooks<B>;
|
15
|
+
export type AppTools<B extends Bundler = 'webpack'> = Required<CLIPluginExtends<AppToolsUserConfig<B>, AppToolsNormalizedConfig, AppToolsExtendContext<B>, AppToolsExtendAPI<B>, AppToolsExtendHooks>> & {
|
15
16
|
userConfig: AppToolsUserConfig<B>;
|
16
|
-
|
17
|
+
hooks: AppToolsHooks<B>;
|
17
18
|
};
|
18
19
|
export type LegacyAppTools = {
|
19
20
|
hooks: AppToolsHooks;
|
20
21
|
userConfig: AppToolsLegacyUserConfig;
|
21
22
|
normalizedConfig: AppToolsLegacyNormalizedConfig;
|
22
23
|
};
|
24
|
+
export type CliPluginFuture<Extends extends CLIPluginExtends> = CLIPlugin<Extends>;
|
23
25
|
export type AppNormalizedConfig<B extends Bundler = 'webpack'> = NormalizedConfig<AppTools<B>>;
|
24
26
|
export type AppLegacyNormalizedConfig = NormalizedConfig<LegacyAppTools>;
|
25
27
|
export type AppUserConfig<B extends Bundler = 'webpack'> = UserConfig<AppTools<B>>;
|
26
28
|
export type AppLegacyUserConfig = UserConfig<LegacyAppTools>;
|
29
|
+
export type AppToolsOptions = {
|
30
|
+
/**
|
31
|
+
* Specify which bundler to use for the build.
|
32
|
+
* @default `webpack`
|
33
|
+
* */
|
34
|
+
bundler?: 'rspack' | 'webpack' | 'experimental-rspack';
|
35
|
+
};
|
@@ -0,0 +1,145 @@
|
|
1
|
+
import type { DevToolData, RegisterBuildPlatformResult } from '@modern-js/core';
|
2
|
+
import type { AppContext, InternalContext, PluginHook, PluginHookTap, TransformFunction } from '@modern-js/plugin-v2';
|
3
|
+
import type { Entrypoint, NestedRouteForCli, PageRoute, RouteLegacy, ServerPlugin, ServerRoute } from '@modern-js/types';
|
4
|
+
import type { AppTools } from '.';
|
5
|
+
import type { getHookRunners } from '../new/compat/hooks';
|
6
|
+
import type { AppToolsNormalizedConfig, AppToolsUserConfig } from './config';
|
7
|
+
import type { RuntimePlugin } from './hooks';
|
8
|
+
import type { Bundler } from './utils';
|
9
|
+
export type BeforeConfigFn = () => Promise<void> | void;
|
10
|
+
export type AfterPrepareFn = () => Promise<void> | void;
|
11
|
+
export type InternalRuntimePluginsFn = TransformFunction<{
|
12
|
+
entrypoint: Entrypoint;
|
13
|
+
plugins: RuntimePlugin[];
|
14
|
+
}>;
|
15
|
+
export type InternalServerPluginsFn = TransformFunction<{
|
16
|
+
plugins: ServerPlugin[];
|
17
|
+
}>;
|
18
|
+
export type CheckEntryPointFn = TransformFunction<{
|
19
|
+
path: string;
|
20
|
+
entry: false | string;
|
21
|
+
}>;
|
22
|
+
export type ModifyEntrypointsFn = TransformFunction<{
|
23
|
+
entrypoints: Entrypoint[];
|
24
|
+
}>;
|
25
|
+
export type ModifyFileSystemRoutesFn = TransformFunction<{
|
26
|
+
entrypoint: Entrypoint;
|
27
|
+
routes: RouteLegacy[] | (NestedRouteForCli | PageRoute)[];
|
28
|
+
}>;
|
29
|
+
export type ModifyServerRoutesFn = TransformFunction<{
|
30
|
+
routes: ServerRoute[];
|
31
|
+
}>;
|
32
|
+
export type DeplpoyFn = () => Promise<void> | void;
|
33
|
+
export type GenerateEntryCodeFn = (params: {
|
34
|
+
entrypoints: Entrypoint[];
|
35
|
+
}) => Promise<void> | void;
|
36
|
+
export type BeforeGenerateRoutesFn = TransformFunction<{
|
37
|
+
entrypoint: Entrypoint;
|
38
|
+
code: string;
|
39
|
+
}>;
|
40
|
+
export type BeforePrintInstructionsFn = TransformFunction<{
|
41
|
+
instructions: string;
|
42
|
+
}>;
|
43
|
+
export type RegisterDevFn = (params: {
|
44
|
+
name: string;
|
45
|
+
entry: string;
|
46
|
+
type: string;
|
47
|
+
config: any;
|
48
|
+
}) => Promise<DevToolData> | DevToolData;
|
49
|
+
export type RegisterBuildPlatformFn = (params: {
|
50
|
+
name: string;
|
51
|
+
entry: string;
|
52
|
+
type: string;
|
53
|
+
config: any;
|
54
|
+
}) => Promise<RegisterBuildPlatformResult> | RegisterBuildPlatformResult;
|
55
|
+
export type AddRuntimeExportsFn = (params: {
|
56
|
+
entrypoint: Entrypoint;
|
57
|
+
exports: string[];
|
58
|
+
}) => Promise<void> | void;
|
59
|
+
export interface AppToolsExtendAPI<B extends Bundler = 'webpack'> {
|
60
|
+
onBeforeConfig: PluginHookTap<BeforeConfigFn>;
|
61
|
+
onAfterPrepare: PluginHookTap<AfterPrepareFn>;
|
62
|
+
deploy: PluginHookTap<DeplpoyFn>;
|
63
|
+
_internalRuntimePlugins: PluginHookTap<InternalRuntimePluginsFn>;
|
64
|
+
_internalServerPlugins: PluginHookTap<InternalServerPluginsFn>;
|
65
|
+
checkEntryPoint: PluginHookTap<CheckEntryPointFn>;
|
66
|
+
modifyEntrypoints: PluginHookTap<ModifyEntrypointsFn>;
|
67
|
+
modifyFileSystemRoutes: PluginHookTap<ModifyFileSystemRoutesFn>;
|
68
|
+
modifyServerRoutes: PluginHookTap<ModifyServerRoutesFn>;
|
69
|
+
generateEntryCode: PluginHookTap<GenerateEntryCodeFn>;
|
70
|
+
onBeforeGenerateRoutes: PluginHookTap<BeforeGenerateRoutesFn>;
|
71
|
+
/**
|
72
|
+
* @deprecated
|
73
|
+
*/
|
74
|
+
onBeforePrintInstructions: PluginHookTap<BeforePrintInstructionsFn>;
|
75
|
+
/**
|
76
|
+
* @deprecated
|
77
|
+
*/
|
78
|
+
registerDev: PluginHookTap<RegisterDevFn>;
|
79
|
+
/**
|
80
|
+
* @deprecated
|
81
|
+
*/
|
82
|
+
registerBuildPlatform: PluginHookTap<RegisterBuildPlatformFn>;
|
83
|
+
/**
|
84
|
+
* @deprecated
|
85
|
+
*/
|
86
|
+
addRuntimeExports: PluginHookTap<AddRuntimeExportsFn>;
|
87
|
+
/**
|
88
|
+
* @deprecated use getAppContext instead
|
89
|
+
*/
|
90
|
+
useAppContext: () => AppToolsContext<B>;
|
91
|
+
/**
|
92
|
+
* @deprecated use getConfig instead
|
93
|
+
*/
|
94
|
+
useConfigContext: () => AppToolsUserConfig<B>;
|
95
|
+
/**
|
96
|
+
* @deprecated use getNormalizedConfig instead
|
97
|
+
*/
|
98
|
+
useResolvedConfigContext: () => AppToolsNormalizedConfig<AppToolsUserConfig<B>>;
|
99
|
+
/**
|
100
|
+
* @deprecated use api.xx instead
|
101
|
+
*/
|
102
|
+
useHookRunners: () => ReturnType<typeof getHookRunners>;
|
103
|
+
}
|
104
|
+
export interface AppToolsExtendHooks extends Record<string, PluginHook<(...args: any[]) => any>> {
|
105
|
+
onBeforeConfig: PluginHook<BeforeConfigFn>;
|
106
|
+
onAfterPrepare: PluginHook<AfterPrepareFn>;
|
107
|
+
deploy: PluginHook<DeplpoyFn>;
|
108
|
+
_internalRuntimePlugins: PluginHook<InternalRuntimePluginsFn>;
|
109
|
+
_internalServerPlugins: PluginHook<InternalServerPluginsFn>;
|
110
|
+
checkEntryPoint: PluginHook<CheckEntryPointFn>;
|
111
|
+
modifyEntrypoints: PluginHook<ModifyEntrypointsFn>;
|
112
|
+
modifyFileSystemRoutes: PluginHook<ModifyFileSystemRoutesFn>;
|
113
|
+
modifyServerRoutes: PluginHook<ModifyServerRoutesFn>;
|
114
|
+
generateEntryCode: PluginHook<GenerateEntryCodeFn>;
|
115
|
+
onBeforeGenerateRoutes: PluginHook<BeforeGenerateRoutesFn>;
|
116
|
+
/**
|
117
|
+
* @deprecated
|
118
|
+
*/
|
119
|
+
onBeforePrintInstructions: PluginHook<BeforePrintInstructionsFn>;
|
120
|
+
/**
|
121
|
+
* @deprecated
|
122
|
+
*/
|
123
|
+
registerDev: PluginHook<RegisterDevFn>;
|
124
|
+
/**
|
125
|
+
* @deprecated
|
126
|
+
*/
|
127
|
+
registerBuildPlatform: PluginHook<RegisterBuildPlatformFn>;
|
128
|
+
/**
|
129
|
+
* @deprecated
|
130
|
+
*/
|
131
|
+
addRuntimeExports: PluginHook<AddRuntimeExportsFn>;
|
132
|
+
}
|
133
|
+
export type AppToolsExtendContext<B extends Bundler = 'webpack'> = {
|
134
|
+
metaName: string;
|
135
|
+
internalDirectory: string;
|
136
|
+
sharedDirectory: string;
|
137
|
+
internalDirAlias: string;
|
138
|
+
internalSrcAlias: string;
|
139
|
+
apiDirectory: string;
|
140
|
+
lambdaDirectory: string;
|
141
|
+
serverPlugins: ServerPlugin[];
|
142
|
+
moduleType: 'module' | 'commonjs';
|
143
|
+
_internalContext: InternalContext<AppTools<B>>;
|
144
|
+
};
|
145
|
+
export type AppToolsContext<B extends Bundler = 'webpack'> = AppContext<AppTools<B>> & AppToolsExtendContext<B>;
|