UNPKG

@bytedance/mona-shared

Version:

mona shared utils

72 lines 2.59 kB
"use strict"; 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