UNPKG

knip

Version:

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

58 lines (57 loc) 2.51 kB
import { DEFAULT_EXTENSIONS } from '../../constants.js'; import { isDirectory } from '../../util/fs.js'; import { toDeferResolve, toProductionEntry } from '../../util/input.js'; import { isInNodeModules, join } from '../../util/path.js'; import { hasDependency } from '../../util/plugin.js'; import { DummyEleventyConfig, defaultEleventyConfig } from './helpers.js'; const title = 'Eleventy'; const enablers = ['@11ty/eleventy']; const isEnabled = ({ dependencies }) => hasDependency(dependencies, enablers); const config = ['.eleventy.js', 'eleventy.config.{js,cjs,mjs}']; const production = ['posts/**/*.11tydata.js', '_data/**/*.{js,cjs,mjs}']; const resolveEntryPaths = async (localConfig, options) => { const { configFileDir } = options; const dummyUserConfig = new DummyEleventyConfig(); if (typeof localConfig === 'function') localConfig = await localConfig(dummyUserConfig); const inputDir = localConfig?.dir?.input || defaultEleventyConfig.dir.input; const dataDir = localConfig?.dir?.data || defaultEleventyConfig.dir.data; const templateFormats = localConfig.templateFormats || defaultEleventyConfig.templateFormats; const exts = DEFAULT_EXTENSIONS.map(extname => extname.slice(1)).join(','); const copiedEntries = new Set(); for (const path of Object.keys(dummyUserConfig.passthroughCopies)) { const isDir = !path.includes('*') && isDirectory(join(configFileDir, path)); if (isDir) { copiedEntries.add(join(path, `**/*.{${exts}}`)); } else if (!isInNodeModules(path)) { copiedEntries.add(path); } } return [ join(inputDir, dataDir, '**/*.{js,cjs,mjs}'), join(inputDir, `**/*.{${typeof templateFormats === 'string' ? templateFormats : templateFormats.join(',')}}`), join(inputDir, '**/*.11tydata.js'), ...copiedEntries, ].map(id => toProductionEntry(id)); }; const resolveConfig = async (localConfig) => { const dummyUserConfig = new DummyEleventyConfig(); if (typeof localConfig === 'function') localConfig = await localConfig(dummyUserConfig); const copiedPackages = new Set(); for (const path of Object.keys(dummyUserConfig.passthroughCopies)) { if (isInNodeModules(path)) copiedPackages.add(path); } return [...copiedPackages].map(id => toDeferResolve(id)); }; export default { title, enablers, isEnabled, config, production, resolveEntryPaths, resolveConfig, };