Versioning & Packages

редактор package.json

Редактируйте один манифест и проверяйте зависимости, сохраняя порядок scripts и условий exports.

редактор package.json

Исходный манифест

Форматированный результат

Манифест остаётся в браузере. Без запросов к реестру и запуска скриптов.

Описание полей и ограничения

name определяет имя пакета по правилам новых пакетов. Для локального проекта поле необязательно.

Проверяются встроенные правила, имена и корневая версия. Настройки сторонних инструментов сохраняются без специальной проверки.

Один объект, 100 000 единиц UTF-16, глубина 100. Небезопасные целые и переполнение отклоняются. Спецификации зависимостей проверяются только как строки.

Группы зависимостей

dependencies: 0 · devDependencies: 0 · peerDependencies: 0 · optionalDependencies: 0

Нет зависимостей для отображения.

Ввод или параметры изменены. Проверьте перед экспортом.

Редактор package.json помогает разобрать изменения после слияния веток. Корректный JSON ещё не означает, что имя пакета и типы значений зависимостей подходят для манифеста.

В примере показан частный проект. Сравните четыре группы отдельно: одинаковое имя в разных группах не обязательно является лишним.

Зачем нужен редактор package.json

Сохранение порядка условий

Редактор package.json сортирует имена только внутри dependencies, devDependencies, peerDependencies и optionalDependencies. Порядок верхних полей, scripts и условий exports сохраняется, поэтому визуальное упорядочивание не меняет приоритеты разрешения.

Элементы четырёх групп зависимостей меняют порядок, а соседние ветви exports остаются на месте.

Предпросмотр перед заменой

Результат показывается отдельно от исходного текста. Применение, загрузка примера и очистка сначала показывают содержимое и размер замены. Однократная отмена возвращает и исходный текст, и прежний результат с его состоянием.

Исходный манифест и отдельный предпросмотр соединены стрелками применения и отмены.

От проверки к осознанной замене

01

Приостановите автоматическую проверку

Проверка запускается через 350 мс после последней правки. Отключите автоматический режим, чтобы увидеть основную кнопку; Ctrl или Cmd с Enter выполняет ту же проверку. Изменение ввода или отступа сразу блокирует экспорт старого результата.

02

Посмотрите число изменённых групп

Предпросмотр сообщает, сколько групп действительно изменили порядок. Выбор исходного порядка заново форматирует ввод. Версии не обновляются, а пакеты не переносятся между группами.

03

Применяйте после сравнения

Верный результат можно скопировать или скачать до применения. Для замены ввода подтвердите предпросмотр. Отмена восстанавливает предыдущий текст вместе с результатом, даже если тот был устаревшим или содержал ошибки.

Синтаксис, имена и структура по отдельности

Ошибки в исходных координатах

Проверка package.json отклоняет комментарии, завершающие запятые, повторяющиеся ключи и корень не в виде объекта. Строка, столбец и JSON Pointer относятся к исходному тексту, включая имена с косой чертой.

Правила имён и корневой версии

Имя пакета npm в поле name проверяется по правилам новых пакетов, а ключ зависимости — по правилам существующих имён. Если version указана, её разбирает node-semver; локальный проект может не содержать обоих полей.

Зависимости по назначению

Панель показывает имена и неизменённые спецификации в четырёх группах, по 100 строк за раз. Подсказки объясняют зависимости исполнения, разработки, peer и optional. Правки выполняются в исходном JSON.

Выбор отступа и выгрузка

Форматирование JSON поддерживает два пробела, четыре пробела и табуляцию. Сортировка зависимостей не затрагивает другие объекты. Пользовательские поля и запись чисел сохраняются; результат скачивается как package.json.

Границы локальной проверки

Только встроенная схема
Производная схема SchemaStore проверяет структуру, причём private допускает только логическое значение. Настройки ESLint, Prettier и других инструментов сохраняются без специальной проверки. Указанный во вводе $schema не загружается.
Без проверки доступности версий
Диапазоны, теги, Git URL, локальные пути, псевдонимы и workspace остаются строками. Наличие версии, её актуальность, уязвимости и возможность установки не проверяются.
Без запуска команд
Scripts рассматриваются как текст. Инструмент не устанавливает зависимости, не публикует пакеты, не обновляет lockfile и не читает другие файлы рабочего пространства. Успешная проверка не подтверждает готовность к публикации.
Сортируются только четыре группы
Пакеты не переносятся между группами, а повторения между ними не удаляются. Порядок exports, imports, массивов и scripts сохраняется. При форматировании может измениться запись экранированных символов, но не значение строки.
Ограничения размера и точности
Допускается один JSON-объект до 100 000 кодовых единиц UTF-16 и глубины 100. Небезопасные целые числа и переполнение блокируют вывод. Отображается до 50 диагностик; ошибочный или устаревший результат нельзя экспортировать.

Вопросы: редактор package.json

Как добавить комментарии в package.json?

Стандартный JSON не допускает строчные и блочные комментарии. Здесь они вызывают ошибку, а не удаляются автоматически. Если использовать своё поле для заметок, оно останется обычными данными; проверьте совместимость с остальными инструментами проекта.

Чем отличаются dependencies, devDependencies и peerDependencies?

dependencies содержит пакеты для исполнения, devDependencies — для разработки и тестов. peerDependencies описывает требования к совместимости среды потребителя. optionalDependencies допускает неудачную установку. Инструмент не меняет назначение пакетов автоматически.

Можно ли отсортировать зависимости в package.json по алфавиту без установки пакета?

Да. Имена внутри четырёх групп сортируются в браузере без установки дополнительного пакета. Перед сохранением проверьте число изменённых групп и предпросмотр. Scripts и условные exports сохраняют порядок.

Почему значение name в package.json не соответствует шаблону?

Новые имена должны быть в нижнем регистре, содержать допустимые для URL символы и занимать не более 214 символов вместе со scope. Поддерживается вид @team/widget. Корректность имени не подтверждает доступность или право владения им.

Чем отличаются ~ и ^ в package.json?

Для обычных ненулевых основных версий ~1.2.3 обычно допускает исправления, а ^1.2.3 также совместимые минорные обновления. Для основной версии ноль и предварительных выпусков действуют дополнительные правила. Здесь строка сохраняется без вычисления установленной версии.

Какие поля нужны в минимальном package.json?

npm разрешает не указывать name и version у проекта, который не планируется публиковать. Поэтому пустой объект проходит эту локальную проверку структуры. Для публикации нужны дополнительные сведения и проверки.

Не хватает полезной проверки?

Проверьте следующее изменение

Откройте редактор package.json с небольшим примером, сравните группы зависимостей и применяйте результат только после просмотра.