From fb3377b554a6d6a640981214663dc68dd87aa4d7 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 10 Jan 2025 21:55:33 +0100 Subject: [PATCH 1/2] feat(plugin-knip): setup plugin base --- packages/plugin-knip/.eslintrc.json | 19 +++++++++ packages/plugin-knip/README.md | 11 +++++ packages/plugin-knip/package.json | 7 ++++ packages/plugin-knip/project.json | 42 +++++++++++++++++++ packages/plugin-knip/src/index.ts | 1 + packages/plugin-knip/tsconfig.json | 23 ++++++++++ packages/plugin-knip/tsconfig.lib.json | 16 +++++++ packages/plugin-knip/tsconfig.test.json | 17 ++++++++ .../plugin-knip/vite.config.integration.ts | 29 +++++++++++++ packages/plugin-knip/vite.config.unit.ts | 30 +++++++++++++ tsconfig.base.json | 2 +- 11 files changed, 196 insertions(+), 1 deletion(-) create mode 100644 packages/plugin-knip/.eslintrc.json create mode 100644 packages/plugin-knip/README.md create mode 100644 packages/plugin-knip/package.json create mode 100644 packages/plugin-knip/project.json create mode 100644 packages/plugin-knip/src/index.ts create mode 100644 packages/plugin-knip/tsconfig.json create mode 100644 packages/plugin-knip/tsconfig.lib.json create mode 100644 packages/plugin-knip/tsconfig.test.json create mode 100644 packages/plugin-knip/vite.config.integration.ts create mode 100644 packages/plugin-knip/vite.config.unit.ts diff --git a/packages/plugin-knip/.eslintrc.json b/packages/plugin-knip/.eslintrc.json new file mode 100644 index 0000000..eafa6fc --- /dev/null +++ b/packages/plugin-knip/.eslintrc.json @@ -0,0 +1,19 @@ +{ + "extends": ["../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx"], + "parserOptions": { + "project": ["packages/plugin-knip/tsconfig.*?.json"] + } + }, + { + "files": ["*.json"], + "parser": "jsonc-eslint-parser", + "rules": { + "@nx/dependency-checks": ["error"] + } + } + ] +} diff --git a/packages/plugin-knip/README.md b/packages/plugin-knip/README.md new file mode 100644 index 0000000..1b8ee0c --- /dev/null +++ b/packages/plugin-knip/README.md @@ -0,0 +1,11 @@ +# @code-pushup/knip-plugin + +[![npm](https://img.shields.io/npm/v/%40code-pushup%2Feslint-plugin.svg)](https://www.npmjs.com/package/@code-pushup/knip-plugin) +[![downloads](https://img.shields.io/npm/dm/%40code-pushup%2Feslint-plugin)](https://npmtrends.com/@code-pushup/knip-plugin) +[![dependencies](https://img.shields.io/librariesio/release/npm/%40code-pushup/knip-plugin)](https://www.npmjs.com/package/@code-pushup/knip-plugin?activeTab=dependencies) + +🕵️ **Code PushUp plugin to detect dependency and code usage.** ✂️ + +--- + +TBD diff --git a/packages/plugin-knip/package.json b/packages/plugin-knip/package.json new file mode 100644 index 0000000..5f9f672 --- /dev/null +++ b/packages/plugin-knip/package.json @@ -0,0 +1,7 @@ +{ + "name": "@code-pushup/knip-plugin", + "version": "0.0.0", + "license": "MIT", + "dependencies": {}, + "peerDependencies": {} +} diff --git a/packages/plugin-knip/project.json b/packages/plugin-knip/project.json new file mode 100644 index 0000000..66b71d7 --- /dev/null +++ b/packages/plugin-knip/project.json @@ -0,0 +1,42 @@ +{ + "name": "plugin-knip", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "packages/plugin-knip/src", + "projectType": "library", + "targets": { + "build": { + "executor": "@nx/esbuild:esbuild", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/packages/plugin-knip", + "main": "packages/plugin-knip/src/index.ts", + "tsConfig": "packages/plugin-knip/tsconfig.lib.json", + "assets": ["packages/plugin-knip/*.md"], + "esbuildConfig": "esbuild.config.js" + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": [ + "packages/plugin-knip/**/*.ts", + "packages/plugin-knip/package.json" + ] + } + }, + "unit-test": { + "executor": "@nx/vite:test", + "options": { + "config": "packages/plugin-knip/vite.config.unit.ts" + } + }, + "integration-test": { + "executor": "@nx/vite:test", + "options": { + "config": "packages/plugin-knip/vite.config.integration.ts" + } + } + }, + "tags": ["scope:plugin", "type:feature"] +} diff --git a/packages/plugin-knip/src/index.ts b/packages/plugin-knip/src/index.ts new file mode 100644 index 0000000..5399942 --- /dev/null +++ b/packages/plugin-knip/src/index.ts @@ -0,0 +1 @@ +export const KNIP_PLUGIN_SLUG = 'knip'; diff --git a/packages/plugin-knip/tsconfig.json b/packages/plugin-knip/tsconfig.json new file mode 100644 index 0000000..893f9a9 --- /dev/null +++ b/packages/plugin-knip/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "module": "ESNext", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "types": ["vitest"] + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.test.json" + } + ] +} diff --git a/packages/plugin-knip/tsconfig.lib.json b/packages/plugin-knip/tsconfig.lib.json new file mode 100644 index 0000000..ef2f7e2 --- /dev/null +++ b/packages/plugin-knip/tsconfig.lib.json @@ -0,0 +1,16 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": [ + "vite.config.unit.ts", + "vite.config.integration.ts", + "src/**/*.test.ts", + "src/**/*.mock.ts", + "mocks/**/*.ts" + ] +} diff --git a/packages/plugin-knip/tsconfig.test.json b/packages/plugin-knip/tsconfig.test.json new file mode 100644 index 0000000..bb1ab5e --- /dev/null +++ b/packages/plugin-knip/tsconfig.test.json @@ -0,0 +1,17 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": ["vitest/globals", "vitest/importMeta", "vite/client", "node"] + }, + "include": [ + "vite.config.unit.ts", + "vite.config.integration.ts", + "mocks/**/*.ts", + "src/**/*.test.ts", + "src/**/*.test.tsx", + "src/**/*.test.js", + "src/**/*.test.jsx", + "src/**/*.d.ts" + ] +} diff --git a/packages/plugin-knip/vite.config.integration.ts b/packages/plugin-knip/vite.config.integration.ts new file mode 100644 index 0000000..73740be --- /dev/null +++ b/packages/plugin-knip/vite.config.integration.ts @@ -0,0 +1,29 @@ +/// +import { defineConfig } from 'vite'; +import { tsconfigPathAliases } from '../../tooling/vitest-tsconfig-path-aliases'; + +export default defineConfig({ + cacheDir: '../../node_modules/.vite/plugin-knip', + test: { + reporters: ['basic'], + globals: true, + cache: { + dir: '../../node_modules/.vitest/plugin-knip', + }, + alias: tsconfigPathAliases(), + pool: 'threads', + poolOptions: { threads: { singleThread: true } }, + coverage: { + reporter: ['text', 'lcov'], + reportsDirectory: '../../coverage/plugin-knip/integration-tests', + exclude: ['mocks/**', '**/types.ts'], + }, + environment: 'node', + include: ['src/**/*.integration.test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + globalSetup: ['../../global-setup.ts'], + setupFiles: [ + '../../testing/test-setup/src/lib/console.mock.ts', + '../../testing/test-setup/src/lib/reset.mocks.ts', + ], + }, +}); diff --git a/packages/plugin-knip/vite.config.unit.ts b/packages/plugin-knip/vite.config.unit.ts new file mode 100644 index 0000000..ac92569 --- /dev/null +++ b/packages/plugin-knip/vite.config.unit.ts @@ -0,0 +1,30 @@ +/// +import { defineConfig } from 'vite'; +import { tsconfigPathAliases } from '../../tools/vitest-tsconfig-path-aliases'; + +export default defineConfig({ + cacheDir: '../../node_modules/.vite/plugin-knip', + test: { + reporters: ['basic'], + globals: true, + cache: { + dir: '../../node_modules/.vitest', + }, + alias: tsconfigPathAliases(), + pool: 'threads', + poolOptions: { threads: { singleThread: true } }, + coverage: { + reporter: ['text', 'lcov'], + reportsDirectory: '../../coverage/plugin-knip/unit-tests', + exclude: ['mocks/**', '**/types.ts'], + }, + environment: 'node', + include: ['src/**/*.unit.test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + globalSetup: ['../../global-setup.ts'], + setupFiles: [ + '../../testing/test-setup/src/lib/console.mock.ts', + '../../testing/test-setup/src/lib/fs.mock.ts', + '../../testing/test-setup/src/lib/reset.mocks.ts', + ], + }, +}); diff --git a/tsconfig.base.json b/tsconfig.base.json index dc21665..199f8be 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -15,7 +15,7 @@ "skipDefaultLibCheck": true, "baseUrl": ".", "paths": { - "bundle-size": ["packages/bundle-size/src/index.ts"], + "knip-plugin": ["packages/plugin-knip/src/index.ts"], "plugin-factory": ["tooling/plugin-factory/src/index.ts"], "testing-utils": ["testing/utils/src/index.ts"] } From da304d37edde7debbe3ada4455d26e787ae406b9 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 10 Jan 2025 22:03:13 +0100 Subject: [PATCH 2/2] fix(plugin-knip): fix testing config --- packages/plugin-knip/project.json | 5 ++--- packages/plugin-knip/vite.config.unit.ts | 4 ++-- tooling/plugin-factory/src/internal/generate-files.ts | 2 -- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/plugin-knip/project.json b/packages/plugin-knip/project.json index 66b71d7..4268071 100644 --- a/packages/plugin-knip/project.json +++ b/packages/plugin-knip/project.json @@ -5,14 +5,13 @@ "projectType": "library", "targets": { "build": { - "executor": "@nx/esbuild:esbuild", + "executor": "@nx/js:tsc", "outputs": ["{options.outputPath}"], "options": { "outputPath": "dist/packages/plugin-knip", "main": "packages/plugin-knip/src/index.ts", "tsConfig": "packages/plugin-knip/tsconfig.lib.json", - "assets": ["packages/plugin-knip/*.md"], - "esbuildConfig": "esbuild.config.js" + "assets": ["packages/plugin-knip/*.md"] } }, "lint": { diff --git a/packages/plugin-knip/vite.config.unit.ts b/packages/plugin-knip/vite.config.unit.ts index ac92569..2f72985 100644 --- a/packages/plugin-knip/vite.config.unit.ts +++ b/packages/plugin-knip/vite.config.unit.ts @@ -1,6 +1,6 @@ /// import { defineConfig } from 'vite'; -import { tsconfigPathAliases } from '../../tools/vitest-tsconfig-path-aliases'; +import { tsconfigPathAliases } from '../../tooling/vitest-tsconfig-path-aliases'; export default defineConfig({ cacheDir: '../../node_modules/.vite/plugin-knip', @@ -8,7 +8,7 @@ export default defineConfig({ reporters: ['basic'], globals: true, cache: { - dir: '../../node_modules/.vitest', + dir: '../../node_modules/.vitest/plugin-knip', }, alias: tsconfigPathAliases(), pool: 'threads', diff --git a/tooling/plugin-factory/src/internal/generate-files.ts b/tooling/plugin-factory/src/internal/generate-files.ts index cd48268..ca70e68 100644 --- a/tooling/plugin-factory/src/internal/generate-files.ts +++ b/tooling/plugin-factory/src/internal/generate-files.ts @@ -28,8 +28,6 @@ export async function addCodePushupConfigFile( persist?: PersistConfig; }, ): Promise { - console.log('addCodePushupConfigFile: ', options); - const { configFile, plugins, categories, persist, upload } = options ?? {}; const {