닷넷 개발자라면 Nuget을 모를리가 없다. 심지어 Nuget 웹사이트에 나오지만 Nuget이외의 다른 의존성 관리자가 있다는 사실조차 모르는 사람이 많다😱😱😱.
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 ❤️