UNPKG

knip

Version:

Find and fix unused dependencies, exports and files in your TypeScript and JavaScript projects

46 lines (45 loc) 1.67 kB
import { existsSync } from 'node:fs'; import os from 'node:os'; import { toEntry } from '../../util/input.js'; import { join } from '../../util/path.js'; import { hasDependency, load } from '../../util/plugin.js'; import vite from '../vite/index.js'; const isWindows = os.platform() === 'win32'; const title = 'React Router'; const enablers = ['@react-router/dev']; const isEnabled = ({ dependencies }) => hasDependency(dependencies, enablers); const config = ['react-router.config.{js,ts}', ...vite.config]; const resolveConfig = async (localConfig, options) => { const { configFileDir } = options; const appDirectory = localConfig.appDirectory ?? 'app'; const appDir = join(configFileDir, appDirectory); globalThis.__reactRouterAppDirectory = appDir; let routeConfig = []; const routesPathTs = join(appDir, 'routes.ts'); const routesPathJs = join(appDir, 'routes.js'); if (existsSync(routesPathTs)) { routeConfig = await load(routesPathTs); } else if (existsSync(routesPathJs)) { routeConfig = await load(routesPathJs); } const mapRoute = (route) => { return [join(appDir, route.file), ...(route.children ? route.children.flatMap(mapRoute) : [])]; }; const routes = routeConfig .flatMap(mapRoute) .map(route => (isWindows ? route : route.replace(/[$^*+?()\[\]]/g, '\\$&'))); return [ join(appDir, 'routes.{js,ts}'), join(appDir, 'root.{jsx,tsx}'), join(appDir, 'entry.{client,server}.{js,jsx,ts,tsx}'), ...routes, ].map(id => toEntry(id)); }; export default { title, enablers, isEnabled, config, resolveConfig, };