@modern-js/utils
Version:
A Progressive React Framework for modern web development.
33 lines (32 loc) • 1.13 kB
JavaScript
import "node:module";
import fs from "fs";
import path from "path";
import { applyOptionsChain } from "./applyOptionsChain.mjs";
import { readTsConfigByFile } from "./get/index.mjs";
const mergeAlias = (alias)=>applyOptionsChain({}, alias);
const getAliasConfig = (aliasOption, option)=>{
const isTsProject = fs.existsSync(option.tsconfigPath);
const alias = mergeAlias(aliasOption);
if (!isTsProject) return {
absoluteBaseUrl: option.appDirectory,
paths: alias,
isTsPath: false,
isTsProject
};
const tsconfig = readTsConfigByFile(option.tsconfigPath);
const baseUrl = tsconfig?.compilerOptions?.baseUrl;
return {
absoluteBaseUrl: baseUrl ? path.join(option.appDirectory, baseUrl) : option.appDirectory,
paths: {
...alias,
...tsconfig?.compilerOptions?.paths
},
isTsPath: true,
isTsProject
};
};
const getUserAlias = (alias = {})=>Object.keys(alias).reduce((o, k)=>{
if (Array.isArray(alias[k])) o[k] = alias[k];
return o;
}, {});
export { getAliasConfig, getUserAlias, mergeAlias };