Github Package Registry 서비스는 현재 완전한 Public Access가 되지 않으므로
Github 계정이 Package Registry에 접근할 권한이 있어야 한다.
❗️ 이후 터미널에서 vi ~/.npmrc로 토큰을 저장 (앞 단에 // 포함)
//npm.pkg.github.com/:_authToken=생성한 토큰
Nest로 새로운 프로젝트를 생성 후 index.js을 간단히 작성한다.
const print = () => {
console.log('npm test.');
};
module.exports = {
print,
};
배포할 프로젝트의 package.json을 수정한다.
{
"name": "@jiwonyoun/npm-practice",
"version": "0.0.3",
"description": "npm-practice",
"author": "jiwonyoun",
"private": false,
"license": "UNLICENSED",
"keywords": ["jiwonyoun"],
"repository": {
"type": "git",
"url": "https://github.com/jiwonyoun/npm-practice.git"
},
"main": "index.js",
"files": ["index.js"],
"publishConfig": {
"registry": "https://npm.pkg.github.com/"
},
.
.
.
private: true를 false로 변경 (true일 시 publish 불가)name 앞에 @조직이름/을 추가 (Git Repository 경로명 확인)@jiwonyoun/npm-practice (조직 이름에 대문자가 있다면 소문자로 변경)description, author, license, keyword 필드에 기입repository 필드 명시적으로 기입"url": "https://github.com/jiwonyoun/npm-practice.git"main, files 필드 기입main : 진입점 파일 (.js)files : 패키지에 포함될 파일publishConfig 필드 기입"registry": "https://npm.pkg.github.com/"이후 git에 배포할 파일(index.js)와 package.json을 push한다.
npm publish를 위해서는 저장소에 로그인을 해야하는데,
권한 설정이 우선되어야 한다.$ npm login --registry=https://npm.pkg.github.com --scope=@조직이름💡 이 때 Password는 위에서 생성한 Access Token을 입력한다.
package.json에서 version을 변경하고, 패키지 매니저의 publish 명령으로 배포한다. 특정 version으로 한 번 배포한 후에는 수정할 수 없으므로 신중히 배포한다.
$ npm publish


배포 완료
위에서 생성한 Package를 Install 해볼 프로젝트를 새로 생성한다.
프로젝트 루트에 .npmrc를 생성하고 아래 내용을 작성한다.
@jiwonyoun:registry=https://npm.pkg.github.com/
→ package.json 파일에서 앞에 @jiwonyoun가 붙는 패키지에 대해서는 공식 npm 저장소 http://registry.npmjs.org 대신 Github Package Registry https://npm.pkg.github.com 에서 찾아서 다운로드 하겠다는 의미
Install은 일반 npm과 같이 설치 가능하다.
$ npm install --save @jiwonyoun/npm-practice
💡 이 때, 위에서 설정했던 ~/.npmrc에 토큰이 일치하지 않으면 error가 발생한다.
사용은 아래와 같이 한다.
index.ts
import { print } from '@jiwonyoun/npm-practice';
print();
(배포한 index.js에서 사용한 함수 이름 import)
결과
$ ts-node index.ts
npm test.
참고 문서 1 : https://www.kyungyeon.dev/posts/20
참고 문서 2 : https://musma.github.io/2019/09/30/github-package-registry.html