Js - 1. 개념정리
2021.04.27
Node.js 란?
- 웹브라우저에서 쓰이는 자바스크립트를 서버에서 사용가능하게 해준다.
- 어떻게 가능한가? : V8엔진의 탑재
- V8이란? : 크롬에 탑재된 자바스크립트 엔진이다.
- 대용량 서비스를 위해 Ryan Lienhart Dahl이 개발
- 위키백과
설치하기
- nodejs 홈페이지에 접속하여 사용자의 os에 맞게 설치한다.
- LTS버전으로 설치를 해준다.
- LTS : 장기적인 지원을 받는 버전 (안정적인 버전)
- Current :nodejs의 최신 기능을 지원하는 버전
- 터미널창에
node --version
or node -v
명령어를 입력해서 잘 설치되었는지 확인한다.
모듈 패턴
- Node.js는 모듈 시스템의 사실상 표준(de facto standard)인
CommonJS
를 채택하였고 현재는 독자적인 진화를 거쳐 CommonJS 사양과 100% 동일하지는 않지만 기본적으로 CommonJS 방식을 따르고 있다.
- 모듈은
module.exports
또는 exports 객체
를 통해 정의하고 외부로 공개한다. 그리고 공개된 모듈은 require
함수를 사용하여 임포트한다.
- node.js가 설치되었기 때문에
node
명령어를 사용할 수 있다.
- 터미널에
node <filename>
명령어를 입력하면 실행이 된다.
- 내보낼때 :
Module.exports 변수
- 불러올때 :
require 파일명
npm
-
npm (노드 패키지 매니저/Node Package Manager)
은 자바스크립트 프로그래밍 언어를 위한 패키지 관리자이다
-
Node.js에서 사용할 수 있는 모듈들을 패키지화하여 모아둔 저장소 역할과 패키지 설치 및 관리를 위한 CLI(Command line interface)를 제공한다.
-
자신이 작성한 패키지를 공개할 수도 있고 필요한 패키지를 검색하여 재사용할 수도 있다.
-
npm js 홈페이지 - 다른사람이 만든 사용가능한 npm패키지(모듈)들을 찾아보고 검색할 수 있다.
-
패키지 설치
npm install <package>
: npm install
명령어 뒤에 설치할 패키지 이름을 지정한다.
npm install
명령어는 지역(local)과 전역(global)설치 옵션이 있다. 옵션을 따로 지정하지 않을 시 지역으로 설치된다.
- 프로젝트 루트 디렉터리에
node_modules
디렉터리가 자동 생성되고 그 안에 패키지가 설치된다.
- 지역으로 설치된 패키지는 해당 프로젝트 내에서만 사용이 가능하다.
- 전역으로 설치된 패키지는 전역에서 참조할 수 있다. 모든 프로젝트가 공통 사용하는 패키지는 전역에 설치한다.
- 전역에 설치된 패키지는 OS에 따라 설치 장소가 다르다.
- macOS의 경우
: /usr/local/lib/node_modules
- 윈도우의 경우
: c:\Users\%USERNAME%\AppData\Roaming\npm\node_modules# 지역설치
$ npm install <package>
# 전역설치
$ npm install -g <package>
-
package.json
-
Node.js 프로젝트에서는 많은 패키지를 사용하게 되고 패키지의 버전도 빈번하게 업데이트되므로 프로젝트가 의존하고 있는 패키지를 일괄 관리할 필요가 있다.
-
package.json
파일을 통해서 프로젝트 정보와 패키지의 의존성(dependency)을 관리한다.
-
package.json
은 JAVA의 maven에서 pom.xml과 비슷한 역할을 한다.
-
package.json
을 생성하려면 npm init
명령어를 실행한다.
-
npm init
명령어를 사용하면 프로젝트에 대한 여러 가지 정보를 입력하도록 요구받는다.
-
이때 입력된 정보를 바탕으로 npm은 package.json 파일을 생성한다.
-
npm init
명령어에 --yes
또는 -y
옵션을 추가한다. 그러면 기본 설정값으로 package.json 파일을 생성한다.
npm init -y
{
"name": "",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"": ""
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
-
package.json
에서 가장 중요한 항목은 name
과 version
이다. 이것으로 패키지의 고유성을 판단하므로 생략할 수 없다.
npm init
시 -y
옵션을 사용해 기본 설정값으로 package.json
파일을 생성하면 name
은 루트 프로젝트의 이름이 된다.
-
dependencies
항목에 해당 프로젝트가 의존하는 패키지의 이름과 버전을 명시함으로써 의존성을 설정한다.
의존하는 패키지란 프로젝트에서 참조하는 모듈을 의미한다.
-
devDependencies
에는 개발 시에만 사용하는 개발용 의존 패키지를 명시한다. (배포시에는 필요없고 개발시에만 필요한 패키지들을 명시)
npm install
명령어에 --save-dev
(축양형 -D
)옵션을 사용하면 devDependencies에 기록된다.
$ npm install --save-dev <package>
$ npm install -D <package>
-
package.json
에 명시된 모든 의존 패키지를 한 번에 설치하려면 터미널에 npm install
명령어를 입력한다.
-
Semantic versioning(유의적 버전)
-
npm install
명령어 뒤에 @버전을 추가하면 패키지 버전을 지정해서 설치가 가능하다.
$ npm install [email protected]
-
package.json
의 dependencies
에 새롭게 패키지가 추가되고 버전 앞에 ^
(캐럿)이 추가된 것을 확인할 수 있다.
-
^
(캐럿)은 이후 해당 패키지의 버전이 업데이트되었을 경우, 마이너 버전 범위 내에서 업데이트를 허용한다는 의미이다.
//package.json
"dependencies": {
"react": "^17.0.1"
},
-
npm 버전 정보는 메이저 버전 번호, 마이너 버전 번호, 패치 버전 번호로 구성된다.
-
버전 정보 앞에 기호를 부여하여 업데이트 범위를 지정할 수 있다.
표기법 Description version 명시된 version과 일치 >version 명시된 version보다 높은 버전 >=version 명시된 version과 같거나 높은 버전 <version 명시된 version보다 낮은 버전 <=version 명시된 version과 같거나 낮은 버전 ~version 명시된 version과 근사한 버전 ^version 명시된 version과 호환되는 버전
-
~
(틸트)와 ^
(캐럿)의 차이
~
(틸트) : 패치 버전 범위 내에서 업데이트
- ~0.0.1 : 0.0.1 <= version < 0.1.0
- ~0.1.1 : 0.1.1 <= version < 0.2.0
^
(캐럿) : 마이너 버전 범위 내에서 업데이트
- ^1.0.2 : 1.0.2 <= version < 2.0
-
자주 사용하는 npm 명령어 모음
//package.json 생성
$ npm init
# 기본 설정
$ npm init -y
//패키지 설치
# 로컬 설치
$ npm install <package-name>
# 전역 설치
$ npm install -g <package-name>
# 개발 설치
$ npm install --save-dev <package-name>
# package.json의 모든 패키지 설치
$ npm install
//패키지 제거
# 로컬/개발 패키지 제거
$ npm uninstall <package-name>
# 전역 패키지 제거
$ npm uninstall -g <package-name>
//패키지 업데이트
$ npm update <package-name>
//package.json scripts 프로퍼티의 scripts 실행 (지정한 scripts명 입력)
$ npm run <script-name>
//전역 패키지 설치 폴더 확인
$ npm root -g
/usr/local/lib/node_modules
# 파인더 오픈
$ open /usr/local/lib/node_modules
//패키지 정보 참조
$ npm view <package-name>
//버전 확인
$ npm -v
Author And Source
이 문제에 관하여(Js - 1. 개념정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@wdh008/NodeJs-1.-개념정리
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
node --version
or node -v
명령어를 입력해서 잘 설치되었는지 확인한다.CommonJS
를 채택하였고 현재는 독자적인 진화를 거쳐 CommonJS 사양과 100% 동일하지는 않지만 기본적으로 CommonJS 방식을 따르고 있다.module.exports
또는 exports 객체
를 통해 정의하고 외부로 공개한다. 그리고 공개된 모듈은 require
함수를 사용하여 임포트한다.node
명령어를 사용할 수 있다.node <filename>
명령어를 입력하면 실행이 된다.Module.exports 변수
require 파일명
-
npm (노드 패키지 매니저/Node Package Manager)
은 자바스크립트 프로그래밍 언어를 위한 패키지 관리자이다 -
Node.js에서 사용할 수 있는 모듈들을 패키지화하여 모아둔 저장소 역할과 패키지 설치 및 관리를 위한 CLI(Command line interface)를 제공한다.
-
자신이 작성한 패키지를 공개할 수도 있고 필요한 패키지를 검색하여 재사용할 수도 있다.
-
npm js 홈페이지 - 다른사람이 만든 사용가능한 npm패키지(모듈)들을 찾아보고 검색할 수 있다.
-
패키지 설치
npm install <package>
:npm install
명령어 뒤에 설치할 패키지 이름을 지정한다.npm install
명령어는 지역(local)과 전역(global)설치 옵션이 있다. 옵션을 따로 지정하지 않을 시 지역으로 설치된다.- 프로젝트 루트 디렉터리에
node_modules
디렉터리가 자동 생성되고 그 안에 패키지가 설치된다. - 지역으로 설치된 패키지는 해당 프로젝트 내에서만 사용이 가능하다.
- 전역으로 설치된 패키지는 전역에서 참조할 수 있다. 모든 프로젝트가 공통 사용하는 패키지는 전역에 설치한다.
- 전역에 설치된 패키지는 OS에 따라 설치 장소가 다르다.
- macOS의 경우
: /usr/local/lib/node_modules
- 윈도우의 경우
: c:\Users\%USERNAME%\AppData\Roaming\npm\node_modules# 지역설치 $ npm install <package> # 전역설치 $ npm install -g <package>
-
package.json
-
Node.js 프로젝트에서는 많은 패키지를 사용하게 되고 패키지의 버전도 빈번하게 업데이트되므로 프로젝트가 의존하고 있는 패키지를 일괄 관리할 필요가 있다.
-
package.json
파일을 통해서 프로젝트 정보와 패키지의 의존성(dependency)을 관리한다. -
package.json
은 JAVA의 maven에서 pom.xml과 비슷한 역할을 한다. -
package.json
을 생성하려면npm init
명령어를 실행한다. -
npm init
명령어를 사용하면 프로젝트에 대한 여러 가지 정보를 입력하도록 요구받는다. -
이때 입력된 정보를 바탕으로 npm은 package.json 파일을 생성한다.
-
npm init
명령어에--yes
또는-y
옵션을 추가한다. 그러면 기본 설정값으로 package.json 파일을 생성한다.npm init -y { "name": "", "version": "1.0.0", "description": "", "main": "index.js", "dependencies": { "": "" }, "devDependencies": {}, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }
-
package.json
에서 가장 중요한 항목은name
과version
이다. 이것으로 패키지의 고유성을 판단하므로 생략할 수 없다.npm init
시-y
옵션을 사용해 기본 설정값으로package.json
파일을 생성하면name
은 루트 프로젝트의 이름이 된다. -
dependencies
항목에 해당 프로젝트가 의존하는 패키지의 이름과 버전을 명시함으로써 의존성을 설정한다.의존하는 패키지란 프로젝트에서 참조하는 모듈을 의미한다.
-
devDependencies
에는 개발 시에만 사용하는 개발용 의존 패키지를 명시한다. (배포시에는 필요없고 개발시에만 필요한 패키지들을 명시)npm install
명령어에--save-dev
(축양형-D
)옵션을 사용하면 devDependencies에 기록된다.$ npm install --save-dev <package> $ npm install -D <package>
-
package.json
에 명시된 모든 의존 패키지를 한 번에 설치하려면 터미널에npm install
명령어를 입력한다.
-
-
Semantic versioning(유의적 버전)
-
npm install
명령어 뒤에 @버전을 추가하면 패키지 버전을 지정해서 설치가 가능하다.$ npm install [email protected]
-
package.json
의dependencies
에 새롭게 패키지가 추가되고 버전 앞에^
(캐럿)이 추가된 것을 확인할 수 있다. -
^
(캐럿)은 이후 해당 패키지의 버전이 업데이트되었을 경우, 마이너 버전 범위 내에서 업데이트를 허용한다는 의미이다.//package.json "dependencies": { "react": "^17.0.1" },
-
npm 버전 정보는 메이저 버전 번호, 마이너 버전 번호, 패치 버전 번호로 구성된다.
-
버전 정보 앞에 기호를 부여하여 업데이트 범위를 지정할 수 있다.
표기법 Description version 명시된 version과 일치 >version 명시된 version보다 높은 버전 >=version 명시된 version과 같거나 높은 버전 <version 명시된 version보다 낮은 버전 <=version 명시된 version과 같거나 낮은 버전 ~version 명시된 version과 근사한 버전 ^version 명시된 version과 호환되는 버전 -
~
(틸트)와^
(캐럿)의 차이~
(틸트) : 패치 버전 범위 내에서 업데이트- ~0.0.1 : 0.0.1 <= version < 0.1.0
- ~0.1.1 : 0.1.1 <= version < 0.2.0
^
(캐럿) : 마이너 버전 범위 내에서 업데이트- ^1.0.2 : 1.0.2 <= version < 2.0
-
-
자주 사용하는 npm 명령어 모음
//package.json 생성
$ npm init
# 기본 설정
$ npm init -y
//패키지 설치
# 로컬 설치
$ npm install <package-name>
# 전역 설치
$ npm install -g <package-name>
# 개발 설치
$ npm install --save-dev <package-name>
# package.json의 모든 패키지 설치
$ npm install
//패키지 제거
# 로컬/개발 패키지 제거
$ npm uninstall <package-name>
# 전역 패키지 제거
$ npm uninstall -g <package-name>
//패키지 업데이트
$ npm update <package-name>
//package.json scripts 프로퍼티의 scripts 실행 (지정한 scripts명 입력)
$ npm run <script-name>
//전역 패키지 설치 폴더 확인
$ npm root -g
/usr/local/lib/node_modules
# 파인더 오픈
$ open /usr/local/lib/node_modules
//패키지 정보 참조
$ npm view <package-name>
//버전 확인
$ npm -v
Author And Source
이 문제에 관하여(Js - 1. 개념정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wdh008/NodeJs-1.-개념정리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)