우리는 모노레포로 프로젝트를 구성했다. .env를 앱별로 관리하는게 너무 귀찮은 일이다.
최상단의 .env를 효율적으로 공유할 수 없을까. 마치 windows의 바로가기 아이콘처럼
방법이 있다.
심볼릭 링크(또는 symlink)는 파일 시스템에서 다른 파일이나 디렉토리에 대한 참조를 생성하는 특수한 파일입니다. 심볼릭 링크를 사용하면 원본 파일이나 디렉토리의 위치에 관계없이 쉽게 접근할 수 있습니다.
h-car
├── apps
│ ├── admin
│ └── service
└── packages
└── database
.env (최상단 .env를 각 앱 상단에 공유하기)
admin / service / database에 .env를 공유는 심볼릭 링크를 만들 예정
gitignore에 .env를 공유하지 않도록 한다. 명심
각 앱 디렉토리(admin, service)로 이동한 후, 다음 명령어를 사용하여 심볼릭 링크를 생성합니다. bash
cd apps/admin
ln -s ../../.env .env
cd ../service
ln -s ../../.env .env
cd ../../packages/database
ln -s ../../.env .env
만들어졌다. 심볼릭링크
확인해보자
ls -la .env
연결 내용이 확인되었다.
내용을 확인해보자
cat .env
gitignore에 공유하지 않으면 모든 팀원이 따로 만들어야 되니까 공유하자.
단 .env 최상단은 꼭 공유하지말도록
# .env 파일 무시
.env
# 심볼릭 링크 포함 (특정 형식으로 설정)
!apps/admin/.env
!apps/service/.env
!packages/database/.env
.env 파일 자체는 공유하지 않더라도, 심볼릭 링크인 .env 파일을 Git에 포함시켜서 다른 개발자들이 사용할 수 있도록 할 수 있습니다.
.env 파일: 실제 환경 변수를 저장하는 파일로, 보안상의 이유로 Git에 푸시하지 않는 것이 좋습니다.
심볼릭 링크: 각 앱 디렉토리에 있는 .env 심볼릭 링크는 Git에 푸시할 수 있으며, 해당 링크는 루트 디렉토리의 .env 파일을 참조합니다.
이렇게 설정하면, 각 팀원이 심볼릭 링크를 통해 동일한 경로에 있는 .env 파일을 사용할 수 있지만, 실제 .env 파일은 Git에 포함되지 않아 보안이 유지됩니다.