@haensl/rollup-plugin-local-resolve
Version:
Rollup plugin to resolve relative imports from local folders without stating the index file
44 lines (37 loc) • 1.03 kB
JavaScript
const stat = require('fs').stat;
const path = require('path');
const resolve = () => ({
name: '@haensl/rollup-plugin-local-resolve',
resolveId: (importee, importer) => {
if (path.isAbsolute(importee)
|| /\0/.test(importee)) {
return Promise.resolve(null);
}
if (!importer) {
return Promise.resolve(null);
}
const importerDir = path.dirname(importer);
const pathsToTry = [ '.js', '.jsx' ]
.map((ext) => path.join(importerDir, importee, `index${ext}`));
return Promise.all(
pathsToTry.map((p) =>
new Promise((resolve) => {
stat(p, (err, stats) => {
if (err || !stats.isFile()) {
resolve(null);
}
resolve(p);
});
})
)
)
.then((paths) => paths.filter((p) => p !== null))
.then((paths) => {
if (paths.length > 1) {
throw new Error('Found multiple matching paths!', paths);
}
return paths[0];
});
}
});
module.exports = resolve;