Цель Project IDX — быть максимально полезным для разработчиков. Один из способов, с помощью которого IDX достигает этой цели, — предоставить разработчикам свободу и гибкость в установке нужных инструментов для любого конкретного проекта в своем рабочем пространстве и настройке параметров, чтобы их рабочие пространства работали на них.
Никс + IDX
IDX использует Nix для определения конфигурации среды для каждого рабочего пространства. Nix — это чисто функциональный менеджер пакетов, который присваивает уникальные идентификаторы каждой зависимости, что в конечном итоге означает, что ваша среда может беспрепятственно содержать несколько версий одной и той же зависимости. Он также воспроизводим и декларативен. В контексте IDX это означает, что вы можете использовать файл конфигурации Nix в разных рабочих областях для загрузки одной и той же конфигурации среды.
IDX определяет конфигурацию среды предварительного просмотра и пакета рабочей области непосредственно из репозитория кода с помощью файла .idx/dev.nix
. Атрибуты и библиотеки пакетов, которые вы можете определить в этом файле, соответствуют синтаксису набора атрибутов 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";
};
};
};
}
Атрибуты Nix и библиотеки пакетов
пакеты
Пакеты для установки в среду.
Вы можете использовать аргумент pkgs
для выбора пакетов для установки, например pkgs.python3
. Обратите внимание, что содержимое pkgs
зависит от выбранного параметра channel
.
Пример:
{pkgs, ...}: {
channel = "stable-23.11";
packages = [pkgs.vim];
}
Вы можете поискать доступные пакеты здесь: стабильный-23.11 или нестабильный .
Тип: список посылки
По умолчанию: [ ]
канал
канал nixpkgs, который нужно использовать.
Этот канал определяет содержимое аргумента pkgs
.
Тип: один из «стабильный-23.05», «стабильный-23.11», «нестабильный».
По умолчанию: "stable-23.11"
окружение
Переменные среды, которые устанавливаются внутри среды разработчика.
Они распространяются на все ваши оболочки и сервер предварительного просмотра. Переменные среды могут быть особенно полезны, если вашему приложению требуется определенный набор переменных.
Пример:
{pkgs, ...}: {
env = {
HELLO = "world";
};
}
Тип: набор атрибутов чего угодно
По умолчанию: { }
idx.extensions
Расширения кода, которые вы хотите установить в своем рабочем пространстве IDX.
Это список полных идентификаторов расширений, т. е ${publisherId}.${extensionId}
.
Вы можете найти список доступных расширений в реестре Open VSX и ввести их в свой файл dev.nix
с помощью ${publisherId}.${extensionId}
.
Тип: список (непустая строка или путь).
По умолчанию: [ ]
idx.previews.enable
Установите для этого параметра значение true
, чтобы включить предварительный просмотр IDX.
Эта функция позволяет автоматически запускать и перезагружать приложения по мере их разработки.
Тип: логический
По умолчанию: true
Пример: true
idx.previews.previews
Предварительный просмотр конфигураций.
Определите команды, которые IDX выполняет в вашей среде разработки.
Пример:
{pkgs, ...}: {
idx.previews = {
enable = true;
previews = {
web = {
command = ["yes"];
cwd = "subfolder";
manager = "web";
env = {
HELLO = "world";
};
};
};
};
}
Тип: набор атрибутов (подмодуль)
По умолчанию: { }
idx.previews.previews.*.команда
Команда для выполнения
Тип: список строк
По умолчанию: [ ]
idx.previews.previews.*.cwd
Рабочий каталог
Тип: строка
По умолчанию: ""
idx.previews.previews.*.env
Переменные среды, которые необходимо установить.
Тип: набор атрибутов строки.
По умолчанию: { }
idx.previews.previews.*.manager
Менеджер
Тип: один из web
, flutter
idx.workspace.onCreate
Команды, выполняемые при первом создании и открытии рабочей области.
Это может быть полезно для настройки среды разработки. Например, здесь мы указываем npm install
для запуска:
{pkgs, ...}: {
idx.workspace.onCreate = {
npm-install = "npm install";
};
}
Тип: набор атрибутов (путь или строка).
По умолчанию: { }
idx.workspace.onStart
Команды, выполняемые при каждом открытии рабочей области.
Это может быть полезно для начала сборки наблюдателей. Например, здесь мы указываем две команды для запуска:
{pkgs, ...}: {
idx.workspace.onStart = {
npm-watch-fe = "npm run watch:frontend";
npm-watch-be = "npm run watch:backend";
};
}
Тип: набор атрибутов (путь или строка).
По умолчанию: { }
Services.docker.enable
Включить ли докер без Root.
Тип: логический
По умолчанию: false
Пример: true