dart pub token

dart pub token

dart pub token 하위 명령어는 토큰(token) 저장소를 관리해요. 패키지를 게시하거나 의존성을 가져올 때 dart pub 명령어는 이 토큰을 사용해 제3자 서버에 인증해요.

이 토큰들은 사용자 전체에 적용되는 config 디렉터리에 저장돼요. dart pub token 하위 명령어는 세 가지 하위 명령어를 가져요: add, list, remove.

참고로 dart pub 명령어는 credential, token, secret, secret token이라는 용어를 서로 바꿔 쓸 수 있는 같은 의미로 취급해요.

출처: dart pub token

본문

언제 credential이 필요한가

개인(private) 저장소에 호스팅된 의존성이 하나 있다고 생각해 봐요. dart pub get 명령어를 실행하면 자격 증명(credential)을 입력하라는 프롬프트가 나타날 수 있어요.

$ dart pub get
Resolving dependencies...
https://some-package-repo.com/my-org/my-repo package repository requested authentication!
You can provide credentials using:
    dart pub token add https://some-package-repo.com/my-org/my-repo

서버에 따라 토큰을 얻는 방법을 안내하는 메시지를 함께 보내주는 경우도 있어요.

새 credential 추가하기

새 credential을 만들려면 dart pub token add 명령어를 사용해요.

현재 세션용 credential 추가

프롬프트에서 credential을 명령줄(stdin)로 입력해요.

$ dart pub token add https://some-package-repo.com/my-org/my-repo
Enter secret token: <Type token on stdin>
 Requests to "https://some-package-repo.com/my-org/my-repo" will now be
 authenticated using the secret token.

모든 세션용 credential 추가

모든 터미널 세션이나 스크립트에서 같은 토큰을 쓰려면 토큰을 환경 변수에 저장해요.

  • 먼저 토큰을 환경 변수에 저장해요. 토큰이 셸 히스토리에 남지 않도록 주의하세요. 이와 관련한 방법 하나는 Medium의 글을 참고할 수 있어요.
  • 추가한 환경 변수가 반영되도록 열려 있는 콘솔을 다시 시작해요.
  • 환경 변수를 토큰으로 사용하려면 dart pub token add 명령어를 이렇게 사용해요.
$ dart pub token add <hosted-url> --env-var <TOKEN_VAR>

이 명령어는 $TOKEN_VAR에 저장된 토큰을 읽어서, 원하는 패키지를 호스팅하는 hosted-url로 인증하는 데 사용해요. 그러면 터미널에 다음과 같은 응답이 출력돼요.

$ dart pub token add https://other-package-repo.com/ --env-var TOKEN_VAR
Requests to "https://other-package-repo.com/" will now be authenticated using the secret token stored in the environment variable "TOKEN_VAR".

대부분의 CI 환경은 토큰을 환경 변수로 주입할 수 있어요. 방법을 알아보려면 GitHub ActionsGitLab 문서를 예시로 참고하세요.

credential 목록 보기

활성화된 모든 credential의 목록을 보려면 dart pub token list 명령어를 사용해요.

$ dart pub token list
You have secret tokens for 2 package repositories:
https://some-package-repo.com/my-org/my-repo
https://other-package-repo.com/

credential 하나 이상 제거하기

단일 토큰을 제거하려면 dart pub token remove 명령어를 사용해요.

$ dart pub token remove https://other-package-repo.com
Removed secret token for package repository: https://other-package-repo.com

모든 토큰을 제거하려면 앞의 명령어에 remove --all 옵션을 사용해요.

$ dart pub token remove --all
pub-tokens.json is deleted.
Removed 1 secret tokens.

더 알아보기