@eggjs/utils 4.4.0 → 4.5.0-beta.2
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/README.md +1 -6
- package/dist/_virtual/rolldown_runtime.js +7 -0
- package/dist/{commonjs/deprecated.d.ts → deprecated.d.ts} +4 -1
- package/dist/deprecated.js +41 -0
- package/dist/error/ImportResolveError.d.ts +8 -0
- package/dist/error/ImportResolveError.js +16 -0
- package/dist/{commonjs/framework.d.ts → framework.d.ts} +6 -4
- package/dist/framework.js +60 -0
- package/dist/import.d.ts +14 -0
- package/dist/import.js +231 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.js +45 -0
- package/dist/plugin.d.ts +51 -0
- package/dist/plugin.js +112 -0
- package/dist/utils.js +12 -0
- package/package.json +26 -57
- package/dist/commonjs/deprecated.js +0 -59
- package/dist/commonjs/error/ImportResolveError.d.ts +0 -5
- package/dist/commonjs/error/ImportResolveError.js +0 -17
- package/dist/commonjs/error/index.d.ts +0 -1
- package/dist/commonjs/error/index.js +0 -18
- package/dist/commonjs/framework.js +0 -84
- package/dist/commonjs/import.d.ts +0 -11
- package/dist/commonjs/import.js +0 -326
- package/dist/commonjs/index.d.ts +0 -26
- package/dist/commonjs/index.js +0 -77
- package/dist/commonjs/package.json +0 -3
- package/dist/commonjs/plugin.d.ts +0 -30
- package/dist/commonjs/plugin.js +0 -125
- package/dist/commonjs/utils.d.ts +0 -2
- package/dist/commonjs/utils.js +0 -25
- package/dist/esm/deprecated.d.ts +0 -10
- package/dist/esm/deprecated.js +0 -53
- package/dist/esm/error/ImportResolveError.d.ts +0 -5
- package/dist/esm/error/ImportResolveError.js +0 -13
- package/dist/esm/error/index.d.ts +0 -1
- package/dist/esm/error/index.js +0 -2
- package/dist/esm/framework.d.ts +0 -16
- package/dist/esm/framework.js +0 -78
- package/dist/esm/import.d.ts +0 -11
- package/dist/esm/import.js +0 -316
- package/dist/esm/index.d.ts +0 -26
- package/dist/esm/index.js +0 -51
- package/dist/esm/package.json +0 -3
- package/dist/esm/plugin.d.ts +0 -30
- package/dist/esm/plugin.js +0 -117
- package/dist/esm/utils.d.ts +0 -2
- package/dist/esm/utils.js +0 -18
- package/dist/package.json +0 -4
- package/src/deprecated.ts +0 -58
- package/src/error/ImportResolveError.ts +0 -13
- package/src/error/index.ts +0 -1
- package/src/framework.ts +0 -92
- package/src/import.ts +0 -344
- package/src/index.ts +0 -58
- package/src/plugin.ts +0 -167
- package/src/utils.ts +0 -19
package/dist/esm/plugin.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
export interface LoaderOptions {
|
|
2
|
-
framework: string;
|
|
3
|
-
baseDir: string;
|
|
4
|
-
env?: string;
|
|
5
|
-
}
|
|
6
|
-
export interface Plugin {
|
|
7
|
-
name: string;
|
|
8
|
-
version?: string;
|
|
9
|
-
enable: boolean;
|
|
10
|
-
implicitEnable: boolean;
|
|
11
|
-
path: string;
|
|
12
|
-
dependencies: string[];
|
|
13
|
-
optionalDependencies: string[];
|
|
14
|
-
env: string[];
|
|
15
|
-
from: string;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* @see https://github.com/eggjs/egg-core/blob/2920f6eade07959d25f5c4f96b154d3fbae877db/lib/loader/mixin/plugin.js#L203
|
|
19
|
-
*/
|
|
20
|
-
export declare function getPlugins(options: LoaderOptions): Promise<Record<string, Plugin>>;
|
|
21
|
-
interface Unit {
|
|
22
|
-
type: 'plugin' | 'framework' | 'app';
|
|
23
|
-
path: string;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* @see https://github.com/eggjs/egg-core/blob/2920f6eade07959d25f5c4f96b154d3fbae877db/lib/loader/egg_loader.js#L348
|
|
27
|
-
*/
|
|
28
|
-
export declare function getLoadUnits(options: LoaderOptions): Promise<Unit[]>;
|
|
29
|
-
export declare function getConfig(options: LoaderOptions): Promise<Record<string, any>>;
|
|
30
|
-
export {};
|
package/dist/esm/plugin.js
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { debuglog } from 'node:util';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import assert from 'node:assert';
|
|
4
|
-
import os from 'node:os';
|
|
5
|
-
import { stat, mkdir, writeFile, realpath } from 'node:fs/promises';
|
|
6
|
-
import { importModule } from './import.js';
|
|
7
|
-
const debug = debuglog('@eggjs/utils/plugin');
|
|
8
|
-
const tmpDir = os.tmpdir();
|
|
9
|
-
function noop() { }
|
|
10
|
-
const logger = {
|
|
11
|
-
debug: noop,
|
|
12
|
-
info: noop,
|
|
13
|
-
warn: noop,
|
|
14
|
-
error: noop,
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* @see https://github.com/eggjs/egg-core/blob/2920f6eade07959d25f5c4f96b154d3fbae877db/lib/loader/mixin/plugin.js#L203
|
|
18
|
-
*/
|
|
19
|
-
export async function getPlugins(options) {
|
|
20
|
-
const loader = await getLoader(options);
|
|
21
|
-
await loader.loadPlugin();
|
|
22
|
-
return loader.allPlugins;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* @see https://github.com/eggjs/egg-core/blob/2920f6eade07959d25f5c4f96b154d3fbae877db/lib/loader/egg_loader.js#L348
|
|
26
|
-
*/
|
|
27
|
-
export async function getLoadUnits(options) {
|
|
28
|
-
const loader = await getLoader(options);
|
|
29
|
-
await loader.loadPlugin();
|
|
30
|
-
return loader.getLoadUnits();
|
|
31
|
-
}
|
|
32
|
-
export async function getConfig(options) {
|
|
33
|
-
const loader = await getLoader(options);
|
|
34
|
-
await loader.loadPlugin();
|
|
35
|
-
await loader.loadConfig();
|
|
36
|
-
return loader.config;
|
|
37
|
-
}
|
|
38
|
-
async function exists(filepath) {
|
|
39
|
-
try {
|
|
40
|
-
await stat(filepath);
|
|
41
|
-
return true;
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
return false;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
async function getLoader(options) {
|
|
48
|
-
assert(options.framework, 'framework is required');
|
|
49
|
-
assert(await exists(options.framework), `${options.framework} should exist`);
|
|
50
|
-
if (!(options.baseDir && await exists(options.baseDir))) {
|
|
51
|
-
options.baseDir = path.join(tmpDir, 'egg_utils', `${Date.now()}`, 'tmp_app');
|
|
52
|
-
await mkdir(options.baseDir, { recursive: true });
|
|
53
|
-
await writeFile(path.join(options.baseDir, 'package.json'), JSON.stringify({
|
|
54
|
-
name: 'tmp_app',
|
|
55
|
-
}));
|
|
56
|
-
debug('[getLoader] create baseDir: %o', options.baseDir);
|
|
57
|
-
}
|
|
58
|
-
const { EggCore, EggLoader } = await findEggCore(options);
|
|
59
|
-
const mod = await importModule(options.framework);
|
|
60
|
-
const Application = mod.Application ?? mod.default?.Application;
|
|
61
|
-
assert(Application, `Application not export on ${options.framework}`);
|
|
62
|
-
if (options.env) {
|
|
63
|
-
process.env.EGG_SERVER_ENV = options.env;
|
|
64
|
-
}
|
|
65
|
-
return new EggLoader({
|
|
66
|
-
baseDir: options.baseDir,
|
|
67
|
-
logger,
|
|
68
|
-
app: Object.create(Application.prototype),
|
|
69
|
-
EggCoreClass: EggCore,
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
async function findEggCore(options) {
|
|
73
|
-
const baseDirRealpath = await realpath(options.baseDir);
|
|
74
|
-
const frameworkRealpath = await realpath(options.framework);
|
|
75
|
-
const paths = [frameworkRealpath, baseDirRealpath];
|
|
76
|
-
// custom framework => egg => @eggjs/core
|
|
77
|
-
try {
|
|
78
|
-
const { EggCore, EggLoader } = await importModule('egg', { paths });
|
|
79
|
-
if (EggLoader) {
|
|
80
|
-
return { EggCore, EggLoader };
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
catch (err) {
|
|
84
|
-
debug('[findEggCore] import "egg" from paths:%o error: %o', paths, err);
|
|
85
|
-
}
|
|
86
|
-
// egg-core 在 6.2.3 版本中更名为 @eggjs/core,为兼容老版本,支持同时查找两个包,优先使用新名字
|
|
87
|
-
const names = ['@eggjs/core', 'egg-core'];
|
|
88
|
-
for (const name of names) {
|
|
89
|
-
try {
|
|
90
|
-
const { EggCore, EggLoader } = await importModule(name, { paths });
|
|
91
|
-
if (EggLoader) {
|
|
92
|
-
return { EggCore, EggLoader };
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
catch (err) {
|
|
96
|
-
debug('[findEggCore] import "%s" from paths:%o error: %o', name, paths, err);
|
|
97
|
-
}
|
|
98
|
-
try {
|
|
99
|
-
const { EggCore, EggLoader } = await importModule(name);
|
|
100
|
-
if (EggLoader) {
|
|
101
|
-
return { EggCore, EggLoader };
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
catch (err) {
|
|
105
|
-
debug('[findEggCore] import "%s" error: %o', name, err);
|
|
106
|
-
}
|
|
107
|
-
let eggCorePath = path.join(options.baseDir, `node_modules/${name}`);
|
|
108
|
-
if (!(await exists(eggCorePath))) {
|
|
109
|
-
eggCorePath = path.join(options.framework, `node_modules/${name}`);
|
|
110
|
-
}
|
|
111
|
-
if (await exists(eggCorePath)) {
|
|
112
|
-
return await importModule(eggCorePath);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
assert(false, `Can't find ${names.join(' or ')} from ${options.baseDir} and ${options.framework}`);
|
|
116
|
-
}
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBRTlDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUUzQixTQUFTLElBQUksS0FBSSxDQUFDO0FBRWxCLE1BQU0sTUFBTSxHQUFHO0lBQ2IsS0FBSyxFQUFFLElBQUk7SUFDWCxJQUFJLEVBQUUsSUFBSTtJQUNWLElBQUksRUFBRSxJQUFJO0lBQ1YsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBb0JGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVLENBQUMsT0FBc0I7SUFDckQsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsTUFBTSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDMUIsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDO0FBQzNCLENBQUM7QUFPRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsWUFBWSxDQUFDLE9BQXNCO0lBQ3ZELE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxDQUFDLFVBQVUsRUFBRSxD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
|
package/dist/esm/utils.d.ts
DELETED
package/dist/esm/utils.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
-
import { fileURLToPath } from 'node:url';
|
|
3
|
-
import path from 'node:path';
|
|
4
|
-
export function readJSONSync(file) {
|
|
5
|
-
if (!existsSync(file)) {
|
|
6
|
-
throw new Error(`${file} is not found`);
|
|
7
|
-
}
|
|
8
|
-
return JSON.parse(readFileSync(file, 'utf-8'));
|
|
9
|
-
}
|
|
10
|
-
export function getDirname() {
|
|
11
|
-
if (typeof __dirname !== 'undefined') {
|
|
12
|
-
return __dirname;
|
|
13
|
-
}
|
|
14
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
15
|
-
// @ts-ignore
|
|
16
|
-
return path.dirname(fileURLToPath(import.meta.url));
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFFN0IsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxlQUFlLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVU7SUFDeEIsSUFBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUNyQyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsNkRBQTZEO0lBQzdELGFBQWE7SUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0RCxDQUFDIn0=
|
package/dist/package.json
DELETED
package/src/deprecated.ts
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { existsSync, readdirSync } from 'node:fs';
|
|
3
|
-
import { readJSONSync } from './utils.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Try to get framework dir path
|
|
7
|
-
* If can't find any framework, try to find egg dir path
|
|
8
|
-
*
|
|
9
|
-
* @param {String} cwd - current work path
|
|
10
|
-
* @param {Array} [eggNames] - egg names, default is ['egg']
|
|
11
|
-
* @return {String} framework or egg dir path
|
|
12
|
-
* @deprecated
|
|
13
|
-
*/
|
|
14
|
-
export function getFrameworkOrEggPath(cwd: string, eggNames?: string[]): string {
|
|
15
|
-
eggNames = eggNames || [ 'egg' ];
|
|
16
|
-
const moduleDir = path.join(cwd, 'node_modules');
|
|
17
|
-
if (!existsSync(moduleDir)) {
|
|
18
|
-
return '';
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// try to get framework
|
|
22
|
-
|
|
23
|
-
// 1. try to read egg.framework property on package.json
|
|
24
|
-
const pkgFile = path.join(cwd, 'package.json');
|
|
25
|
-
if (existsSync(pkgFile)) {
|
|
26
|
-
const pkg = readJSONSync(pkgFile);
|
|
27
|
-
if (pkg.egg && pkg.egg.framework) {
|
|
28
|
-
return path.join(moduleDir, pkg.egg.framework);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// 2. try the module dependencies includes eggNames
|
|
33
|
-
const names = readdirSync(moduleDir);
|
|
34
|
-
for (const name of names) {
|
|
35
|
-
const pkgfile = path.join(moduleDir, name, 'package.json');
|
|
36
|
-
if (!existsSync(pkgfile)) {
|
|
37
|
-
continue;
|
|
38
|
-
}
|
|
39
|
-
const pkg = readJSONSync(pkgfile);
|
|
40
|
-
if (pkg.dependencies) {
|
|
41
|
-
for (const eggName of eggNames) {
|
|
42
|
-
if (pkg.dependencies[eggName]) {
|
|
43
|
-
return path.join(moduleDir, name);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// try to get egg
|
|
50
|
-
for (const eggName of eggNames) {
|
|
51
|
-
const pkgfile = path.join(moduleDir, eggName, 'package.json');
|
|
52
|
-
if (existsSync(pkgfile)) {
|
|
53
|
-
return path.join(moduleDir, eggName);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return '';
|
|
58
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export class ImportResolveError extends Error {
|
|
2
|
-
filepath: string;
|
|
3
|
-
paths: string[];
|
|
4
|
-
|
|
5
|
-
constructor(filepath: string, paths: string[], error: Error) {
|
|
6
|
-
const message = `${error.message}, paths: ${JSON.stringify(paths)}`;
|
|
7
|
-
super(message, { cause: error });
|
|
8
|
-
this.name = this.constructor.name;
|
|
9
|
-
this.filepath = filepath;
|
|
10
|
-
this.paths = paths;
|
|
11
|
-
Error.captureStackTrace(this, this.constructor);
|
|
12
|
-
}
|
|
13
|
-
}
|
package/src/error/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ImportResolveError.js';
|
package/src/framework.ts
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { debuglog } from 'node:util';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import assert from 'node:assert';
|
|
4
|
-
import { existsSync } from 'node:fs';
|
|
5
|
-
import { readJSONSync } from './utils.js';
|
|
6
|
-
import { importResolve } from './import.js';
|
|
7
|
-
|
|
8
|
-
const debug = debuglog('@eggjs/utils/framework');
|
|
9
|
-
|
|
10
|
-
const initCwd = process.cwd();
|
|
11
|
-
|
|
12
|
-
interface Options {
|
|
13
|
-
baseDir: string;
|
|
14
|
-
framework?: string;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Find the framework directory, lookup order
|
|
19
|
-
* - specify framework path
|
|
20
|
-
* - get framework name from
|
|
21
|
-
* - use egg by default
|
|
22
|
-
* @param {Object} options - options
|
|
23
|
-
* @param {String} options.baseDir - the current directory of application
|
|
24
|
-
* @param {String} [options.framework] - the directory of framework
|
|
25
|
-
* @return {String} frameworkPath
|
|
26
|
-
*/
|
|
27
|
-
export function getFrameworkPath(options: Options): string {
|
|
28
|
-
const { framework, baseDir } = options;
|
|
29
|
-
const pkgPath = path.join(baseDir, 'package.json');
|
|
30
|
-
assert(existsSync(pkgPath), `${pkgPath} should exist`);
|
|
31
|
-
const moduleDir = path.join(baseDir, 'node_modules');
|
|
32
|
-
|
|
33
|
-
// 1. pass framework or customEgg
|
|
34
|
-
if (framework) {
|
|
35
|
-
// 1.1 framework is an absolute path
|
|
36
|
-
// framework: path.join(baseDir, 'node_modules/${frameworkName}')
|
|
37
|
-
if (path.isAbsolute(framework)) {
|
|
38
|
-
assert(existsSync(framework), `${framework} should exist`);
|
|
39
|
-
return framework;
|
|
40
|
-
}
|
|
41
|
-
// 1.2 framework is a npm package that required by application
|
|
42
|
-
// framework: 'frameworkName'
|
|
43
|
-
return assertAndReturn(framework, moduleDir);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const pkg = readJSONSync(pkgPath);
|
|
47
|
-
// 2. framework is not specified
|
|
48
|
-
// 2.1 use framework name from pkg.egg.framework
|
|
49
|
-
if (pkg.egg?.framework) {
|
|
50
|
-
return assertAndReturn(pkg.egg.framework, moduleDir);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// 2.2 use egg by default
|
|
54
|
-
return assertAndReturn('egg', moduleDir);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function assertAndReturn(frameworkName: string, moduleDir: string) {
|
|
58
|
-
const moduleDirs = new Set([
|
|
59
|
-
moduleDir,
|
|
60
|
-
// find framework from process.cwd, especially for test,
|
|
61
|
-
// the application is in test/fixtures/app,
|
|
62
|
-
// and framework is install in ${cwd}/node_modules
|
|
63
|
-
path.join(process.cwd(), 'node_modules'),
|
|
64
|
-
// prevent from mocking process.cwd
|
|
65
|
-
path.join(initCwd, 'node_modules'),
|
|
66
|
-
]);
|
|
67
|
-
try {
|
|
68
|
-
// find framework from global, especially for monorepo
|
|
69
|
-
let globalModuleDir;
|
|
70
|
-
// if frameworkName is scoped package, like @ali/egg
|
|
71
|
-
if (frameworkName.startsWith('@') && frameworkName.includes('/')) {
|
|
72
|
-
globalModuleDir = path.join(
|
|
73
|
-
importResolve(`${frameworkName}/package.json`),
|
|
74
|
-
'../../..',
|
|
75
|
-
);
|
|
76
|
-
} else {
|
|
77
|
-
globalModuleDir = path.join(
|
|
78
|
-
importResolve(`${frameworkName}/package.json`),
|
|
79
|
-
'../..',
|
|
80
|
-
);
|
|
81
|
-
}
|
|
82
|
-
moduleDirs.add(globalModuleDir);
|
|
83
|
-
} catch (err) {
|
|
84
|
-
// ignore
|
|
85
|
-
debug('importResolve %s on %s error: %s', frameworkName, moduleDir, err);
|
|
86
|
-
}
|
|
87
|
-
for (const moduleDir of moduleDirs) {
|
|
88
|
-
const frameworkPath = path.join(moduleDir, frameworkName);
|
|
89
|
-
if (existsSync(frameworkPath)) return frameworkPath;
|
|
90
|
-
}
|
|
91
|
-
throw new Error(`${frameworkName} is not found in ${Array.from(moduleDirs)}`);
|
|
92
|
-
}
|