더북(TheBook)

이제 패키지로 만들 코드를 작성합니다. package.json의 main 부분의 파일명과 일치해야 합니다. 그래야 npm에서 이 파일이 패키지의 진입점임을 알 수 있습니다.

index.js

module.exports = () => {
  return 'hello package';
};

이제 npm publish 명령어를 사용해 이 패키지를 배포해봅시다. 하지만 에러가 발생할 것입니다.

콘솔

$ npm publish
npm  notice
// notice 생략
npm ERR! code E403
npm ERR! 403 403 Forbidden - PUT https://registry.npmjs.org/npmtest - You do not have permission to publish "npmtest". Are you logged in as the correct user?
npm ERR! 403 In most cases, you or one of your dependencies are requesting
npm ERR! 403 a package version that is forbidden by your security policy, or
npm ERR! 403 on a server you do not have access to.

npm ERR! A complete log of this run can be found in:
npm ERR!      C:\Users\speak\AppData\Roaming
pm-cache\_logs\2022-04-24T17_52_25_852Z-debug.log

npmtest라는 이름을 누군가가 이미 사용하고 있어 오류가 발생했습니다. npm은 패키지의 이름이 겹치는 것을 허용하지 않습니다. 따라서 패키지의 이름을 바꿔서 배포해야 합니다. 굳이 남이 사용하는 패키지 이름으로 배포하고 싶다면 네임스페이스를 쓰는 방법도 있습니다. 네임스페이스 사용법은 5.6절에 있는 링크를 참조하세요.

Note ≣ 원하는 이름이 이미 사용 중이라면?

안타깝게도 원하는 패키지 이름이 이미 사용 중일 수도 있습니다. 만약 해당 패키지가 활발하게 유지된다면, 아쉽지만 다른 이름을 사용해야 합니다. 하지만 그 패키지가 아무 의미 없이 이름만 차지하고 있다면 npm owner ls [패키지 이름]으로 해당 패키지 제작자의 이메일을 확인하고 그 주소로 패키지를 유지 중인지 문의하는 메일을 보내봅시다. 이때 CC(참조)로 support@npmjs.com을 지정하면 npm 지원 팀에게도 메일이 발송됩니다. 몇 주 내에 당사자 간의 이름 분쟁이 해결되지 않는다면 npm 팀에서 해결합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.