beesbuild
Version:
构建工具链
97 lines (96 loc) • 2.88 kB
JavaScript
import { consola, getBuildConfig } from "@beesbuild/utils";
import { resolveModuleExportNames } from "mlly";
import { isPlainObject, isString, omit } from "lodash-unified";
import { DEFAULT_EXTENSIONS } from "./variables.mjs";
function pathRewriter(ctx, module) {
var _a;
const manifest = ctx.pkg;
const config = (_a = getBuildConfig({
rootDir: ctx.options.rootDir,
outDir: ctx.options.outDir,
rollup: ctx.options.rollup,
manifest
}).find((v) => v[0] === module)) == null ? void 0 : _a.at(1);
return (id) => {
id = id.replaceAll(`${manifest.name}/theme-chalk`, `${ctx.options.name}/theme-chalk`);
id = id.replaceAll(`${manifest.name}/`, `${config == null ? void 0 : config.bundle.path}/`);
return id;
};
}
function arrayIncludes(arr, searchElement) {
return arr.some(
(entry) => entry instanceof RegExp ? entry.test(searchElement) : entry === searchElement
);
}
function getpkg(id = "") {
const s = id.split("/");
return s[0][0] === "@" ? `${s[0]}/${s[1]}` : s[0];
}
function resolveAliases(ctx, flag = true) {
var _a;
const rollup = ctx.options.rollup;
const pkg = ctx.pkg;
const rollupAlias = rollup.alias;
const replaceAlias = (_a = ctx.options.replace) == null ? void 0 : _a.alias;
const alias = ctx.options.alias;
const aliases1 = {};
const aliases = [];
if (pkg.name) {
aliases.push({
find: pkg.name,
replacement: ctx.options.rootDir
});
}
function plusAlias(alias2) {
if (alias2 && isPlainObject(alias2)) {
for (const [find, replacement] of Object.entries(alias2)) {
if (isString(replacement)) {
aliases.push({
find,
replacement
});
if (isString(find)) aliases1[find] = replacement;
}
}
} else if (Array.isArray(alias2)) {
for (const value of alias2) {
const { find, replacement } = value;
if (isString(replacement)) {
aliases.push(value);
if (isString(find)) {
aliases1[find] = replacement;
}
}
}
}
}
plusAlias(alias);
plusAlias(replaceAlias);
if (rollupAlias && isPlainObject(rollupAlias)) {
plusAlias(omit(rollupAlias != null ? rollupAlias : {}, "entries", "customResolver"));
plusAlias(rollupAlias.entries);
}
if (flag) {
return aliases1;
}
return aliases.reverse();
}
const hasDefaultExport = async (resolvedEntry) => {
if (resolvedEntry) {
const namedExports = await resolveModuleExportNames(resolvedEntry, {
extensions: DEFAULT_EXTENSIONS
}).catch((error) => {
consola.warn(`Cannot analyze ${resolvedEntry} for exports:${error}`);
return [];
});
return namedExports.includes("default") || namedExports.length === 0;
}
return false;
};
export {
arrayIncludes,
getpkg,
hasDefaultExport,
pathRewriter,
resolveAliases
};