패키지 매니저의 요건
DESCRIPTION
TRANSCRIPT
![Page 1: 패키지 매니저의 요건](https://reader031.vdocuments.mx/reader031/viewer/2022020217/54878a8fb4af9f5f388b594e/html5/thumbnails/1.jpg)
npm으로 알아보는
패키지 매니저의 요건
안오균
![Page 2: 패키지 매니저의 요건](https://reader031.vdocuments.mx/reader031/viewer/2022020217/54878a8fb4af9f5f388b594e/html5/thumbnails/2.jpg)
패키지 매니저란?
• 패키지 매니저 = 패키지 매니지먼트 시스템
• 설치/업데이트/설정/삭제를 자동화해주는 툴
• 소프트웨어의 의존성이나 버전 정보를 관리
![Page 3: 패키지 매니저의 요건](https://reader031.vdocuments.mx/reader031/viewer/2022020217/54878a8fb4af9f5f388b594e/html5/thumbnails/3.jpg)
패키지란?
• 소프트웨어나 애플리케이션, 데이터의 '배포판'
• 소프트웨어의 메타데이터도 포함
(이름, 설명, 버전, 벤더, 체크섬, 의존성 목록 등)
![Page 4: 패키지 매니저의 요건](https://reader031.vdocuments.mx/reader031/viewer/2022020217/54878a8fb4af9f5f388b594e/html5/thumbnails/4.jpg)
패키지 매니저의 예
• App store, Google play, Chrome web store, ...
• Cygwin, MacPorts, Homebrew, ...
• Maven, EasyInstall, RubyGems, npm, ...
![Page 5: 패키지 매니저의 요건](https://reader031.vdocuments.mx/reader031/viewer/2022020217/54878a8fb4af9f5f388b594e/html5/thumbnails/5.jpg)
패키지 매니저의 요건
• 패키지의 설치
• 패키지의 의존성 관리
• 의존하는 패키지의 버전 관리
• 패키지의 검색
• 패키지의 배포
![Page 6: 패키지 매니저의 요건](https://reader031.vdocuments.mx/reader031/viewer/2022020217/54878a8fb4af9f5f388b594e/html5/thumbnails/6.jpg)
패키지의 설치
• 패키지를 설치/삭제할 수 있는 방법 제시
• 패키지 구조에 대한 컨벤션을 명확히 정의
• 엔드 유저는 패키지 매니저의 사용법만 익히면 되도록
![Page 7: 패키지 매니저의 요건](https://reader031.vdocuments.mx/reader031/viewer/2022020217/54878a8fb4af9f5f388b594e/html5/thumbnails/7.jpg)
패키지의 의존성 관리
• 패키지 간 의존성 관리를 할 수 있어야 함
• foo라는 패키지가 bar/baz에 의존적이면,
패키지 매니저가 이를 알고 함께 설치해야 함
• 대부분 특정 버전에 의존적이므로,
호환 가능한 버전의 패키지가 설치되어야 함
![Page 8: 패키지 매니저의 요건](https://reader031.vdocuments.mx/reader031/viewer/2022020217/54878a8fb4af9f5f388b594e/html5/thumbnails/8.jpg)
의존하는 패키지의 버전 관리
• 의존하고 있는 패키지의 버전 관리가 용이해야 함
• 어떤 사용자는 현재 사용하고 있는 안정화 버전을,
다른 사용자는 항상 최신 버전을 유지하려 함
• 사용자가 원하는 방법을 사용할 수 있어야 함
![Page 9: 패키지 매니저의 요건](https://reader031.vdocuments.mx/reader031/viewer/2022020217/54878a8fb4af9f5f388b594e/html5/thumbnails/9.jpg)
패키지의 검색
• 새로운 패키지 검색이 용이해야 함
• 다른 패키지가 이미 해결한 문제라 생각된다면,
패키지 매니저에서 해당 목록을 검색할 수 있어야 함
![Page 10: 패키지 매니저의 요건](https://reader031.vdocuments.mx/reader031/viewer/2022020217/54878a8fb4af9f5f388b594e/html5/thumbnails/10.jpg)
패키지의 배포
• 패키지 제작자가 패키지를 배포할 수 있는 도구 제시
• 사용자가 쉽게 찾아낼 수 있는 곳에 배포되어야 함
![Page 11: 패키지 매니저의 요건](https://reader031.vdocuments.mx/reader031/viewer/2022020217/54878a8fb4af9f5f388b594e/html5/thumbnails/11.jpg)
npm의 예: 설치
$ npm install foo
• 모듈은 node_modules/foo 디렉토리에 설치
• 사용자는 고민없이 npm install <module>을 실행
![Page 12: 패키지 매니저의 요건](https://reader031.vdocuments.mx/reader031/viewer/2022020217/54878a8fb4af9f5f388b594e/html5/thumbnails/12.jpg)
npm의 예: 의존성 관리
• package.json 의 dependencies 항목에 의존성 관리
• 의존 모듈을 자동으로 설치
• 의존하는 패키지의 버전을 명시할 수 있음
![Page 13: 패키지 매니저의 요건](https://reader031.vdocuments.mx/reader031/viewer/2022020217/54878a8fb4af9f5f388b594e/html5/thumbnails/13.jpg)
npm의 예: 검색
$ npm search <keyword>
• 키워드로 모듈 목록 검색 가능
• package.json 의 keywords 항목에서
검색용 키워드를 등록할 수 있음
$ npm info <module>
• 모듈의 상세 정보 조회 가능
![Page 14: 패키지 매니저의 요건](https://reader031.vdocuments.mx/reader031/viewer/2022020217/54878a8fb4af9f5f388b594e/html5/thumbnails/14.jpg)
npm의 예: 배포
$ npm publish <module>
• publish 명령어로 npm registry 에 배포 가능
• 배포한 모듈은 npm install <module> 로 설치 가능
• npm search <keyword> 로 검색 대상이 됨
![Page 15: 패키지 매니저의 요건](https://reader031.vdocuments.mx/reader031/viewer/2022020217/54878a8fb4af9f5f388b594e/html5/thumbnails/15.jpg)
참고
• Package Management System
• List of Software Package Management System
• The State of JavaScript Package Management