UNPKG

beesbuild

Version:

构建工具链

89 lines (88 loc) 3.06 kB
import path from "path"; import glob from "fast-glob"; import { consola, pathExtra } from "@beesbuild/utils"; import { isString, sortBy } from "lodash-unified"; import { defu } from "defu"; import { BUILD_CACHE_DIR, EXCLUDE_FILES } from "../variables.mjs"; const FILE_EXT = ["js", "ts", "mjs", "cjs", "jsx", "vue"]; const handleBuildFiles = (ctx, options) => { var _a; let prefix = typeof (options == null ? void 0 : options.filePrefix) === "string" ? options == null ? void 0 : options.filePrefix : "src/"; if (!prefix.endsWith("/")) { prefix = path.join(prefix, "/"); } let fileExt = [...FILE_EXT]; if (isString(options == null ? void 0 : options.ext)) { fileExt.push(...options.ext.split(",")); fileExt = fileExt.filter((value) => isString(value) && Boolean(value.trim())); } const rootDir = ctx.options.rootDir; const ext = fileExt.length > 0 ? `.{${fileExt.join(",")}}` : ""; const source = [`${pathExtra.join(prefix)}/**/*${ext}`].concat(EXCLUDE_FILES); if (fileExt.length > 0) source.push(`index${ext}`); ((_a = ctx.argv) == null ? void 0 : _a.debug) && consola.info(source, "source"); const files = sortBy( glob.sync(source, { cwd: ctx.options.rootDir, absolute: true, onlyFiles: true }).filter(Boolean), (dir) => dir.split("/").length ); const entryFiles = fileExt.map((ext2) => `index.${ext2}`).concat(fileExt.map((ext2) => path.join("src", `index.${ext2}`))).map((str) => path.resolve(rootDir, ".", str)); const fIndex = files.findIndex((dir) => entryFiles.includes(dir)); if (fIndex > -1) { const entryFile = files[fIndex]; files.splice(fIndex, 1, { input: entryFile, isEntry: true }); } return files; }; function handleTypeOption(ctx) { const rootDir = ctx.options.rootDir; const output = { path: path.resolve(rootDir, "types"), name: "types" }; const tsconfigPath = path.resolve(rootDir, "tsconfig.json"); const typesCacheDir = path.resolve(rootDir, ".", BUILD_CACHE_DIR, output.name); const entries = ctx.options.entries; const entryFile = entries.find(({ isEntry }) => isEntry); const entryFilepath = (entryFile == null ? void 0 : entryFile.input) && path.resolve(rootDir, ".", entryFile.input); let outRootDir = path.resolve(rootDir, "src"); const noSrcFiles = entries.find(({ input }) => !input.startsWith(outRootDir)); if (noSrcFiles) outRootDir = path.join(rootDir); const isVue = false; const compilerOptions = defu({ emitDeclarationOnly: true, preserveSymlinks: true, skipLibCheck: true, noImplicitAny: false, verbatimModuleSyntax: true, forceConsistentCasingInFileNames: true, disableSizeLimit: true, maxNodeModuleJsDepth: 100, rootDir, // rootDir: outRootDir, declarationDir: typesCacheDir }); return { isVue, outRootDir, typesCacheDir, entryFilepath, compilerOptions, tsconfigPath, tsConfigFilePath: tsconfigPath, rootDir, entries, output }; } export { FILE_EXT, handleBuildFiles, handleTypeOption };