Я більш обережний, ніж зазвичай, тому що мене збентежила поведінка 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для будь-яких програм, з якими я маю проблеми, і це повинно бути досить добре для моїх цілей.
EDIT : Я оновлюю це в 2019 році, оскільки це старе питання популярне, але тепер застаріло як з точки зору мого особистого робочого процесу, так і з точки зору того, як найкраще піти про встановлення вузла та управління його різними залежностями.
Мій особистий робочий процес тепер використовувати інсталятор, отриманий від nodejs.org, для встановлення вузла в системах. Я фактично довіряю цьому більше, ніж самому пакунку домашньої програми, тому що він найкраще знає, як керувати файлами. Якщо ви хочете змінити свій системний вузол з 8.10 на 10.15, будь то на Mac чи Windows, просто завантажте інсталятор з nodejs.org на 10.15 для вашої ОС. Спроба оновити вузол, встановлений через homebrew, на моєму досвіді завжди виявилася більш складним підходом.
Крім того, найголовніше, що слід зазначити, це те, що використання судо, як показано в моїй npm-установці прикладу jslint вище, дуже обережно; Я цілком впевнений, що пакунки з домашньою мовою ніколи не повинні встановлюватись і не взаємодіяти з ними за допомогою суперпользователя. Це не повинно бути необхідним, і це призведе до подачі дозволу на головні болі!
Крім того, я рекомендую ESLint за jslint, і не використовував jslint протягом багатьох років.