HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>У любого проекта есть как минимум два режима использования. Их обычно называют средами. Например, когда разработчик работает над проектом у себя на компьютере, то он запускает его в среде разработки, development. Когда же проект попадает в то место, где им пользуются, то тогда среду называют продакшеном, production.</p>
1 <p>У любого проекта есть как минимум два режима использования. Их обычно называют средами. Например, когда разработчик работает над проектом у себя на компьютере, то он запускает его в среде разработки, development. Когда же проект попадает в то место, где им пользуются, то тогда среду называют продакшеном, production.</p>
2 <p>С одной стороны, эти среды всегда стараются делать похожими, чтобы избежать ошибок, связанных с особенностями конкретной среды, с другой, к ним, все же, предъявляются разные требования. Например, для разработки часто бывают нужны дополнительные пакеты, которые помогают самому процессу разработки, например, пакеты для автоматизированного тестирования кода. Представьте, что вы себе скачали библиотеку в проект, а вместе с ней скачались и все линтеры, которые использовались при ее разработке. Вам, как пользователю библиотеки, они ни к чему, но вот место на диске они занимают. Для продакшен среды важно не тянуть за собой ненужных вещей, так как это сильно влияет на скорость доставки кода на продакшен.</p>
2 <p>С одной стороны, эти среды всегда стараются делать похожими, чтобы избежать ошибок, связанных с особенностями конкретной среды, с другой, к ним, все же, предъявляются разные требования. Например, для разработки часто бывают нужны дополнительные пакеты, которые помогают самому процессу разработки, например, пакеты для автоматизированного тестирования кода. Представьте, что вы себе скачали библиотеку в проект, а вместе с ней скачались и все линтеры, которые использовались при ее разработке. Вам, как пользователю библиотеки, они ни к чему, но вот место на диске они занимают. Для продакшен среды важно не тянуть за собой ненужных вещей, так как это сильно влияет на скорость доставки кода на продакшен.</p>
3 <p>Для решения этой задачи есть возможность явно указывать зависимости, которые нужны только во время разработки. Делается это с помощью специального флага во время установки:</p>
3 <p>Для решения этой задачи есть возможность явно указывать зависимости, которые нужны только во время разработки. Делается это с помощью специального флага во время установки:</p>
4 <p>Процедура установки здесь практически не отличается от установки обычных пакетов. Разница только в том, что описание зависимости появится не в<em>dependencies</em>, а в<em>dependency-groups.dev</em>.</p>
4 <p>Процедура установки здесь практически не отличается от установки обычных пакетов. Разница только в том, что описание зависимости появится не в<em>dependencies</em>, а в<em>dependency-groups.dev</em>.</p>
5 <p>С точки зрения использования, эти пакеты ничем не отличаются от пакетов, устанавливаемых в<em>dependencies</em>. Их точно также можно импортировать в код. Разница только в том, где их импортируют. Как правило, для тестирования кода создается отдельная директория. Внутри нее располагают код тестов, которые запускаются только в среде разработки. Поэтому импорты этого кода не пересекаются с импортами кода самого проекта.</p>
5 <p>С точки зрения использования, эти пакеты ничем не отличаются от пакетов, устанавливаемых в<em>dependencies</em>. Их точно также можно импортировать в код. Разница только в том, где их импортируют. Как правило, для тестирования кода создается отдельная директория. Внутри нее располагают код тестов, которые запускаются только в среде разработки. Поэтому импорты этого кода не пересекаются с импортами кода самого проекта.</p>
6 <p>Все это можно своими глазами увидеть в специальном<a>пакете</a>, созданном Хекслетом как пример эталонного проекта.</p>
6 <p>Все это можно своими глазами увидеть в специальном<a>пакете</a>, созданном Хекслетом как пример эталонного проекта.</p>
7 <h2>Флаг --no-dev</h2>
7 <h2>Флаг --no-dev</h2>
8 <p>Зависимости для разработки всегда устанавливаются при запуске uv sync. Здесь разработчики исходили из того, что чаще всего эта команда вызывается во время разработки, поэтому самый короткий вариант был оставлен для среды разработки. Для продакшена нужно добавлять специальный флаг:</p>
8 <p>Зависимости для разработки всегда устанавливаются при запуске uv sync. Здесь разработчики исходили из того, что чаще всего эта команда вызывается во время разработки, поэтому самый короткий вариант был оставлен для среды разработки. Для продакшена нужно добавлять специальный флаг:</p>
9 <p>Несмотря на то, что с продакшеном вы познакомитесь чуть позже, знать про dev-зависимости нужно сразу, так как они встречаются в исходных файлах подавляющего большинства проектов и это не должно быть сюрпризом.</p>
9 <p>Несмотря на то, что с продакшеном вы познакомитесь чуть позже, знать про dev-зависимости нужно сразу, так как они встречаются в исходных файлах подавляющего большинства проектов и это не должно быть сюрпризом.</p>