오상우
오상우

Categories

  • javascript
  • node

1. npm(node package manager)


https://docs.npmjs.com/getting-started/what-is-npm, 현재는 백엔드 패키지 뿐 아니라 프론트 엔드, 커맨드라인 툴 등 자바스크립트 패키지 전체를 다룸.

0. package vs module


module : require() 로 import 할 수 있는 모든 자바스크립트 파일. 즉, 어딘가에서 export 가 명시되어 있어야 한다.
>
package : 자신을 설명하는 package.json 파일이 존재하는 자바스크립트 파일 또는 디렉토리



2. O P Q M


  • Optimal : 종합점수
  • Popularity : 얼마나 많이 다운로드 되었는가
  • Quality : ReadMe.md 파일이 있는지, 안정성, 테스트 여부, 최신 모듈에 dependency 하고 있는지, 웹 사이트가 있는지, 코드 복잡도 등
  • Maintainance : 얼마나 잘 유지되고 있는지, 업데이트 지속성

3. Command Line NPM #1


npm init // package.json 파일 생성
npm install // 현재 package.json 파일을 확인해 dependencies들을 다운로드
npm install <패키지 이름> [--save] // 특정 패키지를 npm서버에서 다운로드, save 플래그를 적으면 package.json 에 dependencies 속성으로 추가



4. package.json


{
  "name": "npmpractice", //영소문자, -_만 허용.
  "version": "1.0.0",
  "description": "hi", //npm 서버에서 다른 사용자들이 해당 패키지를 찾을때 보여주는 내용
  "main": "app.js", // 이 패키지를 export 하는 곳.
  "scripts": { // 이 안에 있는 명령어들을 커맨드라인에서 사용 가능
    "test": "echo \"Error: no test specified\" && exit 1" // npm run test
  },
  "author": "osw",
  "license": "ISC",
  "dependencies": {
    "cat-me": "^1.0.3" // 버젼관리
  }
}

만약 현재 버젼이 1.0.4 라면

  • Patch Release accept : 1.0 or 1.0.x or ~1.0.4
  • Minor Release accept : 1 or 1.x or ^1.0.4
  • Major Release accept : * or x



5. Command Line NPM #2


npm ls // 현재 설치된 모듈들을 보여줌
npm outdated // 현재 설치된 모듈들의 업데이트 현황 확인
npm update // 업데이트!

npm uninstall <패키지 이름> [--save] // 특정 패키지 삭제, save 플래그 설정 시 package.json 의 dependencies 에서도 삭제!
npm prune //extraneous 패키지를 모두 삭제



6. package_lock.json?


현재 실제로 설치되어 있는 구체적 패키지들과 모듈들의 정확한 버젼정보가 있는 파일. compatibility 이슈 때문에 npm 5. 버전에 등장. 현재는 package.json 파일이 우선하기 때문에 크게 신경 쓸 필요가 없다.