깃허브를 사용하다 보면 회사나 속한 조직에서 private 한 모듈을 사용 해야할 때가 온다. 그때 기존 public 패키지는 npm 에 올리면 문제가 해결 되겠지만 private 모듈은 유로라는 단점이 있다 (유료 소프트웨어가 나쁜다는것은 아니지만)
https://github.com/settings/tokens/new
해당 페이지로 가서 깃허브 토큰을 만들어 준다.
이름은 식별할 수 있게 해주고, 만료 일자는 편의상 기한 없음으로 해놨다.
권한은 write:packages 만 설정 해준다.
{
"name": "{@OWNER}/{패키지 식별 이름}",
"version": "1.0.0",
"description": "TheCloudFactory auth module",
"main": "src/index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "juhwannn <algorithm123@naver.com>",
"repository": {
"type": "git",
"url": {GITHUB_URL}
},
"dependencies": {
"csrf": "^3.1.0",
"jsonwebtoken": "^9.0.0",
"ramda": "^0.29.0"
},
"peerDependencies": {
"passport": "^0.6.0"
},
"publishConfig": {
"registry":"https://npm.pkg.github.com"
}
}
$ npm login --scope=${@OWNER} --auth-type=legacy --registry=https://npm.pkg.github.com
Username: USER_NAME # Github User Name
Password: TOKEN # 위에서 생성한 토큰
# OWNER 은 package.json 에서 작성한 OWNER 가 들어가게 된다
# --auth-type=legacy 옵션은 npm 9버전 이상에서는 필수로 작성해줘야 하는 옵션이다
$ npm publish
npm publish 로 배포까지 하게 되면 아래와같이 깃헙 조직의 package 에서 배포된 pakcage 를 확인할 수 있다.
🔥 npm publish
npm publish
를 하게 되면 깃허브 저장소에 있는 소스를 업데이트 시키는것이 아닌 로컬에 있는 소스가 올라가게 된다. 그렇기 때문에 소스가 변경되면 반드시npm run build
후npm publish
를 해줘야 한다.
🔥 npm run prepublishOnly
package.json
script
에prepublishOnly
를 작성해 주면npm publish
이전에 실행되는 명령어를 사용 할 수 있다. 예를들면 버전업이라던지, 위에서 설명한npm build
를 사용 할 수 있다.