71 lines
1.6 KiB
TypeScript
71 lines
1.6 KiB
TypeScript
![]() |
import type { CAC } from 'cac';
|
||
|
|
||
|
import { getPackages } from '@vben/node-utils';
|
||
|
import depcheck from 'depcheck';
|
||
|
|
||
|
async function runDepcheck() {
|
||
|
const { packages } = await getPackages();
|
||
|
await Promise.all(
|
||
|
packages.map(async (pkg) => {
|
||
|
if (
|
||
|
[
|
||
|
'@vben/commitlint-config',
|
||
|
'@vben/eslint-config',
|
||
|
'@vben/lint-staged-config',
|
||
|
'@vben/node-utils',
|
||
|
'@vben/prettier-config',
|
||
|
'@vben/stylelint-config',
|
||
|
'@vben/tailwind-config',
|
||
|
'@vben/tsconfig',
|
||
|
'@vben/vite-config',
|
||
|
].includes(pkg.packageJson.name)
|
||
|
) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
const unused = await depcheck(pkg.dir, {
|
||
|
ignoreMatches: [
|
||
|
'vite',
|
||
|
'vitest',
|
||
|
'unbuild',
|
||
|
'@vben/tsconfig',
|
||
|
'@vben/vite-config',
|
||
|
'@vben/tailwind-config',
|
||
|
'@types/*',
|
||
|
'@vben-core/design',
|
||
|
],
|
||
|
ignorePatterns: ['dist', 'node_modules', 'public'],
|
||
|
});
|
||
|
|
||
|
if (
|
||
|
Object.keys(unused.missing).length === 0 &&
|
||
|
unused.dependencies.length === 0 &&
|
||
|
unused.devDependencies.length === 0
|
||
|
) {
|
||
|
return;
|
||
|
}
|
||
|
console.error(
|
||
|
'\n',
|
||
|
pkg.packageJson.name,
|
||
|
'\n missing:',
|
||
|
unused.missing,
|
||
|
'\n dependencies:',
|
||
|
unused.dependencies,
|
||
|
'\n devDependencies:',
|
||
|
unused.devDependencies,
|
||
|
);
|
||
|
}),
|
||
|
);
|
||
|
}
|
||
|
|
||
|
function defineDepcheckCommand(cac: CAC) {
|
||
|
cac
|
||
|
.command('check-dep')
|
||
|
.usage(`Analysis of project circular dependencies.`)
|
||
|
.action(async () => {
|
||
|
await runDepcheck();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
export { defineDepcheckCommand };
|