@yumerijs/loader 1.0.11 → 1.1.0-alpha.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/dist/index.d.ts +9 -21
- package/dist/index.js +29 -11
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import { Core, Config } from '@yumerijs/core';
|
|
1
|
+
import { Core, Config, Logger } from '@yumerijs/core';
|
|
2
2
|
interface Plugin {
|
|
3
3
|
apply: (core: Core, config: Config) => Promise<void>;
|
|
4
4
|
disable: (core: Core) => Promise<void>;
|
|
5
5
|
depend: Array<string>;
|
|
6
6
|
provide: Array<string>;
|
|
7
7
|
}
|
|
8
|
+
interface PluginLoader {
|
|
9
|
+
load(pluginName: string): Promise<Plugin>;
|
|
10
|
+
unloadPlugin(pluginName: string): Promise<void>;
|
|
11
|
+
checkPluginDependencies(pluginPath: string): Promise<boolean>;
|
|
12
|
+
installPluginDependencies(pluginName: string): Promise<void>;
|
|
13
|
+
logger: Logger;
|
|
14
|
+
}
|
|
8
15
|
declare class PluginLoader {
|
|
9
16
|
private pluginCache;
|
|
10
17
|
private core;
|
|
11
18
|
private config;
|
|
12
19
|
private isDev;
|
|
13
20
|
private pluginsDir;
|
|
14
|
-
|
|
21
|
+
logger: Logger;
|
|
15
22
|
constructor(core?: Core, config?: Config, pluginsDir?: string);
|
|
16
23
|
setCoreAndConfig(core: Core, config: Config): void;
|
|
17
|
-
/**
|
|
18
|
-
* 从本地目录或 npm 包加载插件.
|
|
19
|
-
* @param pluginName 插件名称或路径.
|
|
20
|
-
* @returns 加载的插件对象.
|
|
21
|
-
* @throws 如果插件加载失败.
|
|
22
|
-
*/
|
|
23
|
-
load(pluginName: string): Promise<Plugin>;
|
|
24
24
|
/**
|
|
25
25
|
* 从指定路径加载插件.
|
|
26
26
|
* @param pluginPath 插件路径.
|
|
@@ -29,17 +29,5 @@ declare class PluginLoader {
|
|
|
29
29
|
* @throws 如果插件加载失败.
|
|
30
30
|
*/
|
|
31
31
|
private loadPluginFromPath;
|
|
32
|
-
unloadPlugin(pluginName: string): Promise<void>;
|
|
33
|
-
/**
|
|
34
|
-
* 检查插件的依赖是否满足.
|
|
35
|
-
* @param pluginPath 插件路径.
|
|
36
|
-
* @returns 如果依赖满足,则返回 true,否则返回 false.
|
|
37
|
-
*/
|
|
38
|
-
checkPluginDependencies(pluginPath: string): Promise<boolean>;
|
|
39
|
-
/**
|
|
40
|
-
* 安装插件的依赖.
|
|
41
|
-
* @param pluginPath 插件路径.
|
|
42
|
-
*/
|
|
43
|
-
installPluginDependencies(pluginName: string): Promise<void>;
|
|
44
32
|
}
|
|
45
33
|
export default PluginLoader;
|
package/dist/index.js
CHANGED
|
@@ -39,7 +39,6 @@ const fs = __importStar(require("fs"));
|
|
|
39
39
|
const util_1 = require("util");
|
|
40
40
|
const child_process_1 = require("child_process");
|
|
41
41
|
const tsNode = __importStar(require("ts-node"));
|
|
42
|
-
const url_1 = require("url");
|
|
43
42
|
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
44
43
|
class PluginLoader {
|
|
45
44
|
constructor(core, config, pluginsDir = 'plugins') {
|
|
@@ -134,17 +133,27 @@ class PluginLoader {
|
|
|
134
133
|
// 开发模式下,加载 src 目录下的 ts 文件
|
|
135
134
|
jsonPath = path.join(pluginPath, 'package.json');
|
|
136
135
|
let jsoncontent = fs.readFileSync(jsonPath, 'utf-8');
|
|
137
|
-
|
|
136
|
+
targetPath = path.join(pluginPath, JSON.parse(jsoncontent).dev);
|
|
138
137
|
if (!fs.existsSync(targetPath)) {
|
|
139
138
|
throw new Error(`devfile not found in ${pluginPath}`);
|
|
140
139
|
}
|
|
141
140
|
// 检查目标文件是否是 TypeScript 文件
|
|
142
141
|
if (targetPath.endsWith('.ts')) {
|
|
143
|
-
//
|
|
142
|
+
// 清除该文件的缓存,确保获取最新版本
|
|
143
|
+
const resolvedPath = require.resolve(targetPath);
|
|
144
|
+
if (require.cache[resolvedPath]) {
|
|
145
|
+
delete require.cache[resolvedPath];
|
|
146
|
+
}
|
|
147
|
+
// 使用 ts-node 重新编译并加载 TypeScript 模块
|
|
144
148
|
const module = require(targetPath);
|
|
145
149
|
return module;
|
|
146
150
|
}
|
|
147
151
|
else {
|
|
152
|
+
// 清除该文件的缓存,确保获取最新版本
|
|
153
|
+
const resolvedPath = require.resolve(targetPath);
|
|
154
|
+
if (require.cache[resolvedPath]) {
|
|
155
|
+
delete require.cache[resolvedPath];
|
|
156
|
+
}
|
|
148
157
|
// 使用 require 加载 js 模块
|
|
149
158
|
const module = require(targetPath);
|
|
150
159
|
return module;
|
|
@@ -152,8 +161,12 @@ class PluginLoader {
|
|
|
152
161
|
}
|
|
153
162
|
else {
|
|
154
163
|
targetPath = require.resolve(pluginPath);
|
|
164
|
+
// 清除该文件的缓存,确保获取最新版本
|
|
165
|
+
if (require.cache[targetPath]) {
|
|
166
|
+
delete require.cache[targetPath];
|
|
167
|
+
}
|
|
155
168
|
}
|
|
156
|
-
|
|
169
|
+
// 使用require加载
|
|
157
170
|
const pluginModule = require(targetPath);
|
|
158
171
|
return pluginModule;
|
|
159
172
|
}
|
|
@@ -162,7 +175,7 @@ class PluginLoader {
|
|
|
162
175
|
throw e;
|
|
163
176
|
}
|
|
164
177
|
}
|
|
165
|
-
|
|
178
|
+
/**
|
|
166
179
|
* 卸载插件
|
|
167
180
|
* @param pluginName 插件名称
|
|
168
181
|
*/
|
|
@@ -171,13 +184,18 @@ class PluginLoader {
|
|
|
171
184
|
return; // Plugin not loaded
|
|
172
185
|
}
|
|
173
186
|
delete this.pluginCache[pluginName];
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
187
|
+
try {
|
|
188
|
+
// 清除插件相关的所有模块缓存
|
|
189
|
+
Object.keys(require.cache).forEach(key => {
|
|
190
|
+
if (key.includes(pluginName)) {
|
|
191
|
+
delete require.cache[key];
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
this.logger.info(`Plugin unloaded: ${pluginName}`);
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
this.logger.error(`Error unloading plugin ${pluginName}:`, error);
|
|
179
198
|
}
|
|
180
|
-
this.logger.info(`Plugin unloaded: ${pluginName}`);
|
|
181
199
|
}
|
|
182
200
|
/**
|
|
183
201
|
* 检查插件的依赖是否满足.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAC7B,yCAAsD;AACtD,uCAAyB;AACzB,+BAAiC;AACjC,iDAAqC;AAErC,gDAAkC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yumerijs/loader",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.1.0-alpha.2",
|
|
4
4
|
"description": "Module loader for yumeri",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
],
|
|
10
10
|
"scripts": {
|
|
11
11
|
"build": "tsc",
|
|
12
|
-
"prepublishOnly": "
|
|
12
|
+
"prepublishOnly": "yarn build"
|
|
13
13
|
},
|
|
14
14
|
"repository": {
|
|
15
15
|
"type": "git",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"typescript": "^5.8.2"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@yumerijs/core": "
|
|
34
|
+
"@yumerijs/core": "1.1.0-alpha.2",
|
|
35
35
|
"chokidar": "^4.0.3",
|
|
36
36
|
"semver": "^7.7.1",
|
|
37
37
|
"ts-node": "^10.9.2"
|