* 메모용이므로 포스팅과는 거리가 멉니다. 원하시는 분이 있는경우 글을 정리해서 올리겠습니다.
직접 서버를 구축하는 이유
자신만의 private package를 관리하고 싶은 경우가 있겠다. 예를 들어 지금 내 에디터 툴들은 여러가지 종속성을 포함하는데 모두 유료에셋이거나 리소스들도 유료에셋들이 많은 상태고 좀 더 워크플로우를 용이하게 하기위해 커스텀 패키지 서버를 구축했다.
Verdaccio 설치
> npm install -g verdaccio //반드시 -g 옵션으로 설치
> verdaccio // 실행
// 한번 실행 후 ctrl+c로 꺼준다. 첫 실행은 컨피그 생성을 위해서 할 뿐.
Verdaccio 설정
windows는 %appdata% 에서 /verdaccio/config.yaml를 수정
linux는 [users]/.config/verdaccio.config.yaml를 수정
다음과같이 listen 포트에 public ip 등록, https 사용등은 verdaccio 문서 참고
* 아래처럼 설정시 uplinks에서 알아서 open upm도 끌어온다.
기본 설정은 아래와 같지만 추가로 설정해주면 좋은게 많으니 공식문서를 참고하자.
listen:
- 0.0.0.0:4873
#https: 사용시 공식문서 확인
#업링크는 지우거나, open upm을 추가한다.
uplinks:
openupm:
url: https://package.openupm.com
설정을 마친후 호스트 실행
> verdaccio
Open UPM 클라이언트로 본인 서버에 로그인 or 회원가입
npm -r=http://package.myasset.com:4837 login // 회원가입 혹은 로그인으로 동작하니 이 명령어 하나면 된다.
openupm -r=http://package.myasset.com:4837 login // openupm으로도 로그인 해두면 좋다. .npmrc 파일을 나중에 유니티전용 인증파일로 바꿔야하는데 이 과정을 생략 가능
본인의 에셋을 서버에 퍼블리싱
openupm에 올릴때랑 마찬가지로 package.json을 설정한 폴더로 이동하여 아래 명령어 호출
> cd mypackage
> npm -r=http://...:4837 publish
//open upm으로는 레지스트리 지정이 불가하여 퍼블리시가 안된다.
Packages/manifest.json에 스코프 레지스트리를 등록한다
예를 들어 본인은 이렇게 사용하고있다.
"scopedRegistries": [
{
"name": "package.openupm.com",
"url": "https://package.openupm.com",
"scopes": [
"com.openupm
]
},
{
"name": "custom server",
"url": "http://아이피주소:4873",
"scopes": [
"com.shlifedev",
"com.something.assetName"
]
}
]
인증까지 추가하고 싶은경우
예를 들어 지금 상태로는 방화벽 없이는 누구나 레지스트리에 접근 가능하다. 따라서 인증한 사용자 만 upm에 접근하게 하고싶다면 open upm 클라이언트를 사용하여 레지스트리로 로그인하면 된다
이 부분은 여기 문서를 보고 패키지 스코프를 설정하면 된다.