Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос нашим менторам. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете

NPX

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

Одной из таких программ является prettier. Это очень популярный инструмент, автоматически форматирующий код по общепринятым правилам. С его помощью команды придерживаются единого стиля написания без необходимости запоминать эти правила. Посмотреть как работает prettier можно в его песочнице в браузере.

Пример кода до обработки:

const fn   = (a, b) => {

     const c = a + b; return c;
   }

Этот же код после автоматического форматирования:

const fn = (a, b) => {
  const c = a + b;
  return c;
};

Так как prettier это инструмент для написания кода, то он должен устанавливаться как dev зависимость:

$ npm install --save-dev prettier

Следующим шагом его нужно запустить как обычную консольную утилиту. По документации prettier видно что имя утилиты (имя исполняемого файла) совпадает с именем пакета. Попробуем выполнить запуск:

# Флаг --write означает что мы разрешаем утилите перезаписать файлы проекта
hexlet-js$ prettier --write .

Если вы до этого не устанавливали prettier глобально, то запуск кода выше приведет к ошибке: command not found: prettier. Почему так происходит?

В отличии от глобальной установки, обычная (локальная) установка помещает содержимое пакета в директорию node_modules текущего проекта. Командные оболочки, например Bash, при запуске утилит ищут их в специальных системных директориях, но они ничего не знают про утилиты, установленны в другие места системы, например, в наш проект. Поэтому для запуска нужно указывать полный путь до файла программы.

Программы устанавливающиеся локально, хранят свои исполняемые файлы в директории node_modules/.bin. Поэтому запуск нужно выполнять там:

hexlet-js$ node_modules/.bin/prettier --write .

У такого запуска есть два неудобства:

  1. Слишком долго набирать
  2. Идет завязка на конкретную структуру директорий, которая может поменяться

Для упрощения запуска Node.js поставляется вместе с еще одной утилитой – npx. Она помогает запускать программы установленные локально без необходимости указывать полный путь до исполняемого файла:

hexlet-js$ npx prettier --write .

npx анализирует директорию node_modules/.bin и если находит там нужный файл, то подставляет его. Если файла с нужным именем нет, то npx пытается найти пакет с таким именем и установить.

Как вы увидите дальше, в реальных проектах на JavaScript пакетов-утилит достаточно много. Вот лишь некоторые популярные: Babel, Webpack, Eslint, Gulp. Все это часть экосистемы, с которой сталкиваются все веб разработчики на JavaScript. И для запуска всех этих утилит нужен npx.

Глобальная установка vs Локальная

Prettier может установить и глобально и локально. В обоих случаях он будет работать. Но лучше всегда подобные пакеты ставить локально. Почему? Локальные зависимости общие. Любой кто разрабатывает наш проект, автоматически получает все зависимости. Если же prettier установлен глобально, то каждому разработчику придется самостоятельно заботится о его установке. Вторая проблема связана с версией. У разных разработчиков в конце концов могут оказаться (и окажутся) разные версии prettier, которые могут работать по разному, что будет приводить к разным результатам или даже ошибкам.

Самостоятельная работа

  1. Добавьте prettier в проект hexlet-js
  2. Запустите его через npx, посмотрите какие файлы были изменены
  3. Подключите prettier к своему редактору. В сети довольно много подобных инструкций для всех редакторов
  4. Добавьте все изменения на гитхаб

<span class="translation_missing" title="translation missing: ru.web.courses.lessons.mentors.mentor_avatars">Mentor Avatars</span>

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят менторы из команды Хекслета или другие студенты.

Зарегистрироваться

или войти в аккаунт

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 115 курсов, 2000+ часов теории
  • 800 практических заданий в браузере
  • 250 000 студентов

Нажимая кнопку «Зарегистрироваться», вы даёте своё согласие на обработку персональных данных в соответствии с «Политикой конфиденциальности» и соглашаетесь с «Условиями оказания услуг». Защита от спама reCAPTCHA «Конфиденциальность» и «Условия использования».

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Rambler
Логотип компании Bookmate
Логотип компании Botmother

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Нажимая кнопку «Зарегистрироваться», вы даёте своё согласие на обработку персональных данных в соответствии с «Политикой конфиденциальности» и соглашаетесь с «Условиями оказания услуг». Защита от спама reCAPTCHA «Конфиденциальность» и «Условия использования».