Локальная установка npm не создает символическую ссылку на исполняемые файлы bin

Если я создаю минимальный package.json файл:

{
  "name": "cli-test",
  "version": "1.0.0",
  "bin": "index.js",
  "main": "index.js"
}

и index.js файл:

#!/usr/bin/env node
console.log("Hello")

и беги npm installпочему не npm создать ./node_modules/.bin/cli-test символическая ссылка на мой index.js файл? Документация package.json говорит об этом в "bin":

При установке npm будет ссылаться на этот файл в prefix/bin для глобальных установок, или ./node_modules/.bin для локальной установки.

Если я сделаю npm install -gсимволическая ссылка создана, но я не хочу глобальной установки. Я использую узел 6.10.3 и npm 3.10.10. Также пробовал с npm 5.0.4.

1 ответ

Решение

Бег npm install внутри директории пакета (что вы и делаете) устанавливает только зависимости пакета, а не сам пакет:

npm install (в каталоге пакета, без аргументов):

Установите зависимости в локальной папке node_modules.

(от npm help install)

Цитируемая вами документация относится к самому устанавливаемому пакету.

Я обычно помещаю исполняемые скрипты в ./bin каталога пакета, так что я могу выполнить их напрямую, и обратиться к ним из package.json:

"bin" : { "my-cool-cli" : "./bin/my-cool-cli" }
Другие вопросы по тегам