UNPKG

@intlayer/chokidar

Version:

Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.

54 lines (52 loc) 1.61 kB
import { readFile } from "node:fs/promises"; import { join } from "node:path"; import { getProjectRequire } from "@intlayer/config/utils"; import { bundleFile } from "@intlayer/config/file"; import { builtinModules } from "node:module"; //#region src/loadDictionaries/getIntlayerBundle.ts /** * Rewrites bare specifiers to absolute paths on the user's disk and externalizes them * to preserve directory context (__dirname/import.meta.url). */ const localResolvePlugin = (aliases, rootRequire) => { return { name: "local-resolve", setup(build) { build.onResolve({ filter: /.*/ }, (args) => { if (aliases[args.path]) return { path: aliases[args.path], external: true }; if (args.path === "defu" || args.path.startsWith("@intlayer/")) try { return { path: rootRequire.resolve(args.path), external: true }; } catch { return null; } return null; }); } }; }; const getIntlayerBundle = async (configuration) => { const rootRequire = getProjectRequire(configuration.system.baseDir); const aliases = { "@intlayer/config/built": join(configuration.system.configDir, `configuration.cjs`) }; const filePath = rootRequire.resolve("intlayer"); return await bundleFile(await readFile(filePath, "utf-8"), filePath, { bundle: true, platform: "node", external: [ ...builtinModules, ...builtinModules.map((mod) => `node:${mod}`), "vscode", "esbuild" ], minify: true, plugins: [localResolvePlugin(aliases, rootRequire)] }) ?? ""; }; //#endregion export { getIntlayerBundle }; //# sourceMappingURL=getIntlayerBundle.mjs.map