piral-cli
Version:
The standard CLI for creating and building a Piral instance or a Pilet.
30 lines (23 loc) • 882 B
text/typescript
import * as fs from 'graceful-fs';
import { ResolverFactory, CachedInputFileSystem } from 'enhanced-resolve';
const nodeFileSystem = new CachedInputFileSystem(fs, 100);
const nodeContext = {
environments: ['node+es3+es5+process+native'],
};
const enhancedResolve = ResolverFactory.createResolver({
aliasFields: ['browser'],
conditionNames: ['import', 'module', 'webpack', 'development', 'browser'],
extensions: ['.js', '.jsx', '.mjs', '.ts', '.tsx', '.json'],
exportsFields: ['exports'],
importsFields: ['imports'],
mainFields: ['browser', 'module', 'main'],
useSyncFileSystemCalls: true,
fileSystem: nodeFileSystem,
});
export function getModulePath(root: string, moduleName: string) {
const res = enhancedResolve.resolveSync(nodeContext, root, moduleName);
if (!res) {
throw new Error(`Could not find module "${moduleName}".`);
}
return res;
}