diff --git a/package.json b/package.json index e5d49ed..c8945b1 100644 --- a/package.json +++ b/package.json @@ -90,6 +90,7 @@ "dependencies": { "@rollup/pluginutils": "^5.1.0", "js-tokens": "^9.0.0", + "picocolors": "^1.0.1", "pkg-types": "^1.2.0", "unplugin": "^1.12.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 98045ee..8590b01 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: js-tokens: specifier: ^9.0.0 version: 9.0.0 + picocolors: + specifier: ^1.0.1 + version: 1.0.1 pkg-types: specifier: ^1.2.0 version: 1.2.0 diff --git a/src/index.ts b/src/index.ts index ebddcec..0806b2f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,6 +3,7 @@ import process from 'node:process' import { createFilter } from '@rollup/pluginutils' import escapeStringRegexp from 'escape-string-regexp' import jsTokens from 'js-tokens' +import pc from 'picocolors' import { readPackageJSON, resolvePackageJSON } from 'pkg-types' import { createUnplugin, type UnpluginInstance } from 'unplugin' import { resolveOptions, type Options } from './core/options' @@ -55,9 +56,14 @@ const plugin: UnpluginInstance = createUnplugin( buildEnd() { if (deps.size) { - const error = new Error( - `Unused dependencies found!\nDependencies: ${Array.from(deps).join(', ')}\nYou can remove them from ${pkgPath}`, - ) + const message = + `Unused ${pc.cyan(deps.size)} dependencies found: \n\n` + + `${Array.from(deps) + .map((dep) => `${pc.yellow('-')} ${pc.bold(dep)}`) + .join('\n')}\n\n` + + `You can remove them from ${pkgPath}` + + const error = new Error(message) if (options.level === 'error') { throw error } else { diff --git a/tests/__snapshots__/rollup.test.ts.snap b/tests/__snapshots__/rollup.test.ts.snap index a7d7e20..6941eab 100644 --- a/tests/__snapshots__/rollup.test.ts.snap +++ b/tests/__snapshots__/rollup.test.ts.snap @@ -6,6 +6,7 @@ var basic = \`import '@rollup/pluginutils' import 'js-tokens' import 'pkg-types' import 'unplugin' +import 'picocolors' \`; export { basic as default }; @@ -13,25 +14,41 @@ export { basic as default }; `; exports[`rollup > error.js 1`] = ` -[Error: Unused dependencies found! -Dependencies: js-tokens +[Error: Unused 2 dependencies found: + +- js-tokens +- picocolors + You can remove them from #CWD#/package.json] `; exports[`rollup > error-comment.js 1`] = ` -[Error: Unused dependencies found! -Dependencies: @rollup/pluginutils, js-tokens, pkg-types +[Error: Unused 4 dependencies found: + +- @rollup/pluginutils +- js-tokens +- picocolors +- pkg-types + You can remove them from #CWD#/package.json] `; exports[`rollup > error-tsx.tsx 1`] = ` -[Error: Unused dependencies found! -Dependencies: unplugin +[Error: Unused 2 dependencies found: + +- picocolors +- unplugin + You can remove them from #CWD#/package.json] `; exports[`rollup > error-vue.vue 1`] = ` -[Error: Unused dependencies found! -Dependencies: @rollup/pluginutils, js-tokens, pkg-types +[Error: Unused 4 dependencies found: + +- @rollup/pluginutils +- js-tokens +- picocolors +- pkg-types + You can remove them from #CWD#/package.json] `; diff --git a/tests/fixtures/basic.js b/tests/fixtures/basic.js index b34079f..f12af2c 100644 --- a/tests/fixtures/basic.js +++ b/tests/fixtures/basic.js @@ -2,3 +2,4 @@ import '@rollup/pluginutils' import 'js-tokens' import 'pkg-types' import 'unplugin' +import 'picocolors'