Paket 의존성 매니저

닷넷 개발자라면 Nuget을 모를리가 없다. 심지어 Nuget 웹사이트에 나오지만 Nuget이외의 다른 의존성 관리자가 있다는 사실조차 모르는 사람이 많다😱😱😱. Paket

Paket을 좋아하는 이유는 딱 한가지다. 멀티 프로젝트 구성에서 의존성을 여러번 설치 하지 않아도 된다는 것이다🎉👏.

설치

Paket을 global로 설치하는 방법이 있고 프로젝트마다 설치하는 방법이 있다. 필자는 프로젝트마다 설치는 귀찮아서 global툴로 설치를 선호한다.

dotnet tool install -g paket

다음 명령어로 Packet 설치를 확인할 수 있다.

> dotnet tool list -g

Package Id                       Version      Commands
-------------------------------------------------------------------------
...
paket                            5.243.0      paket

Paket 초기화

의존성 관리를 Paket으로 하려면 다음 명령어로 시작할 수 있다.

# 프로젝트 루트 폴더에서
paket init

# global 설치를 하지 않은 경우 다음을 사용
dotnet paket init

성공적으로 수행되면 paket-files 폴더와 paket.dependencies 파일이 생성된다. paket.dependencies 파일이 의존성을 관리하는 파일이고 내용은 다음과 같다.

source https://api.nuget.org/v3/index.json

storage: none
framework: netcore3.1, netstandard2.0, netstandard2.1

의존성 설치

의존성를 콘솔에서 다음과 같이 추가할 수 있다.

paket add DryIoc --version 4.1.3

Paket version 5.243.0
Adding DryIoc 4.1.3 to /Users/shootingstar/Code/fsharp-gs/paket.dependencies into group Main
Resolving packages for group Main:
// ... (생략) 
 - Runtime: 13 seconds

의존성이 추가 됐으면 paket.dependencies파일에 해당 의존성이 추가되어 있는 것을 볼 수 있다

source https://api.nuget.org/v3/index.json

storage: none
framework: netcore3.1, netstandard2.0, netstandard2.1
nuget DryIoc 4.1.3 # 추가된 부분

의존성 사용

Paket에서는 의존성 설치는 한번 사용은 레퍼런스를 명시하면 된다. 프로젝트 구조가 다음과 같다고 하자.

.
├── src
│   ├── ExampleA.fsproj
│   └── ExampleB.fsproj
├── paket.dependencies
└── paket.lock

프로젝트 ExampleA와 ExampleB 모두에서 사용 할 의존성은 paket.references에 명시한다. e.g.) XUnit

.
├── src
│   ├── ExampleA.fsproj
│   ├── ExampleB.fsproj
│   └── paket.references
├── paket.dependencies
└── paket.lock

특정 프로젝트에서 사용하는 의존성은 projectfilename.packet.reference에 명시한다. e.g) Microsoft.EntityFrameworkCore

.
├── src
│   ├── ExampleA.fsproj
│   ├── ExampleA.fsproj.paket.references
│   ├── ExampleB.fsproj
│   └── ExampleB.fsproj.paket.references
├── paket.dependencies
└── paket.lock

packet.reference 파일에서는 의존성 다음과 같이 이름만 명시하면 된다.

DryIoc

더 자세한 의존성 컨트롤은 Paket 공식 문서를 참고하자. https://fsprojects.github.io/Paket/index.html

Paket |> I ❤️

comments powered by Disqus