🔥 Swift Package Collections 배포하기
Swift Package Manager는 누구나 Package Collection을 만들어서 배포할 수 있습니다. swift-package-collection-generator 프로젝트는 Package Collection 배포자들을 위한 도구들을 제공하고 있어요.
package-collection-generate: Package URL 목록을 받아서 Package Collection을 생성해 줍니다.package-collection-sign: Package Collection에 서명을 합니다.package-collection-validate: Package Collection에 대해 기본적인 유효성 검사를 수행합니다.package-collection-diff: 두 개의 Package Collection을 비교해서 내용물이 다른지 확인합니다.
이 도구들을 활용하면 Package Collection을 손쉽게 생성하고 관리할 수 있겠죠?
예를 들어, package-collection-generate 명령어를 사용하면 다음과 같이 Package Collection을 만들 수 있습니다.
$ package-collection-generate collection.json \\
--name "My Packages" \\
--overview "My awesome packages" \\
--packages <https://github.com/mona/LinkedList> \\
--packages <https://github.com/mona/StringUtils>$ package-collection-generate collection.json \\
--name "My Packages" \\
--overview "My awesome packages" \\
--packages <https://github.com/mona/LinkedList> \\
--packages <https://github.com/mona/StringUtils>이 명령은 collection.json 파일을 생성하는데, 그 안에는 name, overview, 그리고 packages에 명시한 Package URL들이 포함됩니다.
{
"name": "My Packages",
"overview": "My awesome packages",
"keywords": [
"Swift",
"Package Collection"
],
"packages": [
{
"url": "<https://github.com/mona/LinkedList>",
...
},
{
"url": "<https://github.com/mona/StringUtils>",
...
}
]
}{
"name": "My Packages",
"overview": "My awesome packages",
"keywords": [
"Swift",
"Package Collection"
],
"packages": [
{
"url": "<https://github.com/mona/LinkedList>",
...
},
{
"url": "<https://github.com/mona/StringUtils>",
...
}
]
}생성된 Package Collection 파일은 package-collection-sign 명령으로 서명할 수 있고, package-collection-validate로 유효성을 검증할 수도 있습니다.
Package Collection을 업데이트할 때는 package-collection-diff 명령으로 변경사항을 쉽게 파악할 수 있습니다. 두 버전의 Package Collection 파일을 비교해서 추가되거나 제거된 Package를 알려주니까요.
이렇게 생성된 Package Collection 파일은 웹 서버에 업로드해서 다른 개발자들과 공유할 수 있습니다. 그러면 다른 개발자들은 Swift Package Manager의 Add Package Collection 기능을 통해 내 Package Collection을 추가하고 활용할 수 있게 되는 거죠.
Package Collection Generator 에 대한 자세한 내용은 아래 URL에서 확인할 수 있습니다.










