@bytedance/mona-shared
Version:
mona shared utils
72 lines • 2.59 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.readTypescriptFile = readTypescriptFile;
exports.readJavascriptFile = readJavascriptFile;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
function readTypescriptFile(filename) {
try {
require('@babel/register')({
presets: [
[require.resolve('@babel/preset-env'), { modules: 'commonjs' }],
require.resolve('@babel/preset-typescript'),
],
extensions: ['.ts', '.tsx'],
cache: false,
});
delete require.cache[require.resolve(filename)];
const config = require(filename).default || require(filename);
if (typeof config !== 'object') {
throw new Error('无效的配置文件');
}
return config;
}
catch (err) {
console.error(`读取配置文件失败,使用默认配置,请查看 ${filename} 是否正确`);
console.error(err.message);
return {};
}
}
function readJavascriptFile(filename) {
try {
require('@babel/register')({
presets: [[require.resolve('@babel/preset-env'), { modules: 'commonjs' }]],
extensions: ['.js', 'jsx'],
cache: false,
});
delete require.cache[require.resolve(filename)];
const config = require(filename).default || require(filename);
if (typeof config !== 'object') {
throw new Error('无效的配置文件');
}
return config;
}
catch (err) {
console.error(`读取配置文件失败,使用默认配置,请查看 ${filename} 是否正确`);
console.error(err.message);
return {};
}
}
function readConfig(filename) {
let cookedFilename = filename;
const rawExt = path_1.default.extname(filename);
if (['ts', 'js'].indexOf(rawExt) === -1) {
for (const ext of ['ts', 'js']) {
if (fs_1.default.existsSync(`${filename}.${ext}`)) {
cookedFilename = `${filename}.${ext}`;
break;
}
}
}
if (!fs_1.default.existsSync(cookedFilename)) {
return {};
}
return path_1.default.extname(cookedFilename) === '.ts'
? readTypescriptFile(cookedFilename)
: readJavascriptFile(cookedFilename);
}
exports.default = readConfig;
//# sourceMappingURL=readConfig.js.map
;