@speedy-js/config-loader
Version:
An out-of-box config loader with TypeScript support.
67 lines • 2.41 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadConfig = void 0;
/**
* Module dependencies
*/
const fs = __importStar(require("fs"));
const path = __importStar(require("path"));
const bundle_require_1 = require("./bundle-require");
async function loadConfig(opts) {
const { cwd = process.cwd(), configKey, configFile, configSuffix = 'config', esbuildOptions = {}, } = opts;
const files = Array.isArray(configFile)
? configFile
: typeof configFile === 'string'
? [configFile]
: [
`${configKey}.${configSuffix}.ts`,
`${configKey}.${configSuffix}.js`,
`.${configKey}rc.ts`,
`.${configKey}rc.js`,
];
for (const file of files) {
const filepath = path.resolve(cwd, file);
if (fs.existsSync(filepath)) {
const m = await (0, bundle_require_1.bundleRequire)({
filepath,
preserveTemporaryFile: opts.preserveTemporaryFile,
getOutputFile: opts.getOutputFile,
esbuildOptions: {
bundle: false,
...esbuildOptions,
target: 'node12',
},
});
const data = m.default || m;
return {
path: filepath,
data,
};
}
}
return {
path: null,
data: {},
};
}
exports.loadConfig = loadConfig;
//# sourceMappingURL=index.js.map