본문으로 바로가기
728x90

커리어리에 Knip을 소개 해주신 분이 있어서 한 번 사용해봤는데 꽤 유용하다. 제목 그대로
자바스크립트와 타입스크립트에서 사용하지 않는 파일, Dependencies, exports를 찾아준다.

공식 홈페이지를 가보면 아주 단순하고 사용법도 너무 간단해서 Typescript 대표 오픈소스인 Vscode를 clone해서 사용해봤습니다.

1. 설치

yarn add -D knip

 

2. 스크립트 제공

{
   "scripts": {
      ...,
      "knip": "knip"
   }
}

 

3.  실행 결과

  • Unused files
Unused files (3953)
.eslintplugin/code-amd-node-module.ts
.eslintplugin/code-declare-service-brand.ts
.eslintplugin/code-ensure-no-disposables-leak-in-test.ts
src/vs/editor/common/services/getIconClasses.ts
src/vs/editor/common/services/languageFeatureDebounce.ts
src/vs/editor/common/services/languageFeatures.ts
src/vs/editor/common/services/languageFeaturesService.ts
src/vs/editor/common/services/languageService.ts
src/vs/editor/common/services/languagesAssociations.ts
src/vscode-dts/vscode.proposed.treeViewMarkdownMessage.d.ts
src/vscode-dts/vscode.proposed.treeViewReveal.d.ts
src/vscode-dts/vscode.proposed.tunnelFactory.d.ts
...

 

  • Unused dependencies & devDependencies
Unused dependencies (33)
@microsoft/1ds-post-js            package.json
@parcel/watcher                   package.json
@vscode/policy-watcher            package.json
@vscode/proxy-agent               package.json
@vscode/ripgrep                   package.json
@vscode/spdlog                    package.json
@vscode/sqlite3                   package.json
@vscode/sudo-prompt               package.json
...

Unused devDependencies (61)
@swc/core                              package.json
@types/cookie                          package.json
@types/debug                           package.json
@types/graceful-fs                     package.json
@types/gulp-postcss                    package.json
@types/gulp-svgmin                     package.json
@types/http-proxy-agent                package.json
@types/kerberos                        package.json
@types/trusted-types                   package.json
@types/wicg-file-system-access         package.json
...

 

  • Unused exports
Unused exports in namespaces (41)
packageLocalExtensionsStream        function  build/lib/extensions.ts:329:17                                                       
packageMarketplaceExtensionsStream  function  build/lib/extensions.ts:372:17                                                       
scanBuiltinExtensions               function  build/lib/extensions.ts:406:17                                                       
translatePackageJSON                function  build/lib/extensions.ts:443:17                                                       
webpackExtensions                   function  build/lib/extensions.ts:480:23                                                       
buildExtensionMedia                 function  build/lib/extensions.ts:580:23                                                       
fixWin32DirectoryPermissions        function  build/lib/util.ts:115:17                                                             
toFileUri                           function  build/lib/util.ts:152:17                                                             
skipDirectories                     function  build/lib/util.ts:162:17                 
JavaScript                   ProjectType    extensions/typescript-language-features/src/tsconfig.ts:16:2
...

Unused exported types (133)
IGitHubAssetOptions                 interface  build/lib/fetch.ts:116:18                                                              
IFetchOptions                       interface  build/lib/fetch.ts:14:18                                                               
Language                            interface  build/lib/i18n.ts:23:18                                                                
InnoSetup                           interface  build/lib/i18n.ts:29:18                                                                
Resource                            interface  build/lib/i18n.ts:58:18                        
...

Unused exported enum members (52)
NotAtRepositoryRoot          GitErrorCodes  extensions/git/src/api/git.d.ts:373:2                       
CantOpenResource             GitErrorCodes  extensions/git/src/api/git.d.ts:382:2                       
GitNotFound                  GitErrorCodes  extensions/git/src/api/git.d.ts:383:2                       
IsInSubmodule                GitErrorCodes  extensions/git/src/api/git.d.ts:397:2                       
INDEX_DELETED                Status         extensions/git/src/api/git.d.ts:81:2           
...

 

인간이기에 놓치는 부분이 생기는데 Microsoft사의 vscode조차 이런 일이 발생하네요.
GitHub Actions라도 붙혀놓고 지속적인 관리를 한다면 관리포인트가 줄지 않을까 싶습니다 😁