@elora-cloud/elora-cli
Version:
elora build cli 前端打包脚手架
28 lines (25 loc) • 968 B
JavaScript
import { createRequire } from 'node:module';
const require = createRequire(import.meta.url);
function getPackageManifest(pkgPath) {
return require(pkgPath);
}
function getPackageDependencies(pkgPath) {
const manifest = getPackageManifest(pkgPath);
const { dependencies = {}, peerDependencies = {} } = manifest;
return {
dependencies: Object.keys(dependencies),
peerDependencies: Object.keys(peerDependencies),
};
}
function generateExternal(options = { full: false, packagePath: '../package.json' }) {
const { packagePath = './package.json' } = options;
const { dependencies, peerDependencies } = getPackageDependencies(packagePath);
return (id) => {
const packages = [...peerDependencies];
if (options.full) {
packages.push('@vue', ...dependencies);
}
return [...new Set(packages)].some(pkg => id === pkg || id.startsWith(`${pkg}/`));
};
}
export { generateExternal };