eslint-config-airbnb-base
This package provides Airbnb’s base JS .eslintrc (without React plugins) as an extensible shared config.
Usage
We export two ESLint configurations for your usage.
eslint-config-airbnb-base
Our default export contains all of our ESLint rules, including ECMAScript 6+. It requires eslint and eslint-plugin-import .
- Install the correct versions of each package, which are listed by the command:
npm info "eslint-config-airbnb-base@latest" peerDependencies
If using npm 5+, use this shortcut
npx install-peerdeps --dev eslint-config-airbnb-base
If using yarn, you can also use the shortcut described above if you have npm 5+ installed on your machine, as the command will detect that you are using yarn and will act accordingly. Otherwise, run npm info «eslint-config-airbnb-base@latest» peerDependencies to list the peer dependencies and versions, then run yarn add —dev @ for each listed peer dependency.
( export PKG=eslint-config-airbnb-base; npm info "$PKG@latest" peerDependencies --json | command sed 's/[\,]//g ; s/: /@/g' | xargs npm install --save-dev "$PKG@latest" )
Which produces and runs a command like:
npm install --save-dev eslint-config-airbnb-base eslint@^#.#.# eslint-plugin-import@^#.#.#
npm install -g install-peerdeps install-peerdeps --dev eslint-config-airbnb-base
The cli will produce and run a command like:
npm install --save-dev eslint-config-airbnb-base eslint@^#.#.# eslint-plugin-import@^#.#.#
- Add «extends»: «airbnb-base» to your .eslintrc.
eslint-config-airbnb-base/legacy
Lints ES5 and below. Requires eslint and eslint-plugin-import .
- Install the correct versions of each package, which are listed by the command:
npm info "eslint-config-airbnb-base@latest" peerDependencies
Linux/OSX users can run
( export PKG=eslint-config-airbnb-base; npm info "$PKG" peerDependencies --json | command sed 's/[\,]//g ; s/: /@/g' | xargs npm install --save-dev "$PKG" )
Which produces and runs a command like:
npm install --save-dev eslint-config-airbnb-base eslint@^#.#.# eslint-plugin-import@^#.#.#
- Add «extends»: «airbnb-base/legacy» to your .eslintrc
eslint-config-airbnb-base/whitespace
This entry point only errors on whitespace rules and sets all other rules to warnings. View the list of whitespace rules here.
Improving this config
Consider adding test cases if you’re making complicated rules changes, like anything involving regexes. Perhaps in a distant future, we could use literate programming to structure our README as test cases for our .eslintrc?
You can run tests with npm test .
You can make sure this module lints with itself using npm run lint .
Вопрос №67383 от пользователя Анатолий Горстка в проекте «Игры разума»
ESLint couldn’t find the config «airbnb-base» to extend from. Please check that the name of the config is correct.
The config «airbnb-base» was referenced from the config file in «/home/runner/work/backend-project-lvl1/backend-project-lvl1/.eslintrc.yml».
If you still have problems, please stop by https://eslint.org/chat/help to chat with the team.
make: *** [Makefile:8: lint] Error 2 Error: Process completed with exit code 2.
Добрый день. Скорее всего, в eslint.yml отсутствует запуск установки config-airbnb-base :
run: npm install —save-dev eslint-config-airbnb-base
Добрый день! Все равно не понимаю что делать. Я либо в теории где-то информацию пропустил или где нужно было это прочитать/изучить? Я наугад сейчас что-то делаю. Запустил npm install —save-dev eslint-config-airbnb-base. Ничего не изменилось. Записал run: npm install —save-dev eslint-config-airbnb-base в eslint.yml и запушил. Вылезла новая ошибка — Error: ESLint configuration in .eslintrc.yml is invalid: — Unexpected top-level property «run». Гадаю что еще можно сделать.
Ой не, наугад — это последнее дело в unix-системе) Можно натыкать так, что придется всё сносить и заново ставить. Посмотрите файл eslint.yml, он лежит здесь: frontend-project-lvl1/.github/workflows/. У меня он выглядит так:
Спасибо. Пытаюсь разобраться. Наугад сам не хочу, но где взять информацию? по заданию — Настройте Github Actions так, чтобы он запускал make lint. По информации из курса по непрерывной интеграции поздал файл make-lint-check.yml в папке frontend-project-lvl1/.github/workflows/. Содержимое: name: make lint check on: push jobs: build: runs-on: ubuntu-latest steps: — uses: actions/checkout@v2 — run: make lint Надо было создать именно файл eslint.yml в этой папке? Содержимое этого файла я получается неправильно сделал? Я, конечно, могу сделать копипаст, запушить и посмотреть что получится. Но хочется понять, если понадобится сделать еще раз, как разобраться. Спасибо за помощь =)
Нет, создавать новый не надо. У Вас он называется make-lint-check.yml Сам искал инфу, когда столкнулся с такой же ошибкой. Возможно проблема связана с тем, что eslint не установлен глобально.
Запустил установку глобально. Но коммитить нечего после окончания. Или надо заново теперь —init делать?
Финально проблема решена. Спасибо Павлу за помощь. Надо было в файл хххххх.yml в директории .github/workflows/ вставить строчку — run: npm install —save-dev eslint-config-airbnb-base перед — run: make lint. Задание сделал, но без понимания откуда я должен был узнать, что нужно было вставить именно эту информацию, именно в это место, в этот файл.
Добрый день, Анатолий! Здорово, что удалось разобраться в итоге. Напомню, что при возникновении каких-то сомнений вы всегда можете подглядывать в наш эталонный репозиторий, там есть пример воркфлоу файла. Здесь мы выполняем установку всех зависимостей проекта перед запуском проверки. А сами зависимости прописаны в файле package.json
В эталонном репозитории не нашел строчку — run: npm install —save-dev eslint-config-airbnb-base. Из чего нужно было понять, что она нужна?
Анатолий, все зависимости, у нас прописаны в файле package.json , в том числе и эта зависимость. Вот она. Затем в файле воркфлоу мы выполняем установку всех зависимостей проекта. Фактически выполняется команда npm ci , которая устанавливает все зависимости проекта, в том числе и eslint-config-airbnb-base. Отдельно устанавливать её нет необходимости. Проверьте, возможно она была не указана в package.json и поэтому её приходилось устанавливать отдельно
Я все не могу понять, откуда я должен был узнать, что эту зависимость надо было довавить в package.json и выполнить npm ci для установки зависимостей? Что я упустил? Надо было скопировать содержание package.json из эталонного и сделать npm ci? Хочу разобраться, тк понимаю, что легко сделаю эту ошибку еще раз.
Эта зависимость должна автоматически устанавливаться и добавляться в package.json во время инициализации линтера. Настройку линтера мы рассматривали в этом уроке. Про команду make install для установки зависимостей мы говорили на втором шаге проекта. Также рекомендую повторить материал урока про установку зависимостей
Держи свой код чистым с помощью ESLint
Основы самого популярного JavaScript линтера, который позволяет проводить анализ качества твоего кода.
Tools · 14.02.2019 · читать 2 мин · Автор: Alexey Myzgin
Что такое ESLint
ESLint — это линтер для языка программирования JavaScript, написанный на Node.js.
Он чрезвычайно полезен, потому что JavaScript, будучи интерпретируемым языком, не имеет этапа компиляции и многие ошибки могут быть обнаружены только во время выполнения.
ESLint поможет тебе:
- найти существующие ошибки в коде;
- избежать глупых ошибок;
- избежать бесконечные циклы в условиях цикла for;
- убедится, что все методы getter возвращают что-то;
- не разрешить выражения console.log (и аналогичные);
- проверить наличие дубликатов cases в switch ;
- проверить недоступный код;
- проверить правильность JSDoc;
и многое другое! Полный список доступен по ссылке.
Растущая популярность Prettier, как средства форматирования кода, сделала часть стилей ESLint устаревшей, но данный линтер всё еще очень полезен для выявления ошибок в коде.
ESLint очень гибок и настраиваемый, и ты можешь выбрать, какие правила использовать, или какой стиль применять. Многие из доступных правил отключены, но их можно включить в файле конфигурации .eslintrc , который может быть глобальным или локальным для твоего проекта.
Установка ESLint глобально
npm install -g eslint # создает конфигурацционный файл `.eslintrc` eslint --init # запускает ESLint проверку указанного файла eslint yourfile.js
Установка ESLint локально
npm install eslint --save-dev # создает конфигурацционный файл `.eslintrc` ./node_modules/.bin/eslint --init # запускает ESLint проверку указанного файла ./node_modules/.bin/eslint yourfile.js
Установка стилей Airbnb
Одной из самых популярных настроек для линтера является использование Airbnb JavaScript Style.
yarn add --dev eslint-config-airbnb
npm install --save-dev eslint-config-airbnb
что бы установить пакет конфигурации Airbnb и добавь в свой .eslintrc файл который находится в корне твоего проекта:
// .eslintrc "extends": "airbnb" >
Установка стилей для React
Подключить линтер для React можно легко с помощью плагина React:
yarn add --dev eslint-plugin-react
npm install --save-dev eslint-plugin-react
и добавив в свой файл .eslintrc :
// .eslintrc "extends": "airbnb", "plugins": ["react"], "parserOptions": "ecmaFeatures": "jsx": true > > >
Используй конкретные версии EcmaScript
ECMAScript меняет свою версию каждый год.
По умолчанию установлена 5-я версия, что означает стандарт до 2015 года.
Что бы включить ES6 (или выше), пропиши это в .eslintrc
// .eslintrc "parserOptions": "ecmaVersion": 6 > >
Подробное руководство по правилам можно найти на официальном сайте https://eslint.org/docs/user-guide/configuring.
Отключение правил где это необходимо
Иногда тебе может понадобится отключить правила в конкретном месте, это можно сделать так:
/* eslint-disable */ alert("test"); /* eslint-enable */
alert("test"); // eslint-disable-line
также можно отключить одно или несколько конкретных правил для нескольких строк:
/* eslint-disable no-alert, no-console */ alert("test"); console.log("test"); /* eslint-enable no-alert, no-console */
или для одной строки:
alert("test"); // eslint-disable-line no-alert, quotes, semi
Вопрос №58570 от пользователя Екатерина в проекте «Игры разума»
Здравствуйте! C чем может быть связана такая проблема при установке eslint-config-airbnb-base как dev зависимость в проект? При попытке установить глобально возникает та же самая проблема.При этом eslint и eslint-plugin-import установились без проблем.
C чем может быть связана такая проблема при установке eslint-config-airbnb-base как dev зависимость в проект?
Дело в том что версия eslint 8 вышла совсем недавно, а пакет eslint-config-airbnb-base ещё не успел обновится и требует версию не выше 7. Это видно в выводе npm ERR! peer eslint@»^5.16.0 || ^6.8.0 || ^7.2.0″ from eslint-config-airbnb-base@14.2.1 . Поэтому для совместимости версий нужно использовать eslint версии 7.х. Вы можете вначале удалить из проекта установленный eslint, а потом выполнить установку сразу двух зависимостей npm install —save-dev eslint eslint-config-airbnb-base . Таким образом будут установлены версии которые удовлетворяют требованиям обоих пакетов.