티스토리 뷰

패키지

리눅스 운영체제의 패키지와 패키지매니저는 상자 또는 압축파일과 같다. 압축파일에 프로그램, 프로그램 설치파일, 프로그램 설명서, 프로그램에 대한 정보를 담은 파일이 들어있다. 예를 들어 내가 A라는 프로그램을 설치하려고 하는데, A의 프로그램에 대한 정보를 담은 파일에 'B라는 파일도 설치되어 있어야 한다'라는 정보가 있으면 B도 같이 설치한다.

 

패키지매니저

패키지를 편리하게 사용하기 위해서 패키지매니저를 사용한다. 패키지매니저는 휴대폰의 앱스토어와 같다. 앱스토어를 들어가면 우리가 필요한 프로그램들을 '설치'버튼으로 동일한 방식으로 설치할 수 있다. 앱스토어가 없다면 인터넷에 필요한 프로그램을 검색해서 해당 사이트에서 내려받고, 버전이 업데이트되면 다시 접속해서 수동으로 해줘야 할 것이다. 또한 프로그램 설치 위치를 개별적으로 정해줘야 하기 때문에 일일이 기억해야 한다.
패키지매니저를 사용하면 정해진 명령어로 각종 프로그램을 다운받을 수 있고, 업데이트도 추적해주며, 패키지매니저가 대신 저장위치를 기억해주기 때문에 우리는 설치, 업데이트, 삭제 등의 명령만 해주면 매니저가 알아서 해 줄 것이다.

  • 리눅스의 패키지 매니저: apt
  • macOS의 패키지 매니저: brew
  • node.js의 패키지 매니저: npm

 

Node.js

JavaScript를 실행하기 위한 환경(런타임)은 브라우저 뿐만 아니라 Node.js가 있다. 원래는 브라우저에서만 작동하여 주된 용도가 웹페이지를 구성하는 것이었는데, Node.js가 등장하면서 서버를 구축하거나, 모바일 앱을 만드는 등 활용폭이 넓어졌다.

런타임

프로그래밍 언어가 구동되는 환경. 어떤 프로그램이 동작할 때, 프로그램이 동작하는 곳이 런타임이다.

nvm

Node.js의 버전 관리 프로그램이다. Node.js도 하나의 프로그램이기 때문에 버전이 있다. 계속 업데이트가 된다. 그리고 Node.js에서 만든 프로그램별로 사용하는 Node.js의 버전이 다를 수 있다. 이전 버전으로 돌아가려면 현재 버전을 삭제하고 원하는 버전을 다시 설치해야 한다.
하지만 nvm을 사용하면 컴퓨터 계정을 전환하듯이 버전을 switch할 수 있다.

> nvm use 버전넘버 # nvm use 12.18.3

위 코드로 12.18.3버전 Node.js로 이동하여 해당 런타임에서 프로그램을 동작시킬 수 있다.

npm

Node.js 생태계에서의 패키지매니저이다. 이미 만들어진, 다른 사람들이 만들어 놓은 수많은 검증된 프로그램(모듈)들이 npm에 등록되어 있다. 이것들이 여기저기 흩어져있다면 찾는 시간이 더 걸릴 것이다. npm이라는 패키지매니저로 다음과 같이 설치할 수 있다.

> npm install 프로그램이름

package.json

package.json은 프로그램에 대한 정보를 담고 있다. 설정 내용이나 dependencies/devDependencies에 현재 프로그램이 의존하고 있는 다른 프로그램들이 적혀있다. 협업할 때 이 package.json이 있어야 동일한 환경을 세팅하고 정상적으로 동작시킬 수 있다.

> npm install

위 코드를 실행하면 package.json을 참고하여 필요한 파일들을 설치한다.

npm scripts

휴대폰에 연락처를 저장하거나 텍스트 단축키를 저장할 수 있다. npm scripts도 이와 같이 CLI명령어를 저장하는 것이다.
Node.js에서 JavaScript파일을 실행시키려면

> node index.js

의 코드로 index.js파일을 실행시킬 수 있는데, 때에 따라서 명령 옵션을 추가하거나 여러가지 test나 코드 검사 등의 작업을 한다면 긴 코드를 일일이 기억하여 작성해야 할 것이다.

{
  "scripts": {
    "start": "node index.js",
    "test": "mocha test/index.test.js"
  },
}      
> npm run start
> npm run test

위 스크립트를 작성하면 npm run과 함께 단축키로 간편하게 명령을 실행시킬 수 있다.

이전 블로그(velog.io/@hahagarden)에서 이전해온 글입니다.

반응형
댓글