unplugin-slim
v0.2.1
Published
Detect unused dependencies and source files
Maintainers
Readme
unplugin-slim
Detect unused dependencies and source files.
Install
npm i unplugin-slim -DExample
import Slim from 'unplugin-slim/vite'
export default defineConfig({
plugins: [
Slim({
include: ['src/**/*'],
exclude: ['**/*.d.ts'],
usedDependencies: ['vite', 'react'],
usedFiles: ['src/env.d.ts', 'src/generated/**'],
reportPath: 'slim-report.json',
}),
],
})// vite.config.ts
import Slim from 'unplugin-slim/vite'
export default defineConfig({
plugins: [
Slim({ /* options */ }),
],
})// rollup.config.js
import Slim from 'unplugin-slim/rollup'
export default {
plugins: [
Slim({ /* options */ }),
],
}// webpack.config.js
module.exports = {
/* ... */
plugins: [
require('unplugin-slim/webpack')({ /* options */ })
]
}// rspack.config.js
import Slim from 'unplugin-slim/rspack'
export default {
plugins: [
Slim({ /* options */ }),
],
}// rsbuild.config.ts
import { defineConfig } from '@rsbuild/core'
import Slim from 'unplugin-slim/rspack'
export default defineConfig({
tools: {
rspack: {
plugins: [
Slim({ /* options */ }),
],
},
},
})// nuxt.config.js
export default defineNuxtConfig({
modules: [
['unplugin-slim/nuxt', { /* options */ }],
],
})This module works for both Nuxt 2 and Nuxt Vite
// vue.config.js
module.exports = {
configureWebpack: {
plugins: [
require('unplugin-slim/webpack')({ /* options */ }),
],
},
}// esbuild.config.js
import { build } from 'esbuild'
import Slim from 'unplugin-slim/esbuild'
build({
plugins: [Slim()],
})Options
export interface Options {
root?: string
include?: string | string[]
exclude?: string | string[]
usedDependencies?: string[]
usedFiles?: string[]
ignoreVirtualPrefixes?: string[]
dependencySections?: Array<
'dependencies' | 'optionalDependencies' | 'peerDependencies' | 'devDependencies'
>
reportPath?: string
failOnUnused?: boolean
verbose?: boolean
onReport?: (report: SlimReport) => void | Promise<void>
}
export interface SlimReport {
root: string
declaredDependencies: string[]
usedDependencies: string[]
unusedDependencies: string[]
scannedFiles: string[]
usedFiles: string[]
unusedFiles: string[]
}- root: Project root. Defaults to
process.cwd(). - include: Glob(s) for scanning project files. Defaults to
['src/**/*']. - exclude: Glob(s) excluded from scanning and
usedFilesglob matching. Defaults to:**/node_modules/****/dist/****/.git/****/.nuxt/****/.output/**
- usedDependencies: Treat these packages as used (manual allowlist). Supports deep imports and scoped packages, e.g.
lodash/merge->lodash,@scope/pkg/subpath->@scope/pkg. - usedFiles: Treat these files as used (manual allowlist). Each item can be a project-relative path, an absolute path, or a glob pattern (matched from
root). - ignoreVirtualPrefixes: Prefixes treated as virtual module IDs (ignored for dependency/file tracking). Defaults to
['virtual:', '\\0', '~icons/', 'uno:', '@id/']. - dependencySections: Which sections in
package.jsonare checked for unused dependencies. Defaults to['dependencies']. - reportPath: Write a JSON report to this path (relative to
rootunless absolute). - failOnUnused: Fail the build when unused items exist.
- verbose: Print additional counts (
declared/used deps,scanned/used files). - onReport: A callback invoked with the final report (before printing/writing).
