Я веду себя более осторожно, чем обычно, потому что в прошлом меня смущало поведение npm
.
Я на Mac и установили Node.js через brew install node
.
Теперь, когда я хочу запустить jslint.js
команду в командной строке, jslint
я обнаружил, что канонический способ выполнить это - sudo npm install -g jslint
успешно выполнить следующие выходные данные:
$ sudo npm install -g jslint
npm http GET https://registry.npmjs.org/jslint
npm http 200 https://registry.npmjs.org/jslint
npm http GET https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http 200 https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http GET https://registry.npmjs.org/nopt
npm http 200 https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http 200 https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http GET https://registry.npmjs.org/abbrev
npm http 200 https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/abbrev/-/abbrev-l.0.4.tgz
npm http 200 https://registry.npmjs.org/abbrev/-/abbrev-1.0.4.tgz
/usr/local/share/npm/bin/jslint -> /usr/local/share/npm/lib/node_modules/jslint/
bin/jslint.js
jslint@0.1.9 /usr/local/share/npm/lib/node_modules/jslint
└── nopt@1.0.10 (abbrev@1.0.4)
Впоследствии
$ jslint ply.js
zsh: command not found: jslint
из-за того, что /usr/local/share/npm/bin
не находится в моем $PATH
.
1) Почему brew
не установили глобальный npm
bin
путь к пути? Может быть, это так, но что-то zsh
делает, что-то портит. Где я могу это найти?
2) Стоит ли мне это делать? (Добавить :/usr/local/share/npm/bin
в экспортированный $PATH
внизу мой ~/.zshrc
)
Похоже, это неправильный способ сделать это, потому что, если я установлю что-то еще позже (используя Homebrew или что-то еще), мне нужно будет добавить его в свой сценарий запуска zsh, чтобы установить путь. Я предполагаю, что в данном конкретном случае это просто вопрос npm install -g
неправильных символических ссылок в «правильном» месте (например, /usr/local/bin
возможно).
Я думаю, что я буду вручную создавать внутри символические ссылки /usr/local/bin
для любых программ, с которыми у меня возникают проблемы, и этого должно быть достаточно для моих целей.
РЕДАКТИРОВАТЬ : Я обновляю это в 2019 году, потому что этот старый вопрос популярен, но теперь устарел как с точки зрения моего личного рабочего процесса, так и с точки зрения того, как лучше всего установить узел и управлять его различными зависимостями.
Мой личный рабочий процесс теперь заключается в использовании установщика, полученного с nodejs.org, для установки узла в системах. На самом деле я доверяю этому больше, чем самому пакету homebrew, потому что он лучше всех знает, как управлять файлами. Если вы хотите изменить свой системный узел с 8.10 на 10.15, будь то на Mac или Windows, просто загрузите установщик с nodejs.org для 10.15 для вашей ОС. По моему опыту, попытка обновить узел, установленный с помощью homebrew, всегда оказывалась более сложной задачей.
Кроме того, самое важное, что следует отметить, - это то, что использование sudo, как показано в приведенном выше примере установки jslint с помощью npm, крайне не рекомендуется; Я совершенно уверен, что пакеты homebrew никогда не должны устанавливаться или взаимодействовать с ними каким-либо образом с использованием суперпользователя. В этом нет необходимости, и это приведет к головной боли с разрешениями файлов!
Кроме того, я рекомендую ESLint вместо jslint и уже много лет не использую jslint.