knip
Version:
Find and fix unused dependencies, exports and files in your TypeScript and JavaScript projects
51 lines (50 loc) • 1.73 kB
JavaScript
import { toProductionEntry } from '../../util/input.js';
import { hasDependency } from '../../util/plugin.js';
const title = 'Rsbuild';
const enablers = ['@rsbuild/core'];
const isEnabled = ({ dependencies }) => hasDependency(dependencies, enablers);
const config = ['rsbuild*.config.{mjs,ts,js,cjs,mts,cts}'];
const resolveConfig = async (config) => {
const entries = new Set();
const checkSource = (source) => {
if (source?.entry) {
for (const entry of Object.values(source.entry)) {
if (typeof entry === 'string')
entries.add(entry);
else if (Array.isArray(entry))
for (const e of entry)
entries.add(e);
else {
if (typeof entry.import === 'string')
entries.add(entry.import);
else if (Array.isArray(entry.import))
for (const e of entry.import)
entries.add(e);
}
}
}
if (source?.preEntry) {
const entry = source.preEntry;
if (typeof entry === 'string')
entries.add(entry);
else if (Array.isArray(entry))
for (const e of entry)
entries.add(e);
}
};
checkSource(config.source);
if (config.environments) {
for (const environment of Object.values(config.environments)) {
checkSource(environment.source);
}
}
return Array.from(entries).map(input => toProductionEntry(input));
};
const plugin = {
title,
enablers,
isEnabled,
config,
resolveConfig,
};
export default plugin;