Судя по выводам команды npx tsc --init
, похоже, что пакет typescript
не установлен в каталоге, в котором вы запустили команду. npx
пытается быть полезным, устанавливая любые пакеты, необходимые для запуска команды.
Несмотря на то, что он пытался быть полезным, в конечном итоге не установил пакет, который можно было бы ожидать в 2020 году. Если вы запустите $ npx tsc -v
вы, скорее всего, получите следующий результат:
$ npx tsc -v
npx: installed 1 in 1.098s
message TS6029: Version 1.5.3
Однако если бы у вас был установлен пакет typescript
, вы бы получили это, вместо этого:
$ npx tsc -v
Version 3.9.3
Как вы Как видите, версия, установленная npm
, отличается. Это потому, что npx
закончил установку пакета tsc
, а не typescript
. Пакет tsc
также предоставляет команду tsc
. npx
выбрал его вместо typescript
, потому что, хотя оба пакета предоставляют команду tsc
, он также называется tsc
. npx
подумал, что это подходит лучше.
ОБНОВЛЕНИЕ:
Пряжа 2 представляет функцию Plug'n'Play
. Зависимости устанавливаются совсем не так, как раньше в Yarn 1 и npm
.
Yarn 1 и npm
помещают код для ваших пакетов в каталог node_modules
в каждом отдельном проекте. npx
ищет там команды.
Yarn 2, с другой стороны, устанавливает код пакета в совместно используемое место и помещает в ваш проект единственный файл .pnp.js
, который выполняет сопоставление. Если вы устанавливаете пакет для одного проекта, вам не придется загружать его снова, если вы используете его в другом проекте.
Однако любые инструменты, которые зависели от node_modules
, будут повреждены. Вот почему npx
не удалось найти typescript
в вашем проекте. npx
не знает о Plug'n'Play
.
Подробнее об этой функции можно прочитать здесь: https://yarnpkg.com/features/pnp