Я більш обережний, ніж зазвичай, тому що мене збентежила поведінка 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 протягом багатьох років.