Можно ли сообщить Typescript о версиях зависимостей, определенных в package.json?

Я понял, что когда я запускаю tsc в проекте с определенной зависимостью, компиляция будет успешной, если любая версия зависимости присутствует в моей системе в любом месте пути разрешения модуля узла.

Например:

  • В монорепозитории, управляемом с помощью рабочих областей пряжи, которые содержат два пакета (проект_1 и проект_2)
  • Если project_1 объявил зависимость dep_1 в своем package.json
  • После запуска yarn install к корневому node_modules добавляется dep_1.

Теперь я могу использовать операторы импорта для dep_1 в project_2 без добавления dep_1 в файл package.json и project_2 tsc не будет жаловаться во время компиляции.

Можно ли изменить это поведение, чтобы Typescript знал о зависимостях, объявленных в package.json каждого проекта?


person Jesuspc    schedule 06.01.2019    source источник


Ответы (2)


Это неотъемлемая проблема подъема пакетов и причина того, что многие пакеты испорчены. Тем не менее, TSLint предоставляет правило no-implicit-dependencies для предотвращения импорта загруженных пакетов, не указаны как прямые зависимости.

person Christian Ivicevic    schedule 06.01.2019
comment
Спасибо. Я также нашел этот документ в lerna, который объясняет это: github.com /lerna/lerna/blob/master/doc/hoist.md - person Jesuspc; 06.01.2019

Обратите внимание, что это не относится к TypeScript. Вы могли бы сделать то же самое с помощью обычного JavaScript. Это присуще подъемному механизму.

person Nikola Mihajlović    schedule 17.07.2020