Не все устанавливаемые зависимости, используются внутри кода как библиотеки. Некоторые нужны для различных утилитарных задач. К подобным пакетам относится eslint. Eslint - это программа для проверки кода на соответствие стандартам кодирования, она используется на Хекслете для проверки ваших решений как в практике к урокам так и в проектах, где вы будете устанавливать ее самостоятельно. Существует два способа ее установки, глобальный и локальный.

Глобальная установка позволяет установить eslint один раз и затем использовать его во всех необходимых пакетах, которые мы разрабатываем:

$ sudo npm install -g eslint
$ cd my-package
# eslint требует указать директорию, в которой нужно искать файлы для проверки. Точка означает текущую директорию.
$ eslint .

Хотя такой способ установки кажется заманчивым, все же, его стоит избегать. Глобальные зависимости не ставятся при первоначальной настройке пакета. То есть если мы выполним команду npm install в свежесклонированном репозитории, eslint не поставится, а значит придется устанавливать его отдельно. И это придется делать не только нам, но и всем кто участвует в разработке данного пакета. К тому же возможны проблемы с версиями. Если у кого-то стоит eslint старой версии, это может помешать нормальной проверке, и в такой ситуации не будет никакой возможности обновить версию пакета автоматически, это произойдет только если разработчик сам вспомнит о том, что пакет стоит обновить.

Поэтому наш выбор - локальная установка. Подобные пакеты всегда используются только при разработке, поэтому не забываем указывать флаг --save-dev во время локальной установки:

# В корне проекта
$ npm install --save-dev eslint

Но здесь нас ожидает сюрприз. Если попробовать его запустить как обычно, то bash скажет что команда не найдена (если, конечно, вы не установили его глобально ранее). Такое поведение вполне ожидаемо. Вспомните, курс по основам командной строки и урок посвященный запуску программ из консоли. Исполняемый файл программы ищется по путям перечисленным в переменной окружения $PATH. В случае локальной установки, пакет устанавливается в директорию node_modules и только туда, никакие файлы больше никуда не добавляются. Другими словами bash не может узнать о том, что вы установили какую-то программу.

Из этой ситуации есть два выхода: правильный и неправильный. Неправильный - запустить исполняемый файл указав прямой путь. Для eslint он будет таким:

$ ./node_modules/eslint/bin/eslint.js .

Проблема такого подхода в том, что идет завязка на конкретный путь внутри самого пакета. Если разработчики поменяют его или банально переименуют файл eslint.js, то все запуски сломаются. Поэтому нужно использовать правильный способ:

$ npx eslint --init # инициализация линтера, во время которой создается конфигурационный файл
$ npx eslint . # запуск проверки в текущей и всех вложенных директориях

npx - специальная программа, которая автоматически устанавливается вместе с утилитой npm (убедитесь что вы ставите одну из последних версий Node.js). Она работает крайне просто, после нее указывается исполняемый файл утилиты, которая установлена локально, в директорию node_modules текущего проекта.

Для продолжения нужно перейти в курс и вступить в него.