knip 2.0.0-beta.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +114 -64
- package/dist/binaries/resolvers/fallback.js +6 -5
- package/dist/binaries/resolvers/index.d.ts +1 -0
- package/dist/binaries/resolvers/index.js +1 -0
- package/dist/binaries/resolvers/node.d.ts +0 -1
- package/dist/binaries/resolvers/node.js +1 -15
- package/dist/binaries/resolvers/rollup.js +10 -0
- package/dist/binaries/resolvers/util.d.ts +2 -0
- package/dist/binaries/resolvers/util.js +15 -0
- package/dist/cli.js +0 -0
- package/dist/configuration-chief.js +3 -5
- package/dist/configuration-validator.d.ts +400 -8
- package/dist/configuration-validator.js +7 -0
- package/dist/plugins/eslint/helpers.js +9 -9
- package/dist/plugins/index.d.ts +1 -0
- package/dist/plugins/index.js +1 -0
- package/dist/plugins/tailwind/index.d.ts +5 -0
- package/dist/plugins/tailwind/index.js +5 -0
- package/dist/project-principal.js +0 -2
- package/dist/types/ast.d.ts +1 -1
- package/dist/types/issues.d.ts +9 -1
- package/dist/types/issues.js +10 -1
- package/dist/typescript/ast-walker.js +17 -16
- package/dist/typescript/resolveModuleNames.js +0 -4
- package/dist/util/cli-arguments.d.ts +1 -2
- package/dist/util/cli-arguments.js +1 -3
- package/dist/util/compilers.d.ts +72 -2
- package/dist/util/performance.js +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/workspace-worker.d.ts +1 -1
- package/package.json +12 -10
- package/schema.json +4 -0
- package/dist/commonjs.test.d.ts +0 -1
- package/dist/commonjs.test.js +0 -29
- package/dist/compilers.test.d.ts +0 -1
- package/dist/compilers.test.js +0 -18
- package/dist/definitely-typed.test.d.ts +0 -1
- package/dist/definitely-typed.test.js +0 -35
- package/dist/dependencies.test.d.ts +0 -1
- package/dist/dependencies.test.js +0 -76
- package/dist/entry-js.test.d.ts +0 -1
- package/dist/entry-js.test.js +0 -38
- package/dist/exports.test.d.ts +0 -1
- package/dist/exports.test.js +0 -48
- package/dist/fixtures/binaries/dir/index.d.ts +0 -1
- package/dist/fixtures/binaries/dir/index.js +0 -1
- package/dist/fixtures/binaries/main.d.ts +0 -1
- package/dist/fixtures/binaries/main.js +0 -1
- package/dist/fixtures/binaries/require.d.ts +0 -1
- package/dist/fixtures/binaries/require.js +0 -1
- package/dist/fixtures/binaries/script.d.ts +0 -1
- package/dist/fixtures/binaries/script.js +0 -1
- package/dist/fixtures/commonjs/dir/mod.d.ts +0 -1
- package/dist/fixtures/commonjs/dir/mod.js +0 -5
- package/dist/fixtures/commonjs/dir/mod1.d.ts +0 -7
- package/dist/fixtures/commonjs/dir/mod1.js +0 -5
- package/dist/fixtures/commonjs/dir/mod2.d.ts +0 -4
- package/dist/fixtures/commonjs/dir/mod2.js +0 -4
- package/dist/fixtures/commonjs/dir/mod3.d.ts +0 -2
- package/dist/fixtures/commonjs/dir/mod3.js +0 -4
- package/dist/fixtures/commonjs/export-is.d.ts +0 -2
- package/dist/fixtures/commonjs/export-is.js +0 -2
- package/dist/fixtures/commonjs/index.d.ts +0 -1
- package/dist/fixtures/commonjs/index.js +0 -31
- package/dist/fixtures/commonjs/odd.d.ts +0 -1
- package/dist/fixtures/commonjs/odd.js +0 -7
- package/dist/fixtures/compilers/component.d.ts +0 -2
- package/dist/fixtures/compilers/component.jsx +0 -1
- package/dist/fixtures/compilers/index.d.ts +0 -1
- package/dist/fixtures/compilers/index.js +0 -1
- package/dist/fixtures/compilers/knip.d.ts +0 -0
- package/dist/fixtures/compilers/knip.js +0 -7
- package/dist/fixtures/definitely-typed/index.d.ts +0 -1
- package/dist/fixtures/definitely-typed/index.js +0 -1
- package/dist/fixtures/dependencies/entry.d.ts +0 -1
- package/dist/fixtures/dependencies/entry.js +0 -6
- package/dist/fixtures/dependencies/my-module.d.ts +0 -3
- package/dist/fixtures/dependencies/my-module.js +0 -6
- package/dist/fixtures/dependencies/unused-module.d.ts +0 -1
- package/dist/fixtures/dependencies/unused-module.js +0 -6
- package/dist/fixtures/entry-js/dangling.d.ts +0 -1
- package/dist/fixtures/entry-js/dangling.js +0 -1
- package/dist/fixtures/entry-js/index.d.ts +0 -1
- package/dist/fixtures/entry-js/index.js +0 -2
- package/dist/fixtures/entry-js/my-module.d.ts +0 -4
- package/dist/fixtures/entry-js/my-module.js +0 -6
- package/dist/fixtures/entry-js/my-namespace.d.ts +0 -5
- package/dist/fixtures/entry-js/my-namespace.js +0 -3
- package/dist/fixtures/exports/dangling.d.ts +0 -1
- package/dist/fixtures/exports/dangling.js +0 -1
- package/dist/fixtures/exports/default-arrow-function.d.ts +0 -2
- package/dist/fixtures/exports/default-arrow-function.js +0 -1
- package/dist/fixtures/exports/default-class.d.ts +0 -2
- package/dist/fixtures/exports/default-class.js +0 -2
- package/dist/fixtures/exports/default-function.d.ts +0 -1
- package/dist/fixtures/exports/default-function.js +0 -1
- package/dist/fixtures/exports/default-generator-function.d.ts +0 -1
- package/dist/fixtures/exports/default-generator-function.js +0 -1
- package/dist/fixtures/exports/default-named-class.d.ts +0 -2
- package/dist/fixtures/exports/default-named-class.js +0 -2
- package/dist/fixtures/exports/default-named-function.d.ts +0 -1
- package/dist/fixtures/exports/default-named-function.js +0 -1
- package/dist/fixtures/exports/default-named-generator-function.d.ts +0 -1
- package/dist/fixtures/exports/default-named-generator-function.js +0 -1
- package/dist/fixtures/exports/default.d.ts +0 -3
- package/dist/fixtures/exports/default.js +0 -2
- package/dist/fixtures/exports/dynamic-import.d.ts +0 -4
- package/dist/fixtures/exports/dynamic-import.js +0 -3
- package/dist/fixtures/exports/index.d.ts +0 -2
- package/dist/fixtures/exports/index.js +0 -6
- package/dist/fixtures/exports/my-module.d.ts +0 -5
- package/dist/fixtures/exports/my-module.js +0 -7
- package/dist/fixtures/exports/my-namespace.d.ts +0 -5
- package/dist/fixtures/exports/my-namespace.js +0 -3
- package/dist/fixtures/exports/named.d.ts +0 -11
- package/dist/fixtures/exports/named.js +0 -11
- package/dist/fixtures/exports/types.d.ts +0 -9
- package/dist/fixtures/exports/types.js +0 -3
- package/dist/fixtures/gitignore/packages/a/build/dist.d.ts +0 -2
- package/dist/fixtures/gitignore/packages/a/build/dist.js +0 -1
- package/dist/fixtures/gitignore/packages/a/dist.d.ts +0 -1
- package/dist/fixtures/gitignore/packages/a/dist.js +0 -1
- package/dist/fixtures/gitignore/packages/a/index.d.ts +0 -1
- package/dist/fixtures/gitignore/packages/a/index.js +0 -1
- package/dist/fixtures/imports/dir/import-b.d.ts +0 -2
- package/dist/fixtures/imports/dir/import-b.js +0 -1
- package/dist/fixtures/imports/dir/mod.d.ts +0 -1
- package/dist/fixtures/imports/dir/mod.js +0 -1
- package/dist/fixtures/imports/index.d.ts +0 -1
- package/dist/fixtures/imports/index.js +0 -35
- package/dist/fixtures/js-only/dangling.d.ts +0 -1
- package/dist/fixtures/js-only/dangling.js +0 -1
- package/dist/fixtures/js-only/index.d.ts +0 -1
- package/dist/fixtures/js-only/index.js +0 -2
- package/dist/fixtures/js-only/my-namespace.d.ts +0 -3
- package/dist/fixtures/js-only/my-namespace.js +0 -3
- package/dist/fixtures/jsdoc/index.d.ts +0 -4
- package/dist/fixtures/jsdoc/index.js +0 -8
- package/dist/fixtures/members/index.d.ts +0 -1
- package/dist/fixtures/members/index.js +0 -16
- package/dist/fixtures/members/members.d.ts +0 -23
- package/dist/fixtures/members/members.js +0 -38
- package/dist/fixtures/namespace/index.d.ts +0 -1
- package/dist/fixtures/namespace/index.js +0 -5
- package/dist/fixtures/namespace/namespace.d.ts +0 -3
- package/dist/fixtures/namespace/namespace.js +0 -3
- package/dist/fixtures/namespace/re-exported-module.d.ts +0 -2
- package/dist/fixtures/namespace/re-exported-module.js +0 -2
- package/dist/fixtures/pathless/src/dir/module-a.d.ts +0 -2
- package/dist/fixtures/pathless/src/dir/module-a.js +0 -1
- package/dist/fixtures/pathless/src/index.d.ts +0 -2
- package/dist/fixtures/pathless/src/index.js +0 -2
- package/dist/fixtures/pathless/src/same.d.ts +0 -2
- package/dist/fixtures/pathless/src/same.js +0 -1
- package/dist/fixtures/paths-knip-config/abc/main.d.ts +0 -0
- package/dist/fixtures/paths-knip-config/abc/main.js +0 -1
- package/dist/fixtures/paths-knip-config/index.d.ts +0 -1
- package/dist/fixtures/paths-knip-config/index.js +0 -1
- package/dist/fixtures/paths-knip-config/knip.d.ts +0 -3
- package/dist/fixtures/paths-knip-config/knip.js +0 -9
- package/dist/fixtures/paths-knip-config/lib/fn.d.ts +0 -2
- package/dist/fixtures/paths-knip-config/lib/fn.js +0 -1
- package/dist/fixtures/paths-knip-config/lib/index.d.ts +0 -2
- package/dist/fixtures/paths-knip-config/lib/index.js +0 -1
- package/dist/fixtures/paths-knip-config/my-module.d.ts +0 -2
- package/dist/fixtures/paths-knip-config/my-module.js +0 -1
- package/dist/fixtures/paths-knip-config-workspaces/index.d.ts +0 -1
- package/dist/fixtures/paths-knip-config-workspaces/index.js +0 -1
- package/dist/fixtures/paths-knip-config-workspaces/lib/fn.d.ts +0 -2
- package/dist/fixtures/paths-knip-config-workspaces/lib/fn.js +0 -1
- package/dist/fixtures/paths-knip-config-workspaces/lib/index.d.ts +0 -2
- package/dist/fixtures/paths-knip-config-workspaces/lib/index.js +0 -1
- package/dist/fixtures/paths-knip-config-workspaces/my-module.d.ts +0 -1
- package/dist/fixtures/paths-knip-config-workspaces/my-module.js +0 -1
- package/dist/fixtures/paths-knip-config-workspaces/ws/index.d.ts +0 -1
- package/dist/fixtures/paths-knip-config-workspaces/ws/index.js +0 -1
- package/dist/fixtures/paths-knip-config-workspaces/ws/lib/main.d.ts +0 -0
- package/dist/fixtures/paths-knip-config-workspaces/ws/lib/main.js +0 -1
- package/dist/fixtures/paths-knip-config-workspaces/ws/util/lang.d.ts +0 -2
- package/dist/fixtures/paths-knip-config-workspaces/ws/util/lang.js +0 -1
- package/dist/fixtures/peer-dependencies/index.d.ts +0 -1
- package/dist/fixtures/peer-dependencies/index.js +0 -1
- package/dist/fixtures/plugins/ava/ava.config.d.mts +0 -13
- package/dist/fixtures/plugins/ava/ava.config.mjs +0 -13
- package/dist/fixtures/plugins/babel/babel.config.d.ts +0 -14
- package/dist/fixtures/plugins/babel/babel.config.js +0 -47
- package/dist/fixtures/plugins/capacitor/capacitor.config.d.ts +0 -3
- package/dist/fixtures/plugins/capacitor/capacitor.config.js +0 -15
- package/dist/fixtures/plugins/commitlint/commitlint.config.d.ts +0 -2
- package/dist/fixtures/plugins/commitlint/commitlint.config.js +0 -2
- package/dist/fixtures/plugins/cypress/cypress/support/commands.d.ts +0 -1
- package/dist/fixtures/plugins/cypress/cypress/support/commands.js +0 -5
- package/dist/fixtures/plugins/cypress/cypress/support/e2e.d.ts +0 -2
- package/dist/fixtures/plugins/cypress/cypress/support/e2e.js +0 -2
- package/dist/fixtures/plugins/cypress/cypress.config.d.ts +0 -2
- package/dist/fixtures/plugins/cypress/cypress.config.js +0 -9
- package/dist/fixtures/plugins/eslint/eslint.config.d.ts +0 -7
- package/dist/fixtures/plugins/eslint/eslint.config.js +0 -11
- package/dist/fixtures/plugins/eslint/index.d.ts +0 -1
- package/dist/fixtures/plugins/eslint/index.js +0 -1
- package/dist/fixtures/plugins/gatsby/gatsby-config.d.ts +0 -17
- package/dist/fixtures/plugins/gatsby/gatsby-config.js +0 -40
- package/dist/fixtures/plugins/gatsby/gatsby-node.d.ts +0 -3
- package/dist/fixtures/plugins/gatsby/gatsby-node.js +0 -15
- package/dist/fixtures/plugins/github-actions/comment.d.ts +0 -0
- package/dist/fixtures/plugins/github-actions/comment.js +0 -1
- package/dist/fixtures/plugins/github-actions/scripts/check-dependencies.d.ts +0 -0
- package/dist/fixtures/plugins/github-actions/scripts/check-dependencies.js +0 -1
- package/dist/fixtures/plugins/jest/jest.config.d.ts +0 -2
- package/dist/fixtures/plugins/jest/jest.config.js +0 -7
- package/dist/fixtures/plugins/jest/jest.config.shared.d.ts +0 -2
- package/dist/fixtures/plugins/jest/jest.config.shared.js +0 -15
- package/dist/fixtures/plugins/jest/jest.setup.d.ts +0 -1
- package/dist/fixtures/plugins/jest/jest.setup.js +0 -1
- package/dist/fixtures/plugins/jest/jest.transform.d.ts +0 -1
- package/dist/fixtures/plugins/jest/jest.transform.js +0 -2
- package/dist/fixtures/plugins/lefthook/example.d.mts +0 -2
- package/dist/fixtures/plugins/lefthook/example.mjs +0 -1
- package/dist/fixtures/plugins/next/next.config.d.ts +0 -2
- package/dist/fixtures/plugins/next/next.config.js +0 -9
- package/dist/fixtures/plugins/next/pages/[[...route]].d.ts +0 -3
- package/dist/fixtures/plugins/next/pages/[[...route]].jsx +0 -3
- package/dist/fixtures/plugins/next/pages/page.d.ts +0 -3
- package/dist/fixtures/plugins/next/pages/page.jsx +0 -3
- package/dist/fixtures/plugins/playwright/playwright.config.d.ts +0 -3
- package/dist/fixtures/plugins/playwright/playwright.config.js +0 -10
- package/dist/fixtures/plugins/playwright/test/some.spec.d.ts +0 -1
- package/dist/fixtures/plugins/playwright/test/some.spec.js +0 -6
- package/dist/fixtures/plugins/postcss/postcss.config.d.ts +0 -1
- package/dist/fixtures/plugins/postcss/postcss.config.js +0 -4
- package/dist/fixtures/plugins/remix/app/entry.client.d.ts +0 -1
- package/dist/fixtures/plugins/remix/app/entry.client.jsx +0 -11
- package/dist/fixtures/plugins/remix/app/entry.server.jsx +0 -3
- package/dist/fixtures/plugins/remix/app/root.d.ts +0 -5
- package/dist/fixtures/plugins/remix/app/root.jsx +0 -31
- package/dist/fixtures/plugins/remix/app/routes/index.d.ts +0 -1
- package/dist/fixtures/plugins/remix/app/routes/index.jsx +0 -8
- package/dist/fixtures/plugins/remix/app/utils.d.ts +0 -1
- package/dist/fixtures/plugins/remix/app/utils.js +0 -1
- package/dist/fixtures/plugins/remix/remix.config.d.ts +0 -2
- package/dist/fixtures/plugins/remix/remix.config.js +0 -5
- package/dist/fixtures/plugins/remix/remix.init/index.d.ts +0 -4
- package/dist/fixtures/plugins/remix/remix.init/index.js +0 -4
- package/dist/fixtures/plugins/remix/server.d.ts +0 -0
- package/dist/fixtures/plugins/remix/server.js +0 -1
- package/dist/fixtures/plugins/rollup/rollup.config.d.ts +0 -16
- package/dist/fixtures/plugins/rollup/rollup.config.js +0 -26
- package/dist/fixtures/plugins/sentry/sentry.client.config.d.ts +0 -1
- package/dist/fixtures/plugins/sentry/sentry.client.config.js +0 -6
- package/dist/fixtures/plugins/sentry/sentry.server.config.d.ts +0 -1
- package/dist/fixtures/plugins/sentry/sentry.server.config.js +0 -1
- package/dist/fixtures/plugins/storybook/addon/register.d.ts +0 -0
- package/dist/fixtures/plugins/storybook/addon/register.js +0 -1
- package/dist/fixtures/plugins/storybook/main.d.ts +0 -10
- package/dist/fixtures/plugins/storybook/main.js +0 -38
- package/dist/fixtures/plugins/storybook/preview.d.ts +0 -13
- package/dist/fixtures/plugins/storybook/preview.js +0 -14
- package/dist/fixtures/plugins/stryker/stryker.conf.cjs +0 -6
- package/dist/fixtures/plugins/stryker/stryker.conf.d.cts +0 -3
- package/dist/fixtures/plugins/stryker/stryker.conf.d.mts +0 -6
- package/dist/fixtures/plugins/stryker/stryker.conf.mjs +0 -6
- package/dist/fixtures/plugins/svelte/knip.d.ts +0 -11
- package/dist/fixtures/plugins/svelte/knip.js +0 -10
- package/dist/fixtures/plugins/svelte/src/routes/+page.d.ts +0 -1
- package/dist/fixtures/plugins/svelte/src/routes/+page.js +0 -1
- package/dist/fixtures/plugins/svelte/svelte.config.d.ts +0 -2
- package/dist/fixtures/plugins/svelte/svelte.config.js +0 -9
- package/dist/fixtures/plugins/svelte/vite.config.d.ts +0 -2
- package/dist/fixtures/plugins/svelte/vite.config.js +0 -5
- package/dist/fixtures/plugins/vitest/test/basic.spec.d.ts +0 -1
- package/dist/fixtures/plugins/vitest/test/basic.spec.js +0 -8
- package/dist/fixtures/plugins/vitest/vite.config.d.ts +0 -2
- package/dist/fixtures/plugins/vitest/vite.config.js +0 -10
- package/dist/fixtures/plugins/vitest/vitest.config.d.ts +0 -2
- package/dist/fixtures/plugins/vitest/vitest.config.js +0 -10
- package/dist/fixtures/plugins/webpack/merge.d.ts +0 -2
- package/dist/fixtures/plugins/webpack/merge.js +0 -9
- package/dist/fixtures/plugins/webpack/src/app-dep.d.ts +0 -2
- package/dist/fixtures/plugins/webpack/src/app-dep.js +0 -1
- package/dist/fixtures/plugins/webpack/src/app.d.ts +0 -1
- package/dist/fixtures/plugins/webpack/src/app.js +0 -1
- package/dist/fixtures/plugins/webpack/src/entry.d.ts +0 -0
- package/dist/fixtures/plugins/webpack/src/entry.js +0 -1
- package/dist/fixtures/plugins/webpack/src/unused.d.ts +0 -0
- package/dist/fixtures/plugins/webpack/src/unused.js +0 -1
- package/dist/fixtures/plugins/webpack/src/vendor.d.ts +0 -0
- package/dist/fixtures/plugins/webpack/src/vendor.js +0 -1
- package/dist/fixtures/plugins/webpack/webpack.common.d.ts +0 -65
- package/dist/fixtures/plugins/webpack/webpack.common.js +0 -81
- package/dist/fixtures/plugins/webpack/webpack.config.d.ts +0 -2
- package/dist/fixtures/plugins/webpack/webpack.config.js +0 -4
- package/dist/fixtures/plugins/webpack/webpack.dev.d.ts +0 -2
- package/dist/fixtures/plugins/webpack/webpack.dev.js +0 -19
- package/dist/fixtures/plugins/webpack/webpack.prod.d.ts +0 -2
- package/dist/fixtures/plugins/webpack/webpack.prod.js +0 -16
- package/dist/fixtures/re-exports/barrel.d.ts +0 -1
- package/dist/fixtures/re-exports/barrel.js +0 -1
- package/dist/fixtures/re-exports/entry.d.ts +0 -1
- package/dist/fixtures/re-exports/entry.js +0 -2
- package/dist/fixtures/re-exports/my-module.d.ts +0 -4
- package/dist/fixtures/re-exports/my-module.js +0 -6
- package/dist/fixtures/react/App.d.ts +0 -1
- package/dist/fixtures/react/App.jsx +0 -7
- package/dist/fixtures/react/Component.d.ts +0 -1
- package/dist/fixtures/react/Component.jsx +0 -4
- package/dist/fixtures/self-reference/entry.d.ts +0 -1
- package/dist/fixtures/self-reference/entry.js +0 -8
- package/dist/fixtures/self-reference/lib/module.d.ts +0 -2
- package/dist/fixtures/self-reference/lib/module.js +0 -1
- package/dist/fixtures/self-reference/out/entry.d.ts +0 -1
- package/dist/fixtures/self-reference/out/entry.js +0 -11
- package/dist/fixtures/self-reference/out/lib/module.d.mts +0 -3
- package/dist/fixtures/self-reference/out/lib/module.mjs +0 -4
- package/dist/fixtures/self-reference-from-plugin/entry.d.ts +0 -0
- package/dist/fixtures/self-reference-from-plugin/entry.js +0 -2
- package/dist/fixtures/self-reference-from-plugin/file.d.ts +0 -2
- package/dist/fixtures/self-reference-from-plugin/file.js +0 -1
- package/dist/fixtures/tsconfig-paths/aliased-dir/a.d.ts +0 -1
- package/dist/fixtures/tsconfig-paths/aliased-dir/a.js +0 -1
- package/dist/fixtures/tsconfig-paths/index.d.ts +0 -1
- package/dist/fixtures/tsconfig-paths/index.js +0 -6
- package/dist/fixtures/tsconfig-paths/internal-package/index.d.ts +0 -2
- package/dist/fixtures/tsconfig-paths/internal-package/index.js +0 -2
- package/dist/fixtures/tsconfig-paths/unprefixed/module.d.ts +0 -2
- package/dist/fixtures/tsconfig-paths/unprefixed/module.js +0 -2
- package/dist/fixtures/tsconfig-paths-extends/src/cli.d.ts +0 -1
- package/dist/fixtures/tsconfig-paths-extends/src/cli.js +0 -3
- package/dist/fixtures/tsconfig-paths-extends/src/index.d.ts +0 -3
- package/dist/fixtures/tsconfig-paths-extends/src/index.js +0 -3
- package/dist/fixtures/tsconfig-paths-extends/src/lib/main.d.ts +0 -2
- package/dist/fixtures/tsconfig-paths-extends/src/lib/main.js +0 -1
- package/dist/fixtures/tsconfig-paths-extends/src/util/index.d.ts +0 -2
- package/dist/fixtures/tsconfig-paths-extends/src/util/index.js +0 -1
- package/dist/fixtures/tsconfig-paths-implicit/src/hello/world.d.ts +0 -1
- package/dist/fixtures/tsconfig-paths-implicit/src/hello/world.js +0 -1
- package/dist/fixtures/tsconfig-paths-implicit/src/index.d.ts +0 -1
- package/dist/fixtures/tsconfig-paths-implicit/src/index.js +0 -2
- package/dist/fixtures/workspaces/apps/a/index.d.ts +0 -1
- package/dist/fixtures/workspaces/apps/a/index.js +0 -6
- package/dist/fixtures/workspaces/apps/b/index.d.ts +0 -1
- package/dist/fixtures/workspaces/apps/b/index.js +0 -4
- package/dist/fixtures/workspaces/docs/dangling.d.ts +0 -1
- package/dist/fixtures/workspaces/docs/dangling.js +0 -1
- package/dist/fixtures/workspaces/packages/lib-a/index.d.ts +0 -4
- package/dist/fixtures/workspaces/packages/lib-a/index.js +0 -3
- package/dist/fixtures/workspaces/packages/lib-b/ignored/index.d.ts +0 -0
- package/dist/fixtures/workspaces/packages/lib-b/ignored/index.js +0 -1
- package/dist/fixtures/workspaces/packages/lib-b/index.d.ts +0 -3
- package/dist/fixtures/workspaces/packages/lib-b/index.js +0 -2
- package/dist/fixtures/workspaces-nested/level-1-1/index.d.ts +0 -1
- package/dist/fixtures/workspaces-nested/level-1-1/index.js +0 -1
- package/dist/fixtures/workspaces-nested/level-1-1/index.spec.d.ts +0 -1
- package/dist/fixtures/workspaces-nested/level-1-1/index.spec.js +0 -1
- package/dist/fixtures/workspaces-nested/level-1-1/level-1-2/index.d.ts +0 -1
- package/dist/fixtures/workspaces-nested/level-1-1/level-1-2/index.js +0 -1
- package/dist/fixtures/workspaces-nested/level-1-1/level-1-2/index.spec.d.ts +0 -1
- package/dist/fixtures/workspaces-nested/level-1-1/level-1-2/index.spec.js +0 -1
- package/dist/fixtures/workspaces-nested/level-1-1/level-1-2/level-1-3/index.d.ts +0 -1
- package/dist/fixtures/workspaces-nested/level-1-1/level-1-2/level-1-3/index.js +0 -1
- package/dist/fixtures/workspaces-nested/level-1-1/level-1-2/level-1-3/index.spec.d.ts +0 -1
- package/dist/fixtures/workspaces-nested/level-1-1/level-1-2/level-1-3/index.spec.js +0 -1
- package/dist/fixtures/workspaces-paths/packages/lib-a/src/dir/module-a.d.ts +0 -2
- package/dist/fixtures/workspaces-paths/packages/lib-a/src/dir/module-a.js +0 -1
- package/dist/fixtures/workspaces-paths/packages/lib-a/src/index.d.ts +0 -2
- package/dist/fixtures/workspaces-paths/packages/lib-a/src/index.js +0 -2
- package/dist/fixtures/workspaces-paths/packages/lib-a/src/same.d.ts +0 -2
- package/dist/fixtures/workspaces-paths/packages/lib-a/src/same.js +0 -1
- package/dist/fixtures/workspaces-paths/packages/lib-b/src/dir/module-b.d.ts +0 -2
- package/dist/fixtures/workspaces-paths/packages/lib-b/src/dir/module-b.js +0 -1
- package/dist/fixtures/workspaces-paths/packages/lib-b/src/index.d.ts +0 -2
- package/dist/fixtures/workspaces-paths/packages/lib-b/src/index.js +0 -2
- package/dist/fixtures/workspaces-paths/packages/lib-c/src/dir/module.d.ts +0 -2
- package/dist/fixtures/workspaces-paths/packages/lib-c/src/dir/module.js +0 -1
- package/dist/fixtures/workspaces-paths/packages/lib-c/src/index.d.ts +0 -2
- package/dist/fixtures/workspaces-paths/packages/lib-c/src/index.js +0 -2
- package/dist/fixtures/workspaces-paths/packages/lib-d/src/dir/module.d.ts +0 -2
- package/dist/fixtures/workspaces-paths/packages/lib-d/src/dir/module.js +0 -1
- package/dist/fixtures/workspaces-paths/packages/lib-d/src/index.d.ts +0 -2
- package/dist/fixtures/workspaces-paths/packages/lib-d/src/index.js +0 -2
- package/dist/fixtures/workspaces-paths/packages/lib-e/src/dir/module-e.d.ts +0 -2
- package/dist/fixtures/workspaces-paths/packages/lib-e/src/dir/module-e.js +0 -1
- package/dist/fixtures/workspaces-paths/packages/lib-e/src/index.d.ts +0 -2
- package/dist/fixtures/workspaces-paths/packages/lib-e/src/index.js +0 -2
- package/dist/fixtures/workspaces-pnpm/apps/a/index.d.ts +0 -1
- package/dist/fixtures/workspaces-pnpm/apps/a/index.js +0 -6
- package/dist/fixtures/workspaces-pnpm/apps/b/index.d.ts +0 -1
- package/dist/fixtures/workspaces-pnpm/apps/b/index.js +0 -4
- package/dist/fixtures/workspaces-pnpm/docs/dangling.d.ts +0 -1
- package/dist/fixtures/workspaces-pnpm/docs/dangling.js +0 -1
- package/dist/fixtures/workspaces-pnpm/packages/lib-a/index.d.ts +0 -4
- package/dist/fixtures/workspaces-pnpm/packages/lib-a/index.js +0 -3
- package/dist/fixtures/workspaces-pnpm/packages/lib-b/index.d.ts +0 -3
- package/dist/fixtures/workspaces-pnpm/packages/lib-b/index.js +0 -2
- package/dist/fixtures/workspaces-self-reference/packages/self-reference/entry.d.ts +0 -1
- package/dist/fixtures/workspaces-self-reference/packages/self-reference/entry.js +0 -4
- package/dist/fixtures/workspaces-self-reference/packages/self-reference-from-plugin/entry.d.ts +0 -0
- package/dist/fixtures/workspaces-self-reference/packages/self-reference-from-plugin/entry.js +0 -2
- package/dist/fixtures/workspaces-self-reference/packages/self-reference-from-plugin/file.d.ts +0 -2
- package/dist/fixtures/workspaces-self-reference/packages/self-reference-from-plugin/file.js +0 -1
- package/dist/fixtures/zero-config/exclude.d.ts +0 -1
- package/dist/fixtures/zero-config/exclude.js +0 -1
- package/dist/fixtures/zero-config/index.d.ts +0 -1
- package/dist/fixtures/zero-config/index.js +0 -2
- package/dist/fixtures/zero-config/my-module.d.ts +0 -4
- package/dist/fixtures/zero-config/my-module.js +0 -6
- package/dist/fixtures/zero-config/my-namespace.d.ts +0 -5
- package/dist/fixtures/zero-config/my-namespace.js +0 -3
- package/dist/gitignore.test.d.ts +0 -1
- package/dist/gitignore.test.js +0 -22
- package/dist/helpers/baseArguments.d.ts +0 -8
- package/dist/helpers/baseArguments.js +0 -8
- package/dist/helpers/baseCounters.d.ts +0 -17
- package/dist/helpers/baseCounters.js +0 -7
- package/dist/helpers/index.d.ts +0 -2
- package/dist/helpers/index.js +0 -4
- package/dist/imports.test.d.ts +0 -1
- package/dist/imports.test.js +0 -39
- package/dist/js-only.test.d.ts +0 -1
- package/dist/js-only.test.js +0 -26
- package/dist/jsdoc.test.d.ts +0 -1
- package/dist/jsdoc.test.js +0 -21
- package/dist/members.test.d.ts +0 -1
- package/dist/members.test.js +0 -28
- package/dist/namespace.test.d.ts +0 -1
- package/dist/namespace.test.js +0 -18
- package/dist/npm-scripts.test.d.ts +0 -1
- package/dist/npm-scripts.test.js +0 -78
- package/dist/pathless.test.d.ts +0 -1
- package/dist/pathless.test.js +0 -14
- package/dist/paths-knip-config-workspaces.test.d.ts +0 -1
- package/dist/paths-knip-config-workspaces.test.js +0 -18
- package/dist/paths-knip-config.test.d.ts +0 -1
- package/dist/paths-knip-config.test.js +0 -18
- package/dist/peer-dependencies.test.d.ts +0 -1
- package/dist/peer-dependencies.test.js +0 -20
- package/dist/plugins/_template.test.d.ts +0 -1
- package/dist/plugins/_template.test.js +0 -12
- package/dist/plugins/ava.test.d.ts +0 -1
- package/dist/plugins/ava.test.js +0 -18
- package/dist/plugins/babel.test.d.ts +0 -1
- package/dist/plugins/babel.test.js +0 -62
- package/dist/plugins/capacitor.test.d.ts +0 -1
- package/dist/plugins/capacitor.test.js +0 -31
- package/dist/plugins/changesets.test.d.ts +0 -1
- package/dist/plugins/changesets.test.js +0 -12
- package/dist/plugins/commitlint.test.d.ts +0 -1
- package/dist/plugins/commitlint.test.js +0 -22
- package/dist/plugins/cspell.test.d.ts +0 -1
- package/dist/plugins/cspell.test.js +0 -10
- package/dist/plugins/cypress.test.d.ts +0 -1
- package/dist/plugins/cypress.test.js +0 -23
- package/dist/plugins/eslint.test.d.ts +0 -1
- package/dist/plugins/eslint.test.js +0 -43
- package/dist/plugins/gatsby.test.d.ts +0 -1
- package/dist/plugins/gatsby.test.js +0 -31
- package/dist/plugins/github-actions.test.d.ts +0 -1
- package/dist/plugins/github-actions.test.js +0 -25
- package/dist/plugins/husky.test.d.ts +0 -1
- package/dist/plugins/husky.test.js +0 -32
- package/dist/plugins/jest.test.d.ts +0 -1
- package/dist/plugins/jest.test.js +0 -18
- package/dist/plugins/lefthook.test.d.ts +0 -1
- package/dist/plugins/lefthook.test.js +0 -16
- package/dist/plugins/lint-staged.test.d.ts +0 -1
- package/dist/plugins/lint-staged.test.js +0 -18
- package/dist/plugins/markdownlint.test.d.ts +0 -1
- package/dist/plugins/markdownlint.test.js +0 -12
- package/dist/plugins/mocha.test.d.ts +0 -1
- package/dist/plugins/mocha.test.js +0 -22
- package/dist/plugins/next.test.d.ts +0 -1
- package/dist/plugins/next.test.js +0 -24
- package/dist/plugins/npm-package-json-lint.test.d.ts +0 -1
- package/dist/plugins/npm-package-json-lint.test.js +0 -12
- package/dist/plugins/nx.test.d.ts +0 -1
- package/dist/plugins/nx.test.js +0 -15
- package/dist/plugins/nyc.test.d.ts +0 -1
- package/dist/plugins/nyc.test.js +0 -10
- package/dist/plugins/playwright.test.d.ts +0 -1
- package/dist/plugins/playwright.test.js +0 -20
- package/dist/plugins/postcss.test.d.ts +0 -1
- package/dist/plugins/postcss.test.js +0 -33
- package/dist/plugins/prettier.test.d.ts +0 -1
- package/dist/plugins/prettier.test.js +0 -10
- package/dist/plugins/release-it.test.d.ts +0 -1
- package/dist/plugins/release-it.test.js +0 -10
- package/dist/plugins/remark.test.d.ts +0 -1
- package/dist/plugins/remark.test.js +0 -12
- package/dist/plugins/remix.test.d.ts +0 -1
- package/dist/plugins/remix.test.js +0 -39
- package/dist/plugins/rollup.test.d.ts +0 -1
- package/dist/plugins/rollup.test.js +0 -24
- package/dist/plugins/semantic-release.test.d.ts +0 -1
- package/dist/plugins/semantic-release.test.js +0 -31
- package/dist/plugins/sentry.test.d.ts +0 -1
- package/dist/plugins/sentry.test.js +0 -14
- package/dist/plugins/storybook.test.d.ts +0 -1
- package/dist/plugins/storybook.test.js +0 -18
- package/dist/plugins/stryker.test.d.ts +0 -1
- package/dist/plugins/stryker.test.js +0 -44
- package/dist/plugins/svelte.test.d.ts +0 -1
- package/dist/plugins/svelte.test.js +0 -21
- package/dist/plugins/typedoc.test.d.ts +0 -1
- package/dist/plugins/typedoc.test.js +0 -14
- package/dist/plugins/vitest.test.d.ts +0 -1
- package/dist/plugins/vitest.test.js +0 -17
- package/dist/plugins/webpack.test.d.ts +0 -1
- package/dist/plugins/webpack.test.js +0 -56
- package/dist/re-exports.test.d.ts +0 -1
- package/dist/re-exports.test.js +0 -18
- package/dist/react.test.d.ts +0 -1
- package/dist/react.test.js +0 -19
- package/dist/self-reference-from-plugin.test.d.ts +0 -1
- package/dist/self-reference-from-plugin.test.js +0 -47
- package/dist/self-reference.test.d.ts +0 -1
- package/dist/self-reference.test.js +0 -46
- package/dist/source-lab.d.ts +0 -21
- package/dist/source-lab.js +0 -135
- package/dist/tsconfig-paths-extends.test.d.ts +0 -1
- package/dist/tsconfig-paths-extends.test.js +0 -18
- package/dist/tsconfig-paths-implicit.test.d.ts +0 -1
- package/dist/tsconfig-paths-implicit.test.js +0 -18
- package/dist/tsconfig-paths.test.d.ts +0 -1
- package/dist/tsconfig-paths.test.js +0 -26
- package/dist/util/binaries/bash-parser.d.ts +0 -6
- package/dist/util/binaries/bash-parser.js +0 -57
- package/dist/util/binaries/index.d.ts +0 -2
- package/dist/util/binaries/index.js +0 -27
- package/dist/util/binaries/resolvers/fallback.js +0 -14
- package/dist/util/binaries/resolvers/index.d.ts +0 -4
- package/dist/util/binaries/resolvers/index.js +0 -4
- package/dist/util/binaries/resolvers/node.d.ts +0 -3
- package/dist/util/binaries/resolvers/node.js +0 -20
- package/dist/util/binaries/resolvers/npx.d.ts +0 -2
- package/dist/util/binaries/resolvers/npx.js +0 -5
- package/dist/util/binaries/resolvers/pnpm.d.ts +0 -2
- package/dist/util/binaries/resolvers/pnpm.js +0 -45
- package/dist/util/binaries/resolvers/yarn.d.ts +0 -2
- package/dist/util/binaries/resolvers/yarn.js +0 -46
- package/dist/util/binaries/types.d.ts +0 -18
- package/dist/util/binaries/types.js +0 -1
- package/dist/util/find-import-specifiers.d.ts +0 -5
- package/dist/util/find-import-specifiers.js +0 -48
- package/dist/util/get-included-issue-types.test.d.ts +0 -1
- package/dist/util/get-included-issue-types.test.js +0 -70
- package/dist/util/getReferencesFromScripts.test.d.ts +0 -1
- package/dist/util/getReferencesFromScripts.test.js +0 -126
- package/dist/util/log.d.ts +0 -7
- package/dist/util/log.js +0 -21
- package/dist/util/members.d.ts +0 -3
- package/dist/util/members.js +0 -25
- package/dist/util/module.test.d.ts +0 -1
- package/dist/util/module.test.js +0 -12
- package/dist/util/os.d.ts +0 -1
- package/dist/util/os.js +0 -1
- package/dist/util/project.d.ts +0 -13
- package/dist/util/project.js +0 -48
- package/dist/util/resolve-included-issue-types.d.ts +0 -16
- package/dist/util/resolve-included-issue-types.js +0 -30
- package/dist/util/type.d.ts +0 -2
- package/dist/util/type.js +0 -9
- package/dist/util/workspace.test.d.ts +0 -1
- package/dist/util/workspace.test.js +0 -13
- package/dist/workspaces-nested.test.d.ts +0 -1
- package/dist/workspaces-nested.test.js +0 -44
- package/dist/workspaces-paths.test.d.ts +0 -1
- package/dist/workspaces-paths.test.js +0 -21
- package/dist/workspaces-pnpm.test.d.ts +0 -1
- package/dist/workspaces-pnpm.test.js +0 -21
- package/dist/workspaces.test.d.ts +0 -1
- package/dist/workspaces.test.js +0 -56
- package/dist/zero-config.test.d.ts +0 -1
- package/dist/zero-config.test.js +0 -37
- /package/dist/{util/binaries/resolvers/fallback.d.ts → binaries/resolvers/rollup.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -7,23 +7,23 @@ dependencies leads to improved performance, less maintenance and easier refactor
|
|
|
7
7
|
export const myVar = true;
|
|
8
8
|
```
|
|
9
9
|
|
|
10
|
-
ESLint handles files in isolation, so it does not know whether `myVar` is
|
|
11
|
-
project as a whole, and finds unused exports, files and dependencies.
|
|
10
|
+
This is where ESLint stops: it handles files in isolation, so it does not know whether `myVar` is used somewhere else.
|
|
11
|
+
This is where Knip starts: it lints the project as a whole, and finds unused exports, files and dependencies.
|
|
12
12
|
|
|
13
|
-
It's only human to forget removing things that you no longer use. But how do you find out? Where
|
|
13
|
+
It's only human to forget removing things that you no longer use. But how do you find out? Where do you start finding
|
|
14
14
|
things that can be removed?
|
|
15
15
|
|
|
16
16
|
The dots don't connect themselves. This is where Knip comes in:
|
|
17
17
|
|
|
18
18
|
- [x] Finds **unused files, dependencies and exports**
|
|
19
19
|
- [x] Finds used dependencies not listed in `package.json`
|
|
20
|
-
- [x]
|
|
21
|
-
- [x] Finds unused members of classes and enums
|
|
22
|
-
- [x] Built-in support for [monorepos/workspaces][1]
|
|
20
|
+
- [x] Built-in support for [workspaces (monorepos)][1]
|
|
23
21
|
- [x] Growing list of [built-in plugins][2]
|
|
24
|
-
- [x] Use [compilers][3] to include other file types (e.g.
|
|
22
|
+
- [x] Use [compilers][3] to include other file types (e.g. `.mdx`, `.vue`, `.svelte`)
|
|
25
23
|
- [x] Checks npm scripts for used and unlisted dependencies
|
|
26
|
-
- [x]
|
|
24
|
+
- [x] Finds unused members of classes and enums
|
|
25
|
+
- [x] Finds duplicate exports
|
|
26
|
+
- [x] Supports any combination of JavaScript and TypeScript
|
|
27
27
|
- [x] Features multiple [reporters][4] and supports [custom reporters][5]
|
|
28
28
|
- [x] Run Knip as part of your CI environment to detect issues and prevent regressions
|
|
29
29
|
|
|
@@ -34,8 +34,8 @@ with OpenAI_</sup>
|
|
|
34
34
|
|
|
35
35
|
## Migrating to v2.0.0
|
|
36
36
|
|
|
37
|
-
Migrating from v1 to v2 requires no changes in configuration.
|
|
38
|
-
for
|
|
37
|
+
Migrating from v1 to v2 requires no changes in configuration. Mostly it's just a whole lot faster! The [release notes
|
|
38
|
+
for v2][8] provide more details.
|
|
39
39
|
|
|
40
40
|
## Installation
|
|
41
41
|
|
|
@@ -63,7 +63,7 @@ file. Let's say you are using `.ts` files excusively and have all source files o
|
|
|
63
63
|
|
|
64
64
|
```json
|
|
65
65
|
{
|
|
66
|
-
"$schema": "https://unpkg.com/knip@
|
|
66
|
+
"$schema": "https://unpkg.com/knip@2/schema.json",
|
|
67
67
|
"entry": ["src/index.ts"],
|
|
68
68
|
"project": ["src/**/*.ts"]
|
|
69
69
|
}
|
|
@@ -107,7 +107,7 @@ Then run the checks with `npx knip`. Or first add this script to `package.json`:
|
|
|
107
107
|
Use `npm run knip` to analyze the project and output unused files, dependencies and exports. Knip works just fine with
|
|
108
108
|
`yarn` or `pnpm` as well.
|
|
109
109
|
|
|
110
|
-
Using workspaces in a monorepo? Please see [workspaces
|
|
110
|
+
Using workspaces in a monorepo? Please see [workspaces][1] for more details about configuring them.
|
|
111
111
|
|
|
112
112
|
## Command-line options
|
|
113
113
|
|
|
@@ -122,11 +122,10 @@ Using workspaces in a monorepo? Please see [workspaces & monorepos][1] for more
|
|
|
122
122
|
--production Analyze only production source files (e.g. no tests, devDependencies, exported types)
|
|
123
123
|
--strict Consider only direct dependencies of workspace (not devDependencies, not other workspaces)
|
|
124
124
|
--workspace Analyze a single workspace (default: analyze all configured workspaces)
|
|
125
|
-
--ignore Ignore files matching this glob pattern, can be repeated
|
|
126
125
|
--no-gitignore Don't use .gitignore
|
|
127
126
|
--include Report only provided issue type(s), can be comma-separated or repeated (1)
|
|
128
127
|
--exclude Exclude provided issue type(s) from report, can be comma-separated or repeated (1)
|
|
129
|
-
--dependencies Shortcut for --include dependencies,unlisted
|
|
128
|
+
--dependencies Shortcut for --include dependencies,unlisted,unresolved
|
|
130
129
|
--exports Shortcut for --include exports,nsExports,classMembers,types,nsTypes,enumMembers,duplicates
|
|
131
130
|
--no-progress Don't show dynamic progress updates
|
|
132
131
|
--reporter Select reporter: symbols, compact, codeowners, json (default: symbols)
|
|
@@ -233,7 +232,7 @@ As always, make sure to backup files or use Git before deleting files or making
|
|
|
233
232
|
|
|
234
233
|
🔁 Repeat the process to reveal new unused files and exports. Sometimes it's so liberating to remove things!
|
|
235
234
|
|
|
236
|
-
## Workspaces
|
|
235
|
+
## Workspaces (monorepos)
|
|
237
236
|
|
|
238
237
|
Workspaces and monorepos are handled out-of-the-box by Knip. Every workspace is part of the analysis.
|
|
239
238
|
|
|
@@ -282,6 +281,22 @@ Use `--debug` to get more verbose output.
|
|
|
282
281
|
|
|
283
282
|
## Plugins
|
|
284
283
|
|
|
284
|
+
Plugins tell Knip where to look for configuration and entry files, and if necessary have a custom dependency finder.
|
|
285
|
+
Knip plugins are automatically activated, you don't need to install or configure anything.
|
|
286
|
+
|
|
287
|
+
To explain what they do, here's a quick example from a `.eslintrc.json` configuration file (for ESLint):
|
|
288
|
+
|
|
289
|
+
```json
|
|
290
|
+
{
|
|
291
|
+
"extends": ["airbnb"],
|
|
292
|
+
"plugins": ["prettier"]
|
|
293
|
+
}
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
Knip's ESLint plugin reads `.eslintrc.json` and will return `eslint-config-airbnb` and `eslint-plugin-prettier` from
|
|
297
|
+
this example to Knip, so it can tell you whether `package.json` is out of sync. In a nutshell, this is how plugins work.
|
|
298
|
+
This is especially useful over time when such configuration files change (and they will)!
|
|
299
|
+
|
|
285
300
|
Knip contains a growing list of plugins:
|
|
286
301
|
|
|
287
302
|
- [Ava][plugin-ava]
|
|
@@ -317,32 +332,60 @@ Knip contains a growing list of plugins:
|
|
|
317
332
|
- [Storybook][plugin-storybook]
|
|
318
333
|
- [Stryker][plugin-stryker]
|
|
319
334
|
- [Svelte][plugin-svelte]
|
|
335
|
+
- [Tailwind][plugin-tailwind]
|
|
320
336
|
- [TypeDoc][plugin-typedoc]
|
|
321
337
|
- [TypeScript][plugin-typescript]
|
|
322
338
|
- [Vitest][plugin-vitest]
|
|
323
339
|
- [Webpack][plugin-webpack]
|
|
324
340
|
|
|
325
341
|
Plugins are automatically activated. Each plugin is automatically enabled based on simple heuristics. Most of them check
|
|
326
|
-
whether one
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
Most plugins use one or both of the following file types:
|
|
342
|
+
whether one of a few dependencies are listed in `package.json`. Once enabled, they add a set of `config` files for
|
|
343
|
+
itself and/or `entry` files for Knip to analyze.
|
|
330
344
|
|
|
331
|
-
- `config`
|
|
332
|
-
- `entry`
|
|
345
|
+
- `config` files are given to the plugin's dependency finder
|
|
346
|
+
- `entry` files are given to Knip to include with the analysis of the rest of the source code
|
|
333
347
|
|
|
334
348
|
See each plugin's documentation for its default values.
|
|
335
349
|
|
|
336
350
|
### `config`
|
|
337
351
|
|
|
338
|
-
Plugins
|
|
339
|
-
|
|
340
|
-
|
|
352
|
+
Plugins usually include `config` files. They are handled by the plugin's custom dependency finder, which returns all
|
|
353
|
+
dependencies referenced in the files it is given. Knip handles the rest to determine which of those dependencies are
|
|
354
|
+
unused or missing.
|
|
341
355
|
|
|
342
356
|
### `entry`
|
|
343
357
|
|
|
344
|
-
Other configuration files use `require` or `import` statements to use dependencies, so they
|
|
345
|
-
|
|
358
|
+
Other configuration files use `require` or `import` statements to use dependencies, so they don't need special handing
|
|
359
|
+
and can be analyzed like any other source file. That's why these configuration files are also used as `entry` files.
|
|
360
|
+
|
|
361
|
+
### Override plugin configuration
|
|
362
|
+
|
|
363
|
+
Usually no custom configuration is required for plugins, but if your project uses custom file locations then Knip allows
|
|
364
|
+
to override any defaults. Let's take Cypress for example. By default it uses `cypress.config.js`, but your project uses
|
|
365
|
+
`config/cypress.js`. Also, the default pattern for test files is `cypress/e2e/**/*.cy.js`, but your project has them at
|
|
366
|
+
`e2e-tests/*.spec.ts`. Here's how to configure this:
|
|
367
|
+
|
|
368
|
+
```json
|
|
369
|
+
{
|
|
370
|
+
"cypress": {
|
|
371
|
+
"entry": ["config/cypress.js", "e2e-tests/*.spec.js"]
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
### Multi-project repositories
|
|
377
|
+
|
|
378
|
+
Some repositories have a single `package.json`, but consist of multiple projects with potentially lots of configuration
|
|
379
|
+
files (such as the [Nx "intregrated repo" style][11]). Let's assume some of these projects are apps and have their own
|
|
380
|
+
Cypress configuration and test files. In that case, we could configure the Cypress plugin like this:
|
|
381
|
+
|
|
382
|
+
```json
|
|
383
|
+
{
|
|
384
|
+
"cypress": {
|
|
385
|
+
"entry": ["apps/**/cypress.config.ts", "apps/**/cypress/e2e/*.spec.ts"]
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
```
|
|
346
389
|
|
|
347
390
|
### Disable a plugin
|
|
348
391
|
|
|
@@ -360,7 +403,8 @@ finding unused or missing dependencies. For instance, `.mdx`, `.vue` and `.svelt
|
|
|
360
403
|
|
|
361
404
|
Currently this is only supported by using `knip.js` or `knip.ts`. Provide a `compilers` object in the configuration
|
|
362
405
|
where each key represents the extension and the value is a function that takes the contents of these files as input and
|
|
363
|
-
returns JavaScript or TypeScript as output.
|
|
406
|
+
returns JavaScript or TypeScript as output. Here is an example that compiles `.mdx` files to JavaScript so these files
|
|
407
|
+
and their imports and exports become part of the analyis:
|
|
364
408
|
|
|
365
409
|
```js
|
|
366
410
|
import { compileSync } from 'mdx-js/mdx';
|
|
@@ -421,7 +465,7 @@ aliases. They can be configured manually:
|
|
|
421
465
|
|
|
422
466
|
```json
|
|
423
467
|
{
|
|
424
|
-
"$schema": "https://unpkg.com/knip@
|
|
468
|
+
"$schema": "https://unpkg.com/knip@2/schema.json",
|
|
425
469
|
"paths": {
|
|
426
470
|
"@lib": ["./lib/index.ts"],
|
|
427
471
|
"@lib/*": ["./lib/*"]
|
|
@@ -447,22 +491,8 @@ Knip provides the following built-in reporters:
|
|
|
447
491
|
|
|
448
492
|
When the provided built-in reporters are not sufficient, a custom reporter can be implemented.
|
|
449
493
|
|
|
450
|
-
Pass `--reporter ./my-reporter
|
|
451
|
-
|
|
452
|
-
```ts
|
|
453
|
-
type Reporter = (options: ReporterOptions) => void;
|
|
454
|
-
|
|
455
|
-
type ReporterOptions = {
|
|
456
|
-
report: Report;
|
|
457
|
-
issues: Issues;
|
|
458
|
-
cwd: string;
|
|
459
|
-
workingDir: string;
|
|
460
|
-
isProduction: boolean;
|
|
461
|
-
options: string;
|
|
462
|
-
};
|
|
463
|
-
```
|
|
464
|
-
|
|
465
|
-
The data can then be used to write issues to `stdout`, a JSON or CSV file, or sent to a service.
|
|
494
|
+
Pass `--reporter ./my-reporter` from the command-line. The data can then be used to write issues to `stdout`, a JSON or
|
|
495
|
+
CSV file, or sent to a service.
|
|
466
496
|
|
|
467
497
|
Find more details and ideas in [custom reporters][14].
|
|
468
498
|
|
|
@@ -537,23 +567,23 @@ All of this is hiding problems, so please make sure to plan for fixing them and/
|
|
|
537
567
|
|
|
538
568
|
This table is an ongoing comparison. Based on their docs (please report any mistakes):
|
|
539
569
|
|
|
540
|
-
| Feature
|
|
541
|
-
|
|
|
542
|
-
| Unused files
|
|
543
|
-
| Unused dependencies
|
|
544
|
-
| Unlisted dependencies
|
|
545
|
-
| [Plugins][2]
|
|
546
|
-
| [Compilers][3]
|
|
547
|
-
| Unused exports
|
|
548
|
-
| Unused class members
|
|
549
|
-
| Unused enum members
|
|
550
|
-
| Duplicate exports
|
|
551
|
-
| Search namespaces
|
|
552
|
-
| Custom reporters
|
|
553
|
-
| JavaScript support
|
|
554
|
-
| Configure entry files
|
|
555
|
-
| [Support workspaces
|
|
556
|
-
| ESLint plugin available
|
|
570
|
+
| Feature | **knip** | [depcheck][17] | [unimported][18] | [ts-unused-exports][19] | [ts-prune][20] |
|
|
571
|
+
| :---------------------- | :------: | :------------: | :--------------: | :---------------------: | :------------: |
|
|
572
|
+
| Unused files | ✅ | - | ✅ | - | - |
|
|
573
|
+
| Unused dependencies | ✅ | ✅ | ✅ | - | - |
|
|
574
|
+
| Unlisted dependencies | ✅ | ✅ | ✅ | - | - |
|
|
575
|
+
| [Plugins][2] | ✅ | ✅ | ❌ | - | - |
|
|
576
|
+
| [Compilers][3] | ✅ | - | - | - | - |
|
|
577
|
+
| Unused exports | ✅ | - | - | ✅ | ✅ |
|
|
578
|
+
| Unused class members | ✅ | - | - | - | - |
|
|
579
|
+
| Unused enum members | ✅ | - | - | - | - |
|
|
580
|
+
| Duplicate exports | ✅ | - | - | ❌ | ❌ |
|
|
581
|
+
| Search namespaces | ✅ | - | - | ✅ | ❌ |
|
|
582
|
+
| Custom reporters | ✅ | - | - | - | - |
|
|
583
|
+
| JavaScript support | ✅ | ✅ | ✅ | - | - |
|
|
584
|
+
| Configure entry files | ✅ | ❌ | ✅ | ❌ | ❌ |
|
|
585
|
+
| [Support workspaces][1] | ✅ | ❌ | ❌ | - | - |
|
|
586
|
+
| ESLint plugin available | - | - | - | ✅ | - |
|
|
557
587
|
|
|
558
588
|
✅ = Supported, ❌ = Not supported, - = Out of scope
|
|
559
589
|
|
|
@@ -591,22 +621,34 @@ The following commands are similar:
|
|
|
591
621
|
knip --include exports,types
|
|
592
622
|
knip --exports # Adds unused exports/types in namespaces and unused enum/class members
|
|
593
623
|
|
|
624
|
+
## Projects using Knip
|
|
625
|
+
|
|
626
|
+
Many thanks to some of the early adopters of Knip:
|
|
627
|
+
|
|
628
|
+
- [Block Protocol][22]
|
|
629
|
+
- [DeepmergeTS][23]
|
|
630
|
+
- [eslint-plugin-functional][24]
|
|
631
|
+
- [freeCodeCamp.org][25]
|
|
632
|
+
- [is-immutable-type][26]
|
|
633
|
+
- [release-it][27]
|
|
634
|
+
- [Template TypeScript Node Package][28]
|
|
635
|
+
|
|
594
636
|
## Knip?!
|
|
595
637
|
|
|
596
638
|
Knip is Dutch for a "cut". A Dutch expression is "to be ge**knip**t for something", which means to be perfectly suited
|
|
597
639
|
for the job. I'm motivated to make knip perfectly suited for the job of cutting projects to perfection! ✂️
|
|
598
640
|
|
|
599
|
-
[1]: #workspaces
|
|
641
|
+
[1]: #workspaces-monorepos
|
|
600
642
|
[2]: #plugins
|
|
601
643
|
[3]: #compilers
|
|
602
644
|
[4]: #reporters
|
|
603
645
|
[5]: #custom-reporters
|
|
604
646
|
[6]: https://labs.openai.com/s/xZQACaLepaKya0PRUPtIN5dC
|
|
605
647
|
[7]: ./assets/cow-with-orange-scissors-van-gogh-style.webp
|
|
606
|
-
[8]:
|
|
648
|
+
[8]: ./docs/release-notes-v2.md
|
|
607
649
|
[9]: #faq
|
|
608
650
|
[10]: #ignore
|
|
609
|
-
[11]:
|
|
651
|
+
[11]: https://nx.dev/concepts/integrated-vs-package-based
|
|
610
652
|
[12]: ./docs/writing-a-plugin.md
|
|
611
653
|
[13]: ./docs/compilers.md
|
|
612
654
|
[14]: ./docs/custom-reporters.md
|
|
@@ -617,6 +659,13 @@ for the job. I'm motivated to make knip perfectly suited for the job of cutting
|
|
|
617
659
|
[19]: https://github.com/pzavolinsky/ts-unused-exports
|
|
618
660
|
[20]: https://github.com/nadeesha/ts-prune
|
|
619
661
|
[21]: #production-mode
|
|
662
|
+
[22]: https://github.com/blockprotocol/blockprotocol
|
|
663
|
+
[23]: https://github.com/RebeccaStevens/deepmerge-ts
|
|
664
|
+
[24]: https://github.com/eslint-functional/eslint-plugin-functional
|
|
665
|
+
[25]: https://github.com/freeCodeCamp/freeCodeCamp
|
|
666
|
+
[26]: https://github.com/RebeccaStevens/is-immutable-type
|
|
667
|
+
[27]: https://github.com/release-it/release-it
|
|
668
|
+
[28]: https://github.com/JoshuaKGoldberg/template-typescript-node-package
|
|
620
669
|
[plugin-ava]: ./src/plugins/ava
|
|
621
670
|
[plugin-babel]: ./src/plugins/babel
|
|
622
671
|
[plugin-capacitor]: ./src/plugins/capacitor
|
|
@@ -650,6 +699,7 @@ for the job. I'm motivated to make knip perfectly suited for the job of cutting
|
|
|
650
699
|
[plugin-storybook]: ./src/plugins/storybook
|
|
651
700
|
[plugin-stryker]: ./src/plugins/stryker
|
|
652
701
|
[plugin-svelte]: ./src/plugins/svelte
|
|
702
|
+
[plugin-tailwind]: ./src/plugins/tailwind
|
|
653
703
|
[plugin-typedoc]: ./src/plugins/typedoc
|
|
654
704
|
[plugin-typescript]: ./src/plugins/typescript
|
|
655
705
|
[plugin-vitest]: ./src/plugins/vitest
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import parseArgs from 'minimist';
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { compact } from '../../util/array.js';
|
|
3
|
+
import { tryResolveFilePaths } from './util.js';
|
|
4
|
+
const argFilters = {
|
|
4
5
|
'babel-node': parsed => [parsed._[0], parsed.require].flat(),
|
|
5
6
|
'ts-node': parsed => [parsed._[0], parsed.require].flat(),
|
|
6
7
|
tsx: parsed => parsed._.filter(p => p !== 'watch'),
|
|
@@ -8,7 +9,7 @@ const argResolvers = {
|
|
|
8
9
|
};
|
|
9
10
|
export const resolve = (binary, args, { cwd }) => {
|
|
10
11
|
const parsed = parseArgs(args, { string: ['r'], alias: { require: ['r', 'loader'] } });
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
return [binary, ...tryResolveFilePaths(cwd,
|
|
12
|
+
const argFilter = argFilters[binary] ?? argFilters.default;
|
|
13
|
+
const filteredArgs = compact(argFilter(parsed));
|
|
14
|
+
return [binary, ...tryResolveFilePaths(cwd, filteredArgs)];
|
|
14
15
|
};
|
|
@@ -1,19 +1,5 @@
|
|
|
1
1
|
import parseArgs from 'minimist';
|
|
2
|
-
import {
|
|
3
|
-
import { _tryResolve } from '../../util/require.js';
|
|
4
|
-
const tryResolveFilePath = (cwd, specifier, fallback) => {
|
|
5
|
-
if (specifier) {
|
|
6
|
-
const filePath = join(cwd, specifier);
|
|
7
|
-
if (!isInNodeModules(filePath)) {
|
|
8
|
-
const resolvedFilePath = _tryResolve(filePath, cwd);
|
|
9
|
-
if (resolvedFilePath)
|
|
10
|
-
return [resolvedFilePath];
|
|
11
|
-
}
|
|
12
|
-
return fallback ? [fallback] : [];
|
|
13
|
-
}
|
|
14
|
-
return [];
|
|
15
|
-
};
|
|
16
|
-
export const tryResolveFilePaths = (cwd, specifiers) => specifiers.flatMap(specifier => tryResolveFilePath(cwd, specifier, specifier));
|
|
2
|
+
import { tryResolveFilePath, tryResolveFilePaths } from './util.js';
|
|
17
3
|
export const resolve = (binary, args, { cwd }) => {
|
|
18
4
|
const parsed = parseArgs(args, { string: ['r'], alias: { require: ['r', 'loader', 'experimental-loader'] } });
|
|
19
5
|
return [...tryResolveFilePath(cwd, parsed._[0]), ...tryResolveFilePaths(cwd, [parsed.require].flat())];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import parseArgs from 'minimist';
|
|
2
|
+
import { tryResolveFilePaths } from './util.js';
|
|
3
|
+
export const resolve = (binary, args, { cwd, fromArgs }) => {
|
|
4
|
+
const safeArgs = args.filter(arg => arg !== '--watch');
|
|
5
|
+
const parsed = parseArgs(safeArgs, { alias: { plugin: 'p' } });
|
|
6
|
+
const watchers = parsed.watch ? fromArgs(Object.values(parsed.watch)) : [];
|
|
7
|
+
const plugins = parsed.plugin ? tryResolveFilePaths(cwd, [parsed.plugin].flat()) : [];
|
|
8
|
+
const configPlugins = parsed.configPlugin ? tryResolveFilePaths(cwd, [parsed.configPlugin].flat()) : [];
|
|
9
|
+
return [binary, ...watchers, ...plugins, ...configPlugins];
|
|
10
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { isInNodeModules, join } from '../../util/path.js';
|
|
2
|
+
import { _tryResolve } from '../../util/require.js';
|
|
3
|
+
export const tryResolveFilePath = (cwd, specifier, fallback) => {
|
|
4
|
+
if (specifier) {
|
|
5
|
+
const filePath = join(cwd, specifier);
|
|
6
|
+
if (!isInNodeModules(filePath)) {
|
|
7
|
+
const resolvedFilePath = _tryResolve(filePath, cwd);
|
|
8
|
+
if (resolvedFilePath)
|
|
9
|
+
return [resolvedFilePath];
|
|
10
|
+
}
|
|
11
|
+
return fallback ? [fallback] : [];
|
|
12
|
+
}
|
|
13
|
+
return [];
|
|
14
|
+
};
|
|
15
|
+
export const tryResolveFilePaths = (cwd, specifiers) => specifiers.flatMap(specifier => tryResolveFilePath(cwd, specifier, specifier));
|
package/dist/cli.js
CHANGED
|
File without changes
|
|
@@ -11,10 +11,11 @@ import { findFile, loadJSON } from './util/fs.js';
|
|
|
11
11
|
import { getIncludedIssueTypes } from './util/get-included-issue-types.js';
|
|
12
12
|
import { _dirGlob } from './util/glob.js';
|
|
13
13
|
import { _load } from './util/loader.js';
|
|
14
|
-
import { join, relative } from './util/path.js';
|
|
14
|
+
import { join, relative, toPosix } from './util/path.js';
|
|
15
15
|
import { toCamelCase } from './util/plugin.js';
|
|
16
16
|
import { byPathDepth } from './util/workspace.js';
|
|
17
17
|
const { config: rawConfigArg, workspace: rawWorkspaceArg, include = [], exclude = [], dependencies = false, exports = false, } = parsedArgs.values;
|
|
18
|
+
const workspaceArg = rawWorkspaceArg ? toPosix(rawWorkspaceArg).replace(/^\.\//, '').replace(/\/$/, '') : undefined;
|
|
18
19
|
const getDefaultWorkspaceConfig = (extensions) => {
|
|
19
20
|
const exts = [...DEFAULT_EXTENSIONS, ...(extensions ?? [])].map(ext => ext.slice(1)).join(',');
|
|
20
21
|
return {
|
|
@@ -180,7 +181,6 @@ export class ConfigurationChief {
|
|
|
180
181
|
}
|
|
181
182
|
getEnabledWorkspaces() {
|
|
182
183
|
const allWorkspaces = this.getAllWorkspaces();
|
|
183
|
-
const workspace = (rawWorkspaceArg ?? '').replace(/\/$/, '');
|
|
184
184
|
const getAncestors = (name) => (ancestors, ancestorName) => {
|
|
185
185
|
if (name === ancestorName)
|
|
186
186
|
return ancestors;
|
|
@@ -188,9 +188,7 @@ export class ConfigurationChief {
|
|
|
188
188
|
ancestors.push(ancestorName);
|
|
189
189
|
return ancestors;
|
|
190
190
|
};
|
|
191
|
-
const workspaces =
|
|
192
|
-
? [workspace, ...allWorkspaces.reduce(getAncestors(workspace), [])]
|
|
193
|
-
: allWorkspaces;
|
|
191
|
+
const workspaces = workspaceArg ? [workspaceArg] : allWorkspaces;
|
|
194
192
|
return workspaces.sort(byPathDepth).map((name) => ({
|
|
195
193
|
name,
|
|
196
194
|
pkgName: this.manifestWorkspaces.get(name) ?? this.manifest?.name,
|