패키지와 패키지 매니저
→ 패키지란 : 패키지는 여러 파일이 담겨있는 하나의 상자입니다.
→ 여러 파일을 담고 있는 하나의 파일을 '압축 파일'이라고 합니다. (ex)알집, 반디집)
→ 리눅스의 패키지는 여러 파일을 모아 하나의 파일로 저장하고 있는 압축파일입니다.
→ 패키지 안에 들어 있는 파일의 구성
1) 프로그램 파일 2) 프로그램 설치 파일
3) 프로그램 설치 설명서 4) 프로그램에 대한 정보를 담은 파일
→ 패키지 안에는 하나의 프로그램이 정상적으로 설치되고 동작하기 위한 모든 파일이 압축
→ 프로그램에 대한 정보를 담은 파일에 담긴 정보 : 프로그램 A를 설치하기 위해 프로그램 B가 필요하다는 정보
/ 패키지를 이용해 프로그램을 설치하면, 패키지에 포함된 정보를 이용해 프로그램 B를 먼저 설치하고 나서 프로그램 A를 설치합니다.
→ 패키지 매니저를 사용하지 않고, 프로그램을 독립적으로 설치시 단점
: 여러 프로그램을 개별로 설치하기 위해서는, 각각의 프로그램이 저장된 위치를 모두 알아야 합니다
: 원하는 프로그램을 찾기 위해서는 해당 프로그램을 저장하고 있는 저장소의 위치를 알아야 합니다
: 해당 프로그램의 업데이트 여부를 확인하기 위해서도 주기적으로 저장소를 방문해서 확인해야 합니다.
-> 만약 컴퓨터에 설치된 프로그램이 점점 늘어난다면, 모든 프로그램을 업데이트하는 일이 불가능에 가까워집니다.
→ 패키지 매니저는 패키지의 설치, 변경, 삭제 등 관리를 편리하게 해주는 도구
→ 리눅스 운영체제의 사용자도 패키지 매니저를 이용해 필요한 패키지를 설치할 수 있습니다
→ 패키지 매니저는 모든 패키지의 저장소 위치를 저장하고 있습니다
→ 사용자가 패키지 매니저에게 특정 프로그램의 설치를 요청하면, 패키지 매니저는 패키지가 저장된 위치에서 패키지를 다운로드 받아 설치 프로그램을 실행합니다
→ 패키지 매니저는 설치된 모든 프로그램의 업데이트를 확인하거나, 필요없는 프로그램을 제거하는 데에도 사용할 수 있습니다
----------------------------------------------------------------------------------------------------------------
MacOS 운영체제에서 터미널을 통해 Homebrew 패키지 매니저를 설치하고 패키지를 관리하는 명령어를 사용할 수 있다.
- brew update: 패키지의 업데이트 여부 확인
- brew outdated: 업데이트 필요한 파일 조회
- brew upgrade: 프로그램 업그레이드
- brew info: 프로그램의 정보 확인
- brew install: 프로그램 설치
- brew list: 설치된 프로그램 목록 보기
- brew uninstall: 프로그램 삭제
- 런타임
→ 런타임이란, 프로그래밍 언어가 실행되는 환경, 그리고 node.js는 JavaScript 런타임
→ 런타임 이란 어떤 프로그램이 동작할 때, 프로그램이 동작하는 곳
ex) 크롬, 사파리 같은 웹 브라우저가 바로 JavaScript 런타임입니다.
→ JavaScript를 이용해서 코드를 적었으면 코드가 실행되는데 이 때, 실행되는 곳이 바로 런타임입니다.
→ 웹 브라우저가 대표적인 JavaScript 런타임 / node.js JavaScript 런타임(중요)
----------------------------------------------------------------------------------------------------------------
- nvm, Nodejs, npm을 설치하고, 버전을 확인할 수 있다.
- 명령어 node를 이용해 JavaScript 파일을 실행할 수 있다.
- 스프린트 시작 전 package.json 파일을 확인하고, npm install을 사용할 수 있다.
----------------------------------------------------------------------------------------------------------------
→ m1칩 mac북인 경우 node.js를 15버전 이상을 설치할 것
→ nvm은 node.js간의 버전차이로 인한 코드호환을 맞춰준다.
- pakege.json
→ 검증된 코드 = 모듈
→ 모듈을 node.js 에서는 npm 모듈이라는 이름으로 부르며, 이에 대한 정보를 담아둔 곳이 바로 package.json이라고 한다.
→ node.js 환경에서 외부 라이브러리를 다운로드 받기 위한 대표적인 것은 바로 npm입니다. npm은 Node Package Manager로 일종의 앱스토어입니다.
→ node.js 생태계의 패키지 매니저는 npm로 필요한 모듈은 대부분 npm에서 다운로드해서 사용하면 됩니다.
→ package.json에는 이 프로그램을 실행시키기 위해 필요한 모듈들이 무엇인지, 프로그램을 실행시키는 방법, 프로그램을 테스트하는 방법 등이 명시되어 있습니다.
→ 이 프로그램을 실행시키기 위해 필요한 실제 모듈은 따로 node_modules이라는 폴더에 저장 (package.json에는 어떤 모듈인지만 적혀 있습니다)
→ package.json이 주는 또 하나의 이점은 프로젝트 코드를 전달할 때, 포함하고 있는 모든 모듈을 다 전달하지 않아도 된다는 점 입니다
/ 사용하는 사람이 직접 다운받으라고 하면 되며 우리는 무엇이 필요한지만 알려주면 됩니다.
→ 스프린트를 진행할 때, 해당 스프린트의 레파지토리를 열어보시면 node_modules 는 없고, package.json 만 있을겁니다. 그럼 여러분은 package.json에서 필요하다고 하는 모듈을 npm을 이용해 다운받으시면 됩니다.
→ npm install 명령어를 입력하시면, package.json에서 필요하다고 하는 모듈을 다운받습니다.
→ npm install이 완료되면 node_modules 디렉토리가 생긴 걸 확인하실 수 있습니다.
→ node_modules에 여러가지 npm들이 설치됨
----------------------------------------------------------------------------------------------------
→ package.json 에 적혀있는 내용
1) devDependencies
{
"devDependencies": {
"@mochajs/json-file-reporter": "^1.2.1",
"chai": "^4.2.0",
"mocha": "^8.2.0",
"sinon": "^9.0.3"
}
}
→ 개발이나 실행에 해당 모듈을 "의존"한다고 해서, "의존성(dependency)"이라고 부릅니다.(모듈)
→ JSON 형식에서, 키에 적힌 것은 모듈 이름입니다. 값은 버전입니다.
→ devDependencies에는 이 프로젝트를 개발하는 환경에서 필요한 모듈들이 무엇인지가 적혀 있습니다.
→ 코드 모양을 잡아주는 lint나 테스팅 모듈처럼, 실제 프로젝트 동작에 직접적으로 영향을 주지 않는 모듈들을 명시
----------------------------------------------------------------------------------------------------
$ npm install mocha --save-dev
→ --save-dev 옵션과 함께 install 실행시 자동으로 devDependencies에 추가됨
* 참고로 mocha라는 모듈은 테스트를 위해 필요합니다
→ npm install을 이용하면, npm에 있는 모듈을 설치할 수 있는데, 이 때 --save-dev 옵션과 함께 설치하면, 자동으로 devDependencies에 추가됩니다.
----------------------------------------------------------------------------------------------------
{
"dependencies": {
"react": "^16.7.0",
"react-dom": "^16.7.0"
}
}
→ 직접 실행과 관련 있는 dependency
: 이 프로젝트에서는 React라는 라이브러리를 사용하고 있음
→ dependencies는 devDependencies와는 다르게, 이 프로젝트가 돌아가기 위해 반드시 필요한 모듈들이 무엇인지가 적혀 있습니다.
ex) underscore라던지, 이후 배울 React 같은것이 좋은 예가 됩니다.
----------------------------------------------------------------------------------------------------
$ npm install react 또는 $ npm install --save react
→ --save 옵션과 함께 (생략 가능) install 실행시 자동으로 dependencies에 추가됨
→ --save 옵션과 함께 설치하면, 자동으로 dependencies에 추가됩니다. --save 옵션은 생략해도 좋습니다.
----------------------------------------------------------------------------------------------------
- 우리가 흔히 하는 npm install은 package.json에 있는 dependency (의존성 모듈)를 바탕으로 설치
→ 아무것도 모르는 사람이 내가 만든 프로젝트를 실행시킬 때 어떻게 해야 프로그램을 실행시킬 수 있는지, 이걸 실행시키려면 어떤 모듈이 있는지를 알 수 없습니다
→ 다른 사람에게 이 프로젝트에 대해 알려주어야 하는데 그 역할을 하는 것이 바로 package.json 입니다.
----------------------------------------------------------------------------------------------------
- 만일 dependency 정보를 적지 않았다고 가정해봅시다.
→ 코드에서는 해당 모듈을 쓰고 있지만 npm install로는 설치되지 않는다!
/ 무엇을 설치해야 이 프로그램이 작동되는지, 무엇을 설치해야 이 프로그램을 개발할 수 있을 지 도통 알 수가 없을것입니다. / 협업에 문제가 발생한다.
----------------------------------------------------------------------------------------------------
→ scripts 항목은 CLI에서 사용가능한 명령을 기술
→ 우리는 이를 npm script라고 부릅니다.
→ CLI에서 실행할 때에는 "npm run <스크립트 이름>" 으로 실행합니다.
----------------------------------------------------------------------------------------------------
→ 주로 실행, 테스트, 코드 검사(lint) 등을 기술합니다.
→ 테스트 케이스 통과만이 목적인 경우에는, start 스크립트조차 없을 수 있습니다.
→ 코드스테이츠에서는 과제 제출 역시 npm script로 제공됨(npm run submit을 통해 과제 제출 가능)
'CLI' 카테고리의 다른 글
CLI의 전반적인 개념 (0) | 2021.05.07 |
---|