패키지 관리 마이그레이션
Sui CLI 버전 1.63은 package management 시스템을 크게 개편했다. 이 문서는 이전 시스템과 새 시스템 사이의 변경 사항을 설명하고 package를 migration하는 지침을 제공한다. 새 시스템의 전체 세부 사항은 Move 패키지 관리를 참조한다.
새 시스템은 다음과 같은 여러 이점을 제공한다:
- 여러 environment를 고려한 설계: 동일한 package에 대해 여러
Move.toml파일이 필요하지 않아야 한다. - 예측 가능성과 오프라인 rebuild: dependency는 manifest를 변경하는 경우에만 변경된다.
- 유연한 로컬 naming: 같은 이름을 가진 여러 package에 의존할 수 있다.
- 기타 편의 기능: 더 빠른 git 다운로드, 저장된 upgrade capability, 로컬 publication용 tooling을 제공한다.
이 정도 규모의 변경에는 분명히 몇 가지 문제가 생길 수 있다. 새 package 시스템을 사용하면서 겪는 문제는 here에 보고한다.
Migrating Move.toml
새 package 시스템은 기존 package와 계속 동작하지만 가능한 한 빨리 새 형식으로 migration하는 것을 권장한다. migration 단계는 다음과 같다:
Move.toml의namefield를 Move 코드가 package에 사용하는 이름으로 바꾼다(more info).Move.toml의 dependency 이름을 Move 코드가 해당 dependency를 참조하는 이름과 일치하도록 바꾼다(more info).Move.toml의[addresses]및[dev-addresses]section을 제거한다(more info).- 필요하면
[dev-dependencies]를 mode가 지정된 dependencies로 바꾼다.
예를 들어 이전 Move.toml이 다음과 같았다면
[package]
name = "MyPackage"
[dependencies]
Dependency = { ... }
[addresses]
my_package = "0x0"
새 Move.toml은 다음과 같다
[package]
name = "my_package"
[dependencies]
dep = { ... }
Devnet 및 Localnet에 publish
Mainnet과 Testnet의 publication workflow는 새 package 시스템으로도 바뀌지 않아야 한다. 하지만 localnet이나 devnet 같은 ephemeral network에 publish할 때는 Published.toml 파일을 로컬 address로 오염시키지 않기 위해 sui client test-publish 명령을 사용해야 한다.
test-publish 명령은 Published.toml에 쓰는 대신 address를 ephemeral publication 파일(예: Pub.localnet.toml)에 기록한다. 사용할 파일은 --pubfile-path option으로 선택할 수 있다. 여러 package를 publish하려면 모든 package에 대해 동일한 ephemeral publication 파일을 사용해야 dependency address가 올바르게 설정된다. 이 과정은 --publish-unpublished-deps flag로 자동화할 수도 있다.
--with-unpublished-deps를 사용하고 있었다면 거의 확실히 대신 --publish-unpublished-deps를 사용해야 한다.
test-publish 명령은 어떤 dependency를 ephemeral publication에 사용할지 결정하기 위해 "build environment"를 필요로 한다(Testnet 또는 Mainnet이 기본값이지만 직접 정의도 가능하다). build environment는 --build-env <env> flag로 지정한다.