@intlayer/config
Version:
Retrieve Intlayer configurations and manage environment variables for both server-side and client-side environments.
51 lines (49 loc) • 1.51 kB
JavaScript
import { getPackageJsonPath } from "../utils/getPackageJsonPath.mjs";
import { logger } from "../logger.mjs";
import { existsSync } from "node:fs";
import { resolve } from "node:path";
//#region src/configFile/searchConfigurationFile.ts
const configurationFilesCandidates = [
"intlayer.config.ts",
"intlayer.config.js",
"intlayer.config.json",
"intlayer.config.json5",
"intlayer.config.jsonc",
"intlayer.config.cjs",
"intlayer.config.mjs",
".intlayerrc"
];
const rootPathCache = /* @__PURE__ */ new Map();
/**
* Search for the configuration file in the given path
*
* List of detected configuration files:
* - intlayer.config.ts
* - intlayer.config.js
* - intlayer.config.json
* - intlayer.config.cjs
* - intlayer.config.mjs
* - .intlayerrc
*/
const searchConfigurationFile = (startDir) => {
let configurationFilePath;
let numCustomConfiguration = 0;
if (rootPathCache.has(startDir)) return rootPathCache.get(startDir);
const { baseDir } = getPackageJsonPath(startDir);
for (const fileName of configurationFilesCandidates) try {
const filePath = resolve(baseDir, fileName);
if (!existsSync(filePath)) {} else {
numCustomConfiguration += 1;
if (!configurationFilePath) configurationFilePath = filePath;
}
} catch (error) {
logger(`${fileName}: ${error}`, { level: "error" });
}
return {
configurationFilePath,
numCustomConfiguration
};
};
//#endregion
export { configurationFilesCandidates, searchConfigurationFile };
//# sourceMappingURL=searchConfigurationFile.mjs.map