@mui/internal-docs-infra
Version:
MUI Infra - internal documentation creation tools.
46 lines (42 loc) • 1.21 kB
JavaScript
export function externalsToPackages(externals) {
const packages = {};
externals.forEach(external => {
// Filter out path aliases that start with @/
if (external.startsWith('@/')) {
return;
}
// Extract package name from import path
const packageName = extractPackageName(external);
if (packageName) {
packages[packageName] = true;
}
});
return packages;
}
/**
* Extracts the package name from an import path.
* Examples:
* - 'react' -> 'react'
* - 'react-dom' -> 'react-dom'
* - '@mui/internal-docs-infra/CodeHighlighter' -> '@mui/internal-docs-infra'
* - '@mui/internal-docs-infra/pipeline/parseSource' -> '@mui/internal-docs-infra'
* - 'lodash/get' -> 'lodash'
* - 'some-package/submodule/deep' -> 'some-package'
*/
function extractPackageName(importPath) {
if (!importPath) {
return null;
}
// Handle scoped packages (starting with @)
if (importPath.startsWith('@')) {
const parts = importPath.split('/');
if (parts.length >= 2) {
// Return @scope/package-name
return `${parts[0]}/${parts[1]}`;
}
return null;
}
// Handle regular packages
const parts = importPath.split('/');
return parts[0] || null;
}