Files
payload/src/config/load.ts

51 lines
1.3 KiB
TypeScript

/* eslint-disable import/no-dynamic-require */
/* eslint-disable global-require */
import path from 'path';
import { SanitizedConfig } from './types';
import findConfig from './find';
import validate from './validate';
import babelConfig from '../babel.config';
const removedExtensions = ['.scss', '.css', '.svg', '.png', '.jpg', '.eot', '.ttf', '.woff', '.woff2'];
const loadConfig = (): SanitizedConfig => {
const configPath = findConfig();
removedExtensions.forEach((ext) => {
require.extensions[ext] = () => null;
});
// eslint-disable-next-line @typescript-eslint/no-var-requires
require('@babel/register')({
...babelConfig,
extensions: ['.ts', '.tsx', '.js', '.jsx'],
env: {
development: {
sourceMaps: 'inline',
retainLines: true,
},
},
ignore: [
/node_modules[\\/](?!payload[\\/]dist[\\/]admin|payload[\\/]components).*/,
],
});
// eslint-disable-next-line @typescript-eslint/no-var-requires
let config = require(configPath);
if (config.default) config = config.default;
const validatedConfig = validate(config);
return {
...validatedConfig,
paths: {
...(validatedConfig.paths || {}),
configDir: path.dirname(configPath),
config: configPath,
},
};
};
export default loadConfig;