포스트

npm 패키지 제작기 1

NPM 패키지 제작하기

markdown parser 기능과 헤더에 따른 내용 그룹핑 기능을 만들어보자.


package.json

npm 이라는 패키지 관리 플랫폼에 새로운 패키지를 등록해보자.

관련 내용을 가장 정확하게 배울 수 있는 곳은 바로 도큐먼트!

늘 느끼는 거지만 영어로 써놓으면 뭔가 읽기가 싫어진다…

어쨋든 도큐먼트를 본 결과 먼저 package.json을 만들어야 한다.

What is package.json?

내가 만든 패키지를 다른 사람들이 관리하고 설치하기 위해서는, npm에 배포하는 패키지 내부에 반드시 package.json을 포함해야 한다.

  • 나의 프로젝트에서 사용하는 다른 패키지들(의존성)
  • 나의 프로젝트에서 사용할 수 있는 패키지의 버전들을 표기(Semantic Versioning Rules 를 따른다.)
  • 나의 프로젝트의 build 를 복제 가능하게 하여, 다른 개발자들과 편하게 공유할 수 있게한다.

npm 웹사이트에서 나의 패키지를 더 쉽게 찾을 수 있게 하려면, 임의로 만든 descriptionpackage.json에 포함하자.

package.json 의 항목들

필수항목

name
내 패키지의 이름. 소문자 이며, 한 단어 여야 한다. - 혹은 _ 기호를 포함할 수 있다.
version
내 패키지의 버전. Semantic Versioning Rules 를 따라야 한다.

선택항목

author
제작자 정보를 포함하고 싶을 때, 다음 포맷을 활용한다.
Your Name <email@example.com> (http://example.com)

작성 예시

1
2
3
4
5
{
  "name": "my-awesome-package",
  "version": "1.0.0",
  "author": "Your Name <email@example.com>"
}

package.json 파일 생성

package.json 파일은 CLI 명령어를 통해 사용이 가능하다.

명령어에서 요구하는 질문들을 통해 항목들을 미리 채워넣을 수도 있고, 그냥 default 파일로 생성할 수도 있다.

질문을 통한 생성

  1. 경로 이동 및 명령어 실행
    1
    2
    
    cd /내경로
    npm init
    
  2. 커맨드창의 질문에 답한다.

npm init 질문 커스텀하기
만약 package.json을 많이 생성할 것 같으면 npm init 과정의 질문과 생성 항목들을 커스터마이징 가능하다.

  1. 사용자 home 경로에 .npm-init.js 파일을 생성
  2. 질문 커스터마이징을 위해서는 prompt 함수를 사용
    1
    
      module.exports = prompt("what's your favorite flavor of ice cream, buddy?", "I LIKE THEM ALL");
    
  3. 생성 항목 커스터마이징을 위해서는 필드를 직접 추가.
    1
    2
    3
    4
    
    module.exports = {
      customField: 'Example custom field',
      otherCustomField: 'This example field is really cool'
    }
    

더 자세한 내용은 도큐먼트 init-package-json GitHub repository 를 참조

default package.json 생성

1
2
cd /내경로
npm init -y

default 값들의 목록은 도큐먼트(Default values extracted from the current directory) 참조

init 명령어에 default 옵션 설정하기

init 명령어에 default 옵션 설정이 가능하다. 예를 들면

1
2
3
npm set init-author-email "example-user@example.com"
npm set init-author-name "example_user"
npm set init-license "MIT"

init 명령어에 scope 설정하기

package에 scope을 설정하기 위해서 다음과 같이 명령어에 옵션을 추가한다 npm init --scope=@scope-name

scope란?

npm에서 유저 계정이나 조직을 생성하면, 여기에 해당하는 scope를 사용할 수 있게된다.
scope의 역할은 다른 패키지와 동일한 이름을 사용하고 싶을 때 충돌을 방지해주는 역할을 한다.
예를 들어서 scope는 패키지 이름 앞에 이런식으로 붙습니다.

  • “npm” scope : @npm/package-name
  • “npmcorp” scope : @npmcorp/package-name

출처 : https://docs.npmjs.com/about-scopes

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.