Files
2025-07-24 17:21:45 +08:00

25 lines
608 B
JavaScript

'use strict';
const path = require('path');
const resolveFrom = require('resolve-from');
module.exports = (moduleId, options = {}) => {
const parts = moduleId.replace(/\\/g, '/').split('/');
let packageName = '';
// Handle scoped package name
if (parts.length > 0 && parts[0][0] === '@') {
packageName += parts.shift() + '/';
}
packageName += parts.shift();
const packageJson = path.join(packageName, 'package.json');
const resolved = resolveFrom.silent(options.cwd || process.cwd(), packageJson);
if (!resolved) {
return;
}
return path.join(path.dirname(resolved), parts.join('/'));
};