Project IDX를 사용하면 다음을 설명하는 단일 .idx/dev.nix
구성 파일을 정의하여 작업공간을 프로젝트의 고유한 요구에 맞게 조정할 수 있습니다.
- 컴파일러 또는 기타 바이너리와 같이 실행할 수 있어야 하는 시스템 도구 (예: 터미널에서)
- 설치해야 하는 IDE 확장 프로그램 (예: 프로그래밍 언어 지원)
- 앱 미리보기가 표시되는 방식입니다 (예: 웹 서버를 실행하는 명령어).
- 작업공간에서 실행 중인 로컬 서버에서 사용할 수 있는 전역 환경 변수입니다.
사용 가능한 기능에 대한 전체 설명은 dev.nix
참조를 확인하세요.
Nix 및 IDX
IDX는 Nix를 사용하여 각 작업공간의 환경 구성을 정의합니다. 특히 IDX는 다음을 사용합니다.
작업공간 환경을 설명하는 Nix 프로그래밍 언어 Nix는 함수형 프로그래밍 언어입니다.
dev.nix
파일에서 정의할 수 있는 속성과 패키지 라이브러리는 Nix 속성 집합 구문을 따릅니다.Nix 패키지 관리자: 작업공간에서 사용할 수 있는 시스템 도구를 관리합니다. 이는 APT (
apt
및apt-get
), Homebrew (brew
),dpkg
과 같은 OS별 패키지 관리자와 유사합니다.
Nix 환경은 IDX의 컨텍스트에서 재현 가능하고 선언적이므로 프로젝트에서 작업하는 모든 사람이 동일한 환경 구성을 갖도록 하기 위해 Git 저장소의 일부로 Nix 구성 파일을 공유할 수 있음을 의미합니다.
기본 예제
다음 예는 미리보기를 사용 설정하는 기본 환경 구성을 보여줍니다.
{ pkgs, ... }: {
# Which nixpkgs channel to use.
channel = "stable-23.11"; # or "unstable"
# Use https://search.nixos.org/packages to find packages
packages = [
pkgs.nodejs_18
];
# Sets environment variables in the workspace
env = {
SOME_ENV_VAR = "hello";
};
# Search for the extensions you want on https://open-vsx.org/ and use "publisher.id"
idx.extensions = [
"angular.ng-template"
];
# Enable previews and customize configuration
idx.previews = {
enable = true;
previews = {
web = {
command = [
"npm"
"run"
"start"
"--"
"--port"
"$PORT"
"--host"
"0.0.0.0"
"--disable-host-check"
];
manager = "web";
};
};
};
}
시스템 도구 추가
클라우드 서비스의 컴파일러 또는 CLI 프로그램과 같은 시스템 도구를 작업공간에 추가하려면 Nix 패키지 레지스트리에서 고유한 패키지 ID를 찾아 dev.nix
파일의 packages
객체에 추가합니다('pkgs.:
{ pkgs, ... }: {
# Which nixpkgs channel to use.
channel = "stable-23.11"; # or "unstable"
# Use https://search.nixos.org/packages to find packages
packages = [
pkgs.nodejs_18
];
...
}
이는 APT (apt
및 apt-get
), Homebrew(brew
), dpkg
과 같은 OS별 패키지 관리자를 사용하여 일반적으로 시스템 패키지를 설치하는 방법과 다릅니다. 어떤 시스템 패키지가 필요한지 명확하게 설명하면 IDX 작업공간을 더 쉽게 공유하고 재현할 수 있습니다.
로컬 노드 바이너리 사용
로컬 머신에서와 마찬가지로 로컬로 설치된 노드 패키지와 관련된 바이너리 (즉, package.json
에 정의된 패키지)는 npx
명령어로 호출하여 터미널 패널에서 실행할 수 있습니다.
추가 편의를 위해 node_modules
폴더가 있는 디렉터리 (예: 웹 프로젝트의 루트 디렉터리)에 있는 경우 로컬에 설치된 바이너리를 npx
접두사 없이 직접 호출할 수 있습니다.
gcloud
구성요소 추가
Google Cloud용 gcloud
CLI의 기본 구성은 모든 IDX 작업공간에서 사용할 수 있습니다.
추가 구성요소가 필요한 경우 다음과 같이 dev.nix
파일에 추가하면 됩니다.
{ pkgs }: {
packages = [
...
(pkgs.google-cloud-sdk.withExtraComponents [
pkgs.google-cloud-sdk.components.cloud-datastore-emulator
])
...
];
}
IDE 확장 프로그램 추가
다음 두 가지 방법으로 OpenVSX 확장 프로그램 레지스트리를 사용하여 IDX에 확장 프로그램을 설치할 수 있습니다.
IDX에서 확장 프로그램 패널을 사용하여 확장 프로그램을 검색하고 설치합니다. 이 방법은 다음과 같은 사용자별 광고 확장에 가장 적합합니다.
- 맞춤 색상 테마
dev.nix
파일에 확장 프로그램 추가. 이러한 확장 프로그램은 작업공간 구성을 공유할 때 자동으로 설치됩니다. 이 방법은 다음과 같은 프로젝트별 확장 프로그램에 가장 적합합니다.- 프로그래밍 언어 확장 프로그램(언어별 디버거 포함)
- 프로젝트에 사용되는 클라우드 서비스의 공식 확장 프로그램
- 코드 형식 지정 도구
후자의 경우 정규화된 확장 프로그램 ID (<publisher>.<id>
형식)를 찾아 다음과 같이 idx.extensions
객체에 추가하여 dev.nix
파일에 IDE 확장 프로그램을 포함할 수 있습니다.
{ pkgs, ... }: {
...
# Search for the extensions you want on https://open-vsx.org/ and use the format
# "<publisher>.<id>"
idx.extensions = [
"angular.ng-template"
];
...
}
공통 서비스 추가
또한 IDX는 개발 중에 필요할 수 있는 다음과 같은 일반적인 서비스의 간소화된 설정 및 구성을 제공합니다.
- 컨테이너
- Docker (
services.docker.*
)
- Docker (
- 메시지
- Pub/Sub 에뮬레이터 (
services.pubsub.*
)
- Pub/Sub 에뮬레이터 (
- 데이터베이스
- MySQL (
services.mysql.*
) - Postgres (
services.postgres.*
) - Redis (
services.redis.*
) - Spanner (
services.spanner.*
)
- MySQL (
작업공간에서 이러한 서비스를 사용 설정하는 방법에 대한 자세한 내용은 dev.nix
참조의 services.*
부분을 확인하세요.
미리보기 맞춤설정
앱 미리보기를 맞춤설정하는 방법에 관한 자세한 내용은 미리보기 문서를 참고하세요.
모든 맞춤설정 옵션 보기
환경 구성 스키마에 대한 자세한 설명은 dev.nix
참조를 확인하세요.