NPM 패키지 배포, 처음으로 사용한 npm publish와 ENEEDAUTH 오류 해결기.
목차 펼치기
머리말
머리말
gatsby-source-notion-feely
플러그인을 작업하고 이제 npm에 배포할 일만 남았다. 항상 Consumer로 접근하던 세상에 Provider로 접근한다는 게 꽤 많이 두근거리고 설렌다.
npm publish
명령어 한 줄이면 npm 서버로 올라갈텐데, 나는 무엇을 더 신경쓰고 어떻게 배포를 진행해야 할까 고민했던 내용에 대해 정리해본다.
Readme 작성
Readme 작성
이 플러그인에 대한 소개와 사용방법 등을 담은 Readme는 다른 사람들에게 작업물을 내보일 때 필수적이다. 어떤 형식으로 작성해야 좋을 지를 고민하며 이틀은 꼬박 작성했던 것 같다. 이런 성격의 글을 제대로 작성하는 것은 처음인 것 같아 새롭고 또 많이 어려웠다. 더 잘 읽힐 수 있는 Readme를 위한 고민은 아직도 하고 있다.
package.json 작성
package.json 작성
npm 배포 전 이 라이브러리에 대한 설명을
package.json
파일에 같이 명시하면 좋다.
name
라이브러리 이름
version
라이브러리 버전
description
라이브러리 소개
keywords
라이브러리를 소개하기 위한 키워드
author
개발자 이름
license
라이센스 규약
homepage
소개 페이지
bugs
버그 제보를 받을
email
과
url
repository
리포지토리 경로
publishConfig
publish 할 때 사용할 설정
registry를 설정할 때 사용했다.
예시
예시
NPM 배포하기
NPM 배포하기
0. npm 사이트 회원가입
0. npm 사이트 회원가입
공식 홈페이지에서 회원가입을 진행한다.
1. npm 로그인
1. npm 로그인
터미널에서
$ npm login
커맨드를 입력하면 별도의 웹 사이트가 열리는데 여기서 로그인을 진행한다.
이후
$ npm whoami
커맨드를 입력하면 로그인 된 사용자의 아이디가 표시된다.
2. 배포하기
2. 배포하기
$ npm publish
커맨드를 입력하면 바로 npm 패키지 저장소에 배포가 진행된다. 단, 중복된 이름의 패키지는 배포할 수 없으니
$ npm info {package-name}
커맨드를 통해 이미 등록된 이름인지 확인해보면 좋다.
이렇게 무사히 배포가 되었다면 행복했겠지만… 예상치 못한 오류가 발생했다.
ENEEDAUTH 오류 해결하기
ENEEDAUTH 오류 해결하기
두근거리는 마음으로
npm publish
커맨드를 입력했으나, ENNEDAUTH 오류가 발생했다.
Github의 가이드대로 registry 설정을 해주니 해결되었다
.npmrc
파일과
package.json
파일에 registry 관련 설정을 진행해주었다.
아래 내용은 그 전까지 삽질한 내용이다.
계속 시도하는 로그인
계속 시도하는 로그인
registry-url에 로그인이 필요하다는 것인데,
$ npm login
과
$ npm whoami
명령어를 얼마나 실행했는 지 모른다. 하지만 위의 오류는 npm이 아닌 registry와 관련된 오류로 나는 큰 착각을 하고 있었던 것이다.
Scope 설정
Scope 설정
일부 글에서는 scope 설정을 통해 해결했다는 내용들이 있는데, scope는 모든 사람들에게 공개할 것인지 일부 사용자나 조직에만 공개할 것인지를 설정할 수 있는 것으로 public scope로 publish하는 별도의 명령어를 사용해보기도 했다.
조금 더 찾아보니 별도로 scope를 설정하지 않을 경우, 즉 unscoped 상태일 경우에는 모든 사용자에게 자동으로 공개된다. 오류를 해결하는 데에는 효과가 없던 방법이었다.
추가적으로 Scope 별 자세한 스펙은 공식 문서에서 확인할 수 있다.
부록. registry란?
부록. registry란?
아무래도 registry라는 것에 대해 더 알아봐야할 것 같았다. 이를 위해 여러 문서를 둘러보다 Github의 가이드를 발견하고 해결할 수 있게 되었다.
To resolve packages by name and version, npm talks to a registry website that implements the CommonJS Package Registry specification for reading package info.
꼬리말
꼬리말
한 번의 패키지 배포를 경험했지만 여전히 낯설고 어려운게 많다. 그동안 다른 Readme나 문서를 읽으며 잘 되어 있네, 설명이 부족하네, 등 평가했던 기억들이 낯부끄럽게 떠오르며 읽기 쉬운 Readme 형식에 대해 고민하게 되었다. package나 registry의 개념 등에 대해서는 여전히 내 것으로 이해했다고 말하기 어렵다. 다만, 새로운 세상에 대한 설레임이 더욱 크다.
국경의 긴 터널을 빠져나오자, 설국이었다.-
가와바타 야스나리, <설국>