putout
Version:
🐊 Pluggable and configurable code transformer with built-in ESLint, Babel and support of js, jsx, typescript, flow, markdown, yaml and json
65 lines (54 loc) • 1.44 kB
JavaScript
import process from 'node:process';
import {join, dirname} from 'node:path';
import {createRequire} from 'node:module';
import buildPlugins from './build-plugins.js';
import {parseOptions as _parseOptions} from '../parse-options/index.js';
const require = createRequire(import.meta.url);
const {assign} = Object;
const {env} = process;
const getMaybeConfig = () => {
const config = {
plugins: [],
};
const {PUTOUT_CONFIG_FILE} = env;
PUTOUT_CONFIG_FILE && assign(config, require(join(
process.cwd(),
PUTOUT_CONFIG_FILE,
)));
return config;
};
export default (overrides = {}) => {
const {
noConfig,
plugins = [],
name,
transform,
rulesdir,
parseOptions = _parseOptions,
} = overrides;
const transformPlugins = buildPlugins(transform);
const maybeConfig = getMaybeConfig();
if (noConfig)
return {
...maybeConfig,
dir: dirname(name),
plugins: [
...plugins,
...transformPlugins,
...maybeConfig.plugins,
],
};
const result = parseOptions({
name,
rulesdir,
});
return {
...result,
...maybeConfig,
plugins: [
...result.plugins,
...transformPlugins,
...maybeConfig.plugins,
],
};
};