同步小程序与管理端更新,完善抽烟记录和解绑冷静期
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
const fs = require('node:fs');
|
||||
const vm = require('node:vm');
|
||||
const path = require('node:path');
|
||||
module.exports = function createLoader(globals, mocks = {}) {
|
||||
const modules = new Map();
|
||||
function load(file) {
|
||||
file = path.resolve(file);
|
||||
if (modules.has(file)) return modules.get(file).exports;
|
||||
const module = { exports: {} };
|
||||
modules.set(file, module);
|
||||
vm.runInNewContext(fs.readFileSync(file, 'utf8'), {
|
||||
...globals, module, exports: module.exports,
|
||||
require(name) {
|
||||
if (mocks[name]) return mocks[name];
|
||||
if (!name.startsWith('.')) return require(name);
|
||||
const resolved = path.resolve(path.dirname(file), name);
|
||||
return load(path.extname(resolved) ? resolved : resolved + '.js');
|
||||
}
|
||||
}, { filename: file });
|
||||
return module.exports;
|
||||
}
|
||||
return load;
|
||||
};
|
||||
Reference in New Issue
Block a user