esm-requirer
Version:
* use import instead of require
49 lines • 1.52 kB
JavaScript
import _ from 'lodash';
import { createSimport } from 'simport';
import { createRequire } from 'module';
import path from 'path';
const simport = createSimport(import.meta.url);
const req = createRequire(import.meta.url);
export async function requiresTrySimport(opts) {
const { modulesPaths = [], flat = false } = opts;
if (!modulesPaths?.length) {
return [];
}
const requireResults = [];
const errors = [];
for (const modulePath of modulesPaths) {
try {
if (typeof modulePath !== 'string') {
continue;
}
if (modulePath.endsWith('.json')) {
requireResults.push(req(modulePath));
continue;
}
const module = await simport(modulePath);
requireResults.push(module.default);
}
catch (error) {
errors.push({ modulePath, error });
}
}
if (flat) {
return _.flattenDeep(requireResults);
}
return requireResults;
}
export async function reTryCatch({ fn, title, defaultValue }) {
try {
return { result: await fn() };
}
catch (e) {
return { result: defaultValue, error: `'${title}':\nERR: ${e}` };
}
}
export async function getPackageJson(appPath) {
const packageJson = (await requiresTrySimport({
modulesPaths: [path.join(appPath, 'package.json')]
}))[0];
return packageJson;
}
//# sourceMappingURL=index.js.map