Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 시급합니다
- 자바스크립트
- webServlet
- 전화영어
- 교육철학과 교육사
- OpenAPI프로젝트
- 백엔드
- array
- 자료구조
- maven
- 탐색알고리즘
- Node.js
- java
- 원격근무
- 백엔드스쿨
- Queue
- 그래프탐색
- 프로젝트진행
- 백엔드공부
- OAuth
- 내돈내산
- npm
- 탄력근무
- Spring
- BFS
- 개발자
- YBM전화영어
- JavaScript
- 제로베이스
- 최단경로문제
Archives
- Today
- Total
인생자취
TIL | 모듈과 패키지 매니저 파헤치기 본문
1. 모듈(Module)
1.1 모듈 사용의 목적
- 다목적으로 js 파일의 코드를 작성하면 유지보수 측면에서 좋을 수 없다.
- 따라서 하나의 js 파일이 하나의 목적을 갖도록 소스코드를 작성한다. (컨벤션)
- 그러므로 소스코드의 분리를 모듈로 정의하여 사용하는 것이다.
1.2 모듈 (module)
- 노드에서는 각 파일 하나하나가 모듈이다.
- 모듈을 가져올 때, commonJS 방식으로는 require 메서드로 가져오고, ECMAScript 방식으로는 export, import로 가져온다.
- .mjs의 확장자를 사용하여 모듈로 만들 수 있다. *이때 .mjs 파일 내에서는 모듈로 불러오는 파일의 확장자를 필히 써줄것.
1.3 모듈 해석 (module resolution)
예) CommonJS : require
- 절대경로
- node standard library에 있는 모듈
- module.paths의 경로 중 순서대로 검사하여 해당 모듈이 있는 경우 가장 첫번째 모듈을 가져옴.
- 상대경로 : 프로젝트 내 다른 파일
- require('../modulename')
- require('./modulename')
2. 패키지 매니저 (Package Manager)
2.1 패키지 매니저 사용의 목적
- 모든 소스코드를 직접 구현하기란 매우 어렵고, 실력이 좋은 다른 개발자에 의해 잘 짜여진 패키지들이 수두룩 빽빽하다.
- 그렇기 때문에 패키지 매니저를 통해 필요에 따라 커스터마이징하게 패키지를 프로젝트에 설치하고, 이를 적절하게 사용할 수 있다.
2.2 package.json
The 'package.json' file is the heart of any Node project.
It records important metadata about a project which is required before publishing to NPM,
and also defines functional attributes of a project that npm uses to install dependencies,run scripts,
and identify the entry point to our package.
- npm에 publish 하기 전에 필요한 메타데이터가 기록되어 있다.
- 함수적 속성과 같은 npm의 의존성, 스크립트를 실행, 패키지의 진입점을 식별시켜준다.
- npm 패키지에 비슷한 버전을 추적하게 하기 위해서 꺾쇠/캐럿(^) 표시를 한다.
*확 와닿지는 않지만, 프로젝트 내에서 npm 패키지의 버전을 추적하는게 필요했기 때문에 이러한 기능이 있다고 함. - ./node_modules/.bin/eslint src/**/*/
- package.json에 검사를 해주는 기능의 복잡한 문장을 script로 작성해서 키워드로 불러올 수 있다.
2.3 package-lock.json
- package-lock.json에 입력된 패키지의 정보는 실제 정보다.
- 락파일에 입력된 정보는 플젝을 맡은 개발자 모두가 락파일에 쓰여진 버전으로 동일하게 사용하라는 의미로 받아들이면 된다.
- 본 파일에 쓰여진 버전은 차이가 나서는 안된다.
2.4 패키지 매니저 매커니즘
- npm install 패키지명
- node_modules / 패키지명
- js파일에서 require('패키지명/index') 또는 js파일에서 require('패키지명')을 입력
- 'index'까지 주소를 올릴 수 있는 이유는 index.html이 프로젝트 내에서 의미하는 바가 특정 디렉토리의 내용물을 보여주는 기능을 한다는 의미로 쓰이기 때문(관습적으로 쓰임)
- 예) https://example.com/index.html === https://example.com/ ->>>>> 웹 페이지가 동일하다.
- 폴더를 require 하는 것과 파일을 require 하는 것은 역할적으로 동일하다.
- 패키지를 const 변수에 할당해서 사용한다.
2.5 npm 사용을 위한 스크립트 예시
$ npm install --save-dev decamelize
- 프로젝트 개발에서만 사용한다.
$ npm install / npm i
- 의존하는 패키지 모두를 설치한다.
$ npm uninstall decamelize
- 패키지를 삭제한다.
$ npm install decamelize@3.1.0
- @(at) 3.1.0 ver(특정 버전)을 설치한다.
$ npm update decamelize
- 3.1.0의 버전이 3.2.0으로 버전업을 하라는 의미다.
- ^(caret)3.1.0, ~(tilde)3.1.0에 따라 버전 업데이트가 다르게 이루어진다.
- ^3.1.0 -> 3.2.0
- ~3.1.0 -> 3.1.1
- 이러한 방법은 기존의 기능성을 깨지 않으면서도 버전을 최대한 올려줄 수 있다.
2.6 yarn (package manager)
- yarn은 효과적인 캐싱 때문에 속도가 매우 빠르다.
- yarn으로 스크립트를 정의하고 사용할 때 yarn만의 기능으로 좀 더 간단하게 런타임 스크립트를 작성할 수 있다.
- 예) yarn eslint *끝(?!)
'개발 > Dev | 웹개발' 카테고리의 다른 글
TIL | 리팩토링 프로젝트 Before (0) | 2022.07.21 |
---|---|
TIL | Node.js 컨벤션 / 스탠다드 라이브러리 / Stream (0) | 2022.07.21 |
TIL | HTTP 트랜잭션 해부 (0) | 2022.07.19 |
TIL | 토이프로젝트 / 웹서버 만들기 2 (0) | 2022.07.19 |
TIL | 토이프로젝트 / 웹서버 만들기 (0) | 2022.07.19 |
Comments