Подтвердить что ты не робот

Как вручную обновить пакет устаревших типизаций

У меня есть приложение NodeJS, которое я пишу в TypeScript. Он использует множество пакетов Node. Не все из этих пакетов имеют определения Typescript, поэтому я использую Typings для получения отдельных файлов определений.

Когда я развертываю свое приложение на рабочий сервер, у меня есть Git hook, который запускает npm install, typings install и tsc, так как они не включены в репозиторий Git.

Когда новая версия файла определений типов выдается на DefinitelyTyped, я получаю предупреждения, когда он запускает typings install, что мои файлы определений устарели (обновлены, заменены или удалены):

typings WARN deprecated 6/30/2016: "registry:dt/bluebird#2.0.0+20160319051630" is deprecated (updated, replaced or removed)
typings WARN deprecated 7/5/2016: "registry:dt/knex#0.0.0+20160622193910" is deprecated (updated, replaced or removed)
typings WARN deprecated 7/20/2016: "registry:dt/node#6.0.0+20160613154055" is deprecated (updated, replaced or removed)
typings WARN deprecated 7/19/2016: "registry:dt/lodash#3.10.0+20160619033623" is deprecated (updated, replaced or removed)

Что можно сделать по этому поводу? Есть ли простой способ обновить их все? Похоже, файл typings.json указывает номер версии для пакета после знака # и дату после знака+. Если новый файл определений загружается в DefinitelyTyped, обычно ли безопасно считать его более точным или более полным, чем предыдущая версия?

Есть ли какой-либо санкционированный способ обновить их вручную, кроме typings uninstall --save, за которым следует typings install --save для каждого пакета? Похоже на хлопот, и должен быть какой-то простой способ, что-то вроде typings update [package-name].

4b9b3361

Ответ 1

Простой в TypeScript 2.0

Следует также упомянуть, что TypeScript 2.0, официально выпущенный в сентябре 2016 года, имеет более легкое решение, интегрированное в npm (в сотрудничестве с автором Типов и Авторы TSD). Где вы по существу получаете пакеты с определенными типами как @types/packageName:

npm install --save packageName @types/packageName

а также возможность автоматически получать типы из пакетов npm напрямую. Таким образом, вы можете просто использовать package.json и npm для непосредственного управления определениями типов. В этом случае

npm update

получит именно то поведение, которое вы изначально запросили.

Подробнее см. сообщение о бета-объявлении и официальную TypeScript документацию.


Нарушение изменений из @types не вызывает предупреждений

Хотелось бы отметить, что член команды TypeScript (Райан Кавано) упоминает в разделе комментариев TypeScript бета-объявления, что, по крайней мере, текущая версия бета-версии, на которую он ссылался, не предупреждала об устаревших определениях типов. Даже для серьезных обновлений. Значение, если вы хотите определения типов для lodash версии 4 и вместо этого получили версию lodash версии 3, не было бы предупреждения. Таким образом, получение определения типа для библиотеки, которая прошла через нарушение изменений. Просто что-то потенциально иметь в виду (РЕДАКТИРОВАТЬ: Лично еще не подтвердил, действительно ли это относится к окончательной версии 2.0.).

Нет команды обновления

Нет команды обновления, в ней есть проблема в Typings, содержащая сценарии unix и powershell, чтобы автоматически выполнять какое-то обновление.

Конкретная команда установки

Как вы можете видеть в параметрах CLI, вы можете, однако, обновить определение типа для определенного пакета с определенным диапазоном источника и диапазона semver.

Если источник определенно типизирован, вы должны префикс пакета с dt~. Хотя если у вас есть версия semver ^3.10.0, вы также суффикс имени пакета @^3.10.0.

В зависимости от того, является ли это регулярной или зависимой от разработки, вы также добавляете --save или --save-dev соответственно. Пока вы также добавляете --global, если это глобальная такая зависимость. Это должно быть доступно в файле typings.json

Чтобы обновить пакет lodash, упомянутый выше, до последнего определения типа с версией semver ^3.10.0, вы должны написать:

typings install [email protected]^3.10.0 --save

или

typings install [email protected]^3.10.0 --save --global

если это глобальная зависимость.

Это обновит хэш и дату typings.json и установит это последнее определение для данного диапазона semver. Хотя, если обновление не найдено, файл не изменяется. Если вы настроились на автоматизацию этого процесса обновления, вы можете написать script, который пытается сделать эти обновления независимо.

Предостережения

Обратите внимание, что определения определенно типизированных типов необязательно всегда корректно помечены версиями. Потенциально полностью отсутствуют тегированные версии или большие разрывы между ними. Могло, например, быть также и то, что непомеченная версия новее, чем последняя помеченная версия, в настоящее время это относится к lodash при определенном типе (25 июня 2016 года).

Вы можете легко обнаружить, какие тегированные версии существуют для данного пакета в данном источнике, с помощью:

typings view <source>~<package> --versions

для пакета lodash с определенно типизированным как источник, он будет таким образом:

typings view dt~lodash --versions

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