Локальная установка 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" }