установить определение @types из форка

Контекст

Я развил DefinitelyTyped и нашел обходной путь для одного определения типа. Этот обходной путь находится в ветке этого форка.

Это изменение не следует объединять обратно, так как это лишь временный обходной путь.

Вопрос

Как мне установить это настраиваемое определение типа через npm или yarn?

Проблемы

  • Я не могу просто установить ветку, так как она установит весь репозиторий DefinitelyTyped, а не только библиотеку.
  • В идеале я хотел бы установить его так же, как определения типов по умолчанию, чтобы не требовалось никакой дополнительной (глобальной) настройки.

person Waog    schedule 04.07.2018    source источник


Ответы (3)


Если это просто временно, как вы говорите (или, может быть, очень специфический вариант использования), вероятно, имеет смысл просто скопировать измененные определения типов в репозиторий вашего проекта. Затем вы можете ссылаться на эти определения так же, как и с любыми пользовательскими типами (см. мой другой ответ для получения инструкций).

person MisterMetaphor    schedule 05.11.2018

Это может быть трудоемким процессом, но выполнимым (насколько мне известно).

Используйте проект types-publisher. Раздел Выполнение вручную в файле ознакомительных сведений описывает шаги, которые необходимо выполнить.

Следующие шаги, указанные в Readme, должны быть достаточными для создания и публикации пакета в вашей учетной записи npm:

  1. Обновите локальный репозиторий DefinitelyTyped
  2. Разобрать определения
  3. Рассчитать версии
  4. Создание пакетов на диске
  5. Публикация пакетов на диске
  6. Опубликовать реестр

В settings.json укажите scopeName, равное имени пользователя npm.

Пакет можно использовать как npm i @username/package-name

person dRoyson    schedule 01.11.2018

Насколько я знаю, одношагового решения не существует, потому что npm и yarn не поддерживают установку напрямую из подкаталога репозитория git. См. проблемы для npm (возможно, есть более новая версия) и yarn и предыдущие вопросы о переполнении стека, включая вот этот. (Если ваш репозиторий размещен в службе, которая предлагает URL-адрес для загрузки tar-архива подкаталога репозитория, вы можете попробовать запустить npm install по этому URL-адресу; я не использовал этот подход.)

Я предлагаю вам использовать Braid (раскрытие информации: я участник Braid), чтобы скопировать подкаталог DefinitelyTyped fork в подкаталог вашего проекта, а затем запустите npm install (или yarn add) в этом подкаталоге. npm или yarn создаст символическую ссылку из соответствующего места в node_modules на подкаталог, поэтому TypeScript найдет объявления типа без дополнительной настройки. Поскольку репозиторий DefinitelyTyped не содержит полнофункциональных файлов package.json для пакетов отдельных типов, вам, вероятно, потребуется создать файл package.json в локальном подкаталоге или добавить в него отсутствующие поля перед запуском npm install. (Вы можете просто оставить это изменение как последующее изменение зеркала Braid.)

Единственный недостаток, который я вижу в этом решении, заключается в том, что оно создает копию пакета типов в нижестоящем репозитории, который будет постоянно занимать некоторое место в репозитории. (И Braid скопирует всю историю DefinitelyTyped в ваш локальный клон нижестоящего репозитория, но это пространство может быть освобождено сборщиком мусора.)

person Matt McCutchen    schedule 01.11.2018