팩키지와 모듈

팩키지

다음의 어떤 것도 팩키지가 될 수 있습니다.

  • a) package.json 파일에 의해 표현되는 프로그램을 포함하고 있는 폴더
  • b) (a)를 gzip으로 압축한 파일
  • c) (b)에 대한 url
  • d) (c)를 통해서 레지스트리에 퍼블리쉬된 <name>@<version>
  • e) (d)를 가리키는 <name>@<tag>
  • f) latest로 태구된 <name>
  • g) (a)로 clone이 되는 git URL

여러분의 팩키지를 공개된 레지스크리에 퍼블리쉬하지 않더라도 npm을 사용함으로써 얻을 수 있는 많은 장점이 있습니다.

  • 그냥 node 프로그램을 작성할 수 도 있으며
  • 이 프로그램을 압축해서 다른 곳에 쉽게 설치할 수 있습니다.

모듈

Node.js 프로그램내에서 require()로 로드할 수 있는 것을 모듈이라고 합니다. 다음의 예 모두가 모듈로 로드될 수 있습니다.

  • main 필드를 가진 package.json 파일을 포함하고 있는 폴더
  • index.js 파일을 포함하고 있는 폴더
  • JavaScript 파일

대부분의 npm 팩키지는 모듈

일반적으로 Node.js 프로그램에서 사용된느 npm 팩키지들은 require를 통해서 로드되므로 모듈이라고 할 수 있습니다. 하지만 npm 팩키지가 반드시 모듈이어야할 필요는 없습니다.

실행가능한 명령행 인터페이스를 포함한ㄴ cli와 같은 팩키지는 Node.js 프로그램에서 사용할 수 있도록 하는 main 필드가 없습니다. 따라서 이 팩키지는 모듈이 아닙니다.

대부분의 팩키지 (Node 프로그램이라면)는 많은 모듈을 포함하고 있습니다.

Node 프로그램의 문맥상, module은 파일에서 로드되는 것을 뜻합니다.

var req = require('request')

Node.js와 npm 생태계에서의 파일과 디렉터리 이름

package.json 파일은 팩키지를 정의합니다.

node_modules 폴더는 Node.js가 모듈을 찾는 장소입니다.

예를 들어 node_modules/foo.js라는 파일을 생성하고 프로그램에서 모듈을 로드하기 위해서 var f = require('foo.js')라고 하면 foot.js에는 package.json 파일이 없으므로 "package"가 아닙니다.

이와 다르게, index.js이 없고 package.json내에 main 필드가 없는 팩키지를 만들었다면 이 팩키지는 모듈이 아닙니다. 따라서 node_modules에 설치된다 하더라도 require()로 로드될 수 없으므로 모듈이 아닙니다.

results matching ""

    No results matching ""