knip 2.0.0-beta.1 → 2.0.0-beta.2
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 +110 -62
- 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/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 +5 -3
- 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
|
|
|
@@ -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]
|
|
@@ -323,26 +338,53 @@ Knip contains a growing list of plugins:
|
|
|
323
338
|
- [Webpack][plugin-webpack]
|
|
324
339
|
|
|
325
340
|
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:
|
|
341
|
+
whether one of a few dependencies are listed in `package.json`. Once enabled, they add a set of `config` files for
|
|
342
|
+
itself and/or `entry` files for Knip to analyze.
|
|
330
343
|
|
|
331
|
-
- `config`
|
|
332
|
-
- `entry`
|
|
344
|
+
- `config` files are given to the plugin's dependency finder
|
|
345
|
+
- `entry` files are given to Knip to include with the analysis of the rest of the source code
|
|
333
346
|
|
|
334
347
|
See each plugin's documentation for its default values.
|
|
335
348
|
|
|
336
349
|
### `config`
|
|
337
350
|
|
|
338
|
-
Plugins
|
|
339
|
-
|
|
340
|
-
|
|
351
|
+
Plugins usually include `config` files. They are handled by the plugin's custom dependency finder, which returns all
|
|
352
|
+
dependencies referenced in the files it is given. Knip handles the rest to determine which of those dependencies are
|
|
353
|
+
unused or missing.
|
|
341
354
|
|
|
342
355
|
### `entry`
|
|
343
356
|
|
|
344
|
-
Other configuration files use `require` or `import` statements to use dependencies, so they
|
|
345
|
-
|
|
357
|
+
Other configuration files use `require` or `import` statements to use dependencies, so they don't need special handing
|
|
358
|
+
and can be analyzed like any other source file. That's why these configuration files are also used as `entry` files.
|
|
359
|
+
|
|
360
|
+
### Override plugin configuration
|
|
361
|
+
|
|
362
|
+
Usually no custom configuration is required for plugins, but if your project uses custom file locations then Knip allows
|
|
363
|
+
to override any defaults. Let's take Cypress for example. By default it uses `cypress.config.js`, but your project uses
|
|
364
|
+
`config/cypress.js`. Also, the default pattern for test files is `cypress/e2e/**/*.cy.js`, but your project has them at
|
|
365
|
+
`e2e-tests/*.spec.ts`. Here's how to configure this:
|
|
366
|
+
|
|
367
|
+
```json
|
|
368
|
+
{
|
|
369
|
+
"cypress": {
|
|
370
|
+
"entry": ["config/cypress.js", "e2e-tests/*.spec.js"]
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### Multi-project repositories
|
|
376
|
+
|
|
377
|
+
Some repositories have a single `package.json`, but consist of multiple projects with potentially lots of configuration
|
|
378
|
+
files (such as the [Nx "intregrated repo" style][11]). Let's assume some of these projects are apps and have their own
|
|
379
|
+
Cypress configuration and test files. In that case, we could configure the Cypress plugin like this:
|
|
380
|
+
|
|
381
|
+
```json
|
|
382
|
+
{
|
|
383
|
+
"cypress": {
|
|
384
|
+
"entry": ["apps/**/cypress.config.ts", "apps/**/cypress/e2e/*.spec.ts"]
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
```
|
|
346
388
|
|
|
347
389
|
### Disable a plugin
|
|
348
390
|
|
|
@@ -360,7 +402,8 @@ finding unused or missing dependencies. For instance, `.mdx`, `.vue` and `.svelt
|
|
|
360
402
|
|
|
361
403
|
Currently this is only supported by using `knip.js` or `knip.ts`. Provide a `compilers` object in the configuration
|
|
362
404
|
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.
|
|
405
|
+
returns JavaScript or TypeScript as output. Here is an example that compiles `.mdx` files to JavaScript so these files
|
|
406
|
+
and their imports and exports become part of the analyis:
|
|
364
407
|
|
|
365
408
|
```js
|
|
366
409
|
import { compileSync } from 'mdx-js/mdx';
|
|
@@ -447,22 +490,8 @@ Knip provides the following built-in reporters:
|
|
|
447
490
|
|
|
448
491
|
When the provided built-in reporters are not sufficient, a custom reporter can be implemented.
|
|
449
492
|
|
|
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.
|
|
493
|
+
Pass `--reporter ./my-reporter` from the command-line. The data can then be used to write issues to `stdout`, a JSON or
|
|
494
|
+
CSV file, or sent to a service.
|
|
466
495
|
|
|
467
496
|
Find more details and ideas in [custom reporters][14].
|
|
468
497
|
|
|
@@ -537,23 +566,23 @@ All of this is hiding problems, so please make sure to plan for fixing them and/
|
|
|
537
566
|
|
|
538
567
|
This table is an ongoing comparison. Based on their docs (please report any mistakes):
|
|
539
568
|
|
|
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
|
|
569
|
+
| Feature | **knip** | [depcheck][17] | [unimported][18] | [ts-unused-exports][19] | [ts-prune][20] |
|
|
570
|
+
| :---------------------- | :------: | :------------: | :--------------: | :---------------------: | :------------: |
|
|
571
|
+
| Unused files | ✅ | - | ✅ | - | - |
|
|
572
|
+
| Unused dependencies | ✅ | ✅ | ✅ | - | - |
|
|
573
|
+
| Unlisted dependencies | ✅ | ✅ | ✅ | - | - |
|
|
574
|
+
| [Plugins][2] | ✅ | ✅ | ❌ | - | - |
|
|
575
|
+
| [Compilers][3] | ✅ | - | - | - | - |
|
|
576
|
+
| Unused exports | ✅ | - | - | ✅ | ✅ |
|
|
577
|
+
| Unused class members | ✅ | - | - | - | - |
|
|
578
|
+
| Unused enum members | ✅ | - | - | - | - |
|
|
579
|
+
| Duplicate exports | ✅ | - | - | ❌ | ❌ |
|
|
580
|
+
| Search namespaces | ✅ | - | - | ✅ | ❌ |
|
|
581
|
+
| Custom reporters | ✅ | - | - | - | - |
|
|
582
|
+
| JavaScript support | ✅ | ✅ | ✅ | - | - |
|
|
583
|
+
| Configure entry files | ✅ | ❌ | ✅ | ❌ | ❌ |
|
|
584
|
+
| [Support workspaces][1] | ✅ | ❌ | ❌ | - | - |
|
|
585
|
+
| ESLint plugin available | - | - | - | ✅ | - |
|
|
557
586
|
|
|
558
587
|
✅ = Supported, ❌ = Not supported, - = Out of scope
|
|
559
588
|
|
|
@@ -591,22 +620,34 @@ The following commands are similar:
|
|
|
591
620
|
knip --include exports,types
|
|
592
621
|
knip --exports # Adds unused exports/types in namespaces and unused enum/class members
|
|
593
622
|
|
|
623
|
+
## Projects using Knip
|
|
624
|
+
|
|
625
|
+
Many thanks to some of the early adopters of Knip:
|
|
626
|
+
|
|
627
|
+
- [Block Protocol][22]
|
|
628
|
+
- [DeepmergeTS][23]
|
|
629
|
+
- [eslint-plugin-functional][24]
|
|
630
|
+
- [freeCodeCamp.org][25]
|
|
631
|
+
- [is-immutable-type][26]
|
|
632
|
+
- [release-it][27]
|
|
633
|
+
- [Template TypeScript Node Package][28]
|
|
634
|
+
|
|
594
635
|
## Knip?!
|
|
595
636
|
|
|
596
637
|
Knip is Dutch for a "cut". A Dutch expression is "to be ge**knip**t for something", which means to be perfectly suited
|
|
597
638
|
for the job. I'm motivated to make knip perfectly suited for the job of cutting projects to perfection! ✂️
|
|
598
639
|
|
|
599
|
-
[1]: #workspaces
|
|
640
|
+
[1]: #workspaces-monorepos
|
|
600
641
|
[2]: #plugins
|
|
601
642
|
[3]: #compilers
|
|
602
643
|
[4]: #reporters
|
|
603
644
|
[5]: #custom-reporters
|
|
604
645
|
[6]: https://labs.openai.com/s/xZQACaLepaKya0PRUPtIN5dC
|
|
605
646
|
[7]: ./assets/cow-with-orange-scissors-van-gogh-style.webp
|
|
606
|
-
[8]:
|
|
647
|
+
[8]: ./docs/release-notes-v2.md
|
|
607
648
|
[9]: #faq
|
|
608
649
|
[10]: #ignore
|
|
609
|
-
[11]:
|
|
650
|
+
[11]: https://nx.dev/concepts/integrated-vs-package-based
|
|
610
651
|
[12]: ./docs/writing-a-plugin.md
|
|
611
652
|
[13]: ./docs/compilers.md
|
|
612
653
|
[14]: ./docs/custom-reporters.md
|
|
@@ -617,6 +658,13 @@ for the job. I'm motivated to make knip perfectly suited for the job of cutting
|
|
|
617
658
|
[19]: https://github.com/pzavolinsky/ts-unused-exports
|
|
618
659
|
[20]: https://github.com/nadeesha/ts-prune
|
|
619
660
|
[21]: #production-mode
|
|
661
|
+
[22]: https://github.com/blockprotocol/blockprotocol
|
|
662
|
+
[23]: https://github.com/RebeccaStevens/deepmerge-ts
|
|
663
|
+
[24]: https://github.com/eslint-functional/eslint-plugin-functional
|
|
664
|
+
[25]: https://github.com/freeCodeCamp/freeCodeCamp
|
|
665
|
+
[26]: https://github.com/RebeccaStevens/is-immutable-type
|
|
666
|
+
[27]: https://github.com/release-it/release-it
|
|
667
|
+
[28]: https://github.com/JoshuaKGoldberg/template-typescript-node-package
|
|
620
668
|
[plugin-ava]: ./src/plugins/ava
|
|
621
669
|
[plugin-babel]: ./src/plugins/babel
|
|
622
670
|
[plugin-capacitor]: ./src/plugins/capacitor
|
|
@@ -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,
|