Как сделать скрипт nodejs инструментом CLI в linux?

1

Я создал javascript файл mytool.js, он имеет некоторые зависимости (в package.json).

Теперь я могу выполнить ввод в

~/mynodes/mytool $ node mytool

Но если я изменю рабочий каталог, я больше не могу использовать эту команду, потому что раньше он запускался локально. То, что я хочу достичь, - это просто ввести:

~$ mytool

(где бы я ни находился в моей системной файловой системе и без ввода node раньше).

Должен ли я установить его вручную?

Если да, где общее место для установки персонального скрипта nodejs в unix-подобной системе?

Или существует ли команда npm для установки персональной скриптовой системы?

Теги:

3 ответа

2
Лучший ответ

Когда вы добавляете ключ "bin" в свой пакет package.json:

  "bin": {
    "mytool": "mytool.js"
  },

то вы сможете установить свой скрипт с помощью npm install -g и он будет автоматически добавлен туда, где он должен быть (в место, где установлены другие глобально установленные инструменты cli, которые должны быть в вашем PATH).

Вы можете увидеть этот простой проект в качестве примера:

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

  1. он имеет один сценарий для запуска
  2. он имеет внешние зависимости
  3. он может быть установлен глобально
  4. его можно запустить из любого места с помощью одной команды

Обратите внимание, что вам не нужно публиковать свой скрипт на npm, чтобы его можно было установить, хотя вы можете это сделать, или вы также можете устанавливать проекты непосредственно из GitHub (включая частные репозитории), но вы также можете установить модуль, который вы в вашем локальном каталоге или в tarball:

npm install -g module-on-npm
npm install -g user/repo-on-github
npm install -g /your/local/directory
npm install -g /your/local/tarball.tgz

Дополнительные сведения см. В следующих разделах:

Также имейте в виду, что для того, чтобы ваша программа могла быть выполнена из любого места, вам нужно использовать пути относительно __dirname или __filename если вам нужно получить доступ к своим собственным файлам относительно вашего кода. Увидеть:

1

Первый вариант:

Вы можете запустить свой файл глобально, поместив первую строку файла: #!/usr/bin/env node, скопировав его в /usr/local/bin и сделав его исполняемым: sudo chmod +x/usr/local/bin/yourfile.js а затем вы можете вызвать его из того места, где хотите, с помощью yourfile.js

Второй вариант:

Сделайте свой локальный файл исполняемым и создайте исполняемый скрипт bash, который вызывает ваш локальный файл, и поместите его в /usr/local/bin а затем вызовите bashfile по всему миру.

  • 0
    Это будет работать, но я бы порекомендовал поместить ваши собственные файлы в / usr / local / bin, если вам нужно, вместо / usr / bin, который обычно управляется менеджером пакетов ОС.
  • 0
    Да ты прав!
Показать ещё 4 комментария
1
  1. Поместите строку shebang в начало скрипта (например, #!/usr/bin/env node).
  2. Поместите скрипт в каталог в $PATH
  3. Дайте ему исполняемые разрешения (например, chmod +x/usr/local/bin/example.js)
  • 1
    Мне нравится идея, поэтому я проголосовал, но проблема в том, что я должен вручную установить зависимости таким же образом, что не очень удобно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню