npm에 대해서 이해하려면 우선 public npm registry 가 뭔지 알아야 합니다. npm docs의 설명은 다음과 같습니다.

 

The public npm registry is a database of JavaScript packages, each comprised of software and metadata. Open source developers and developers at companies use the npm registry to contribute packages to the entire community or members of their organizations, and download packages to use in their own projects.

 

the public npm registry는 자바스크립트 패키지의 데이터베이스 입니다. 소프트웨어와 메타데이터로 이루어져 있습니다. 오픈소스 개발자들이 npm 레지스트리를 사용하고 또 공헌하고 다운로드 해서 사용하는 것으로 한마디로 오픈소스 데이터베이스 그 자체라고 할 수 있습니다.

 

리액트 사용하면서 npm 레지스트리에서 다운로드 받는 것들 해봤을 겁니다. 공개된(public) 패키지라서 돈안내고 무료로 사용할 수 있는 것 입니다. 심지어 가입도 필요없는데, npm 패키지를 만들거나 커뮤니티에 기여하려면 가입을 해야 합니다. 가입방법은 아래 게시물을 참고합니다.

 

npm 가입하기 - npm 튜토리얼 1 (tistory.com)

 

npm 가입하기 - npm 튜토리얼 1

npm은 node package manager의 약자입니다. 다양한 노드 패키지와 자바스크립트 프레임워크를 사용할 수 있는 패키지 매니저인데요. 다른 개발자들이 만든 것들을 많이 사용하다보면 스스로 패키지 매

digiconfactory.tistory.com

 

npm 패키지(package)란?

npm에서 package는 package.json 에 기술된 파일이나 디렉토리입니다. 이 package.json은 npm 레지스트리에 공개하기 위한 필수적인 파일인데요. package에 대한 정보를 담고 있는 메타데이터 같은 것 입니다. 패키지의 포맷에는 여러가지가 있는데 직접 만들어 보면서 알아보겠습니다.

 

패키지에는 scope가 있는데 namespace 개념으로 npm 레지스트리에서 사용하기 위해서는 read write 접근 권한이 필요합니다. Unscoped(스코프가 없는) public 은 개인 계정만 생성할 수 있습니다. 이것들도 다 혼돈스러운 이야기로 패키지를 만들면서 다시 보겠습니다.

 

모듈(module)이란?

모듈은 npm 패키지를 설치하면 디렉토리에 node_modules 라고 나오는데 nodejs의 require()함수로 로드할 수 있습니다. 다른 언어로 말하면 라이브러리, 프레임워크 같은 것 이네요. 당연히 자바스크립트 파일입니다.

한가지 주목할 점은 모듈에는 package.json 이 없어도 되니까 모듈이 꼭 패키지는 아닙니다. 다시 말하면 모듈 중에는 패키지 인것도 있고 아닌 것도 있다. node 프로그램에서 자주 쓰는 require('request') 에서 request 는 모듈입니다.

 

npm 패키지 만들기

그럼 이제 npm 패키지를 직접 만들어 보겠습니다. 이것도 그냥 package.json 을 만들어도 되는데 name과 version을 넎어야 합니다.

{
    "name": "my-first-package",
    "version": "1.0.0"
}

버전은 시멘틱 버전 스펙의 규칙에 따릅니다. 이 json 파일에는 여러가지 정보가 들어갑니다. 이 패키지의 메타 데이터와 의존성 등 이 들어갑니다. npm init 명령어는 CLI에서 더 빨리 package.json 파일을 생성합니다. npm init 을 실행하고 질문의 내용을 기입하면 대략 다음과 같은 파일이 완성됩니다. 빨리 하려면 npm init --yes  입니다.

 

{
  "name": "my-npm-package",
  "version": "1.0.0",
  "description": "my-npm-package",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

 

public npm registry에 publish 하기

public npm레지스트리에 출시하려면 우선 npm 계정에 로그인을 해야 합니다. 로그인 후 현재의 프로젝트를 npm publish 명령어로 공개할 수 있습니다. 이 때 package.json 파일에 name과 version 이 꼭 있어야 합니다. 이름이 중복되지 않도록 npm 웹에서 검색한 후에 등록합니다. codinggak.pkg.json 이런 식으로 중복이 안돼는 이름이 좋습니다.

 

 

 

https://www.npmjs.com/package/

 

package

Easy package.json exports.. Latest version: 1.0.1, last published: 10 years ago. Start using package in your project by running `npm i package`. There are 68 other projects in the npm registry using package.

www.npmjs.com

 

자기 계정의 packages에서도 확인할 수 있습니다.

 

 

 

 

 

Creating a package.json file | npm Docs (npmjs.com)

 

Creating a package.json file | npm Docs

Documentation for the npm registry, website, and command-line interface

docs.npmjs.com

 

공유하기

facebook twitter kakaoTalk kakaostory naver band