Автоматизируйте обнаружение ошибок JS с помощью ES Lint
ESLint — всего 6,6 млн загрузок в неделю — это инструмент для проверки качества кода Javascript, который анализирует ваш код, не выполняя его. Это предупредит вас об ошибках и выиграет вам много времени.
ESLint — это инструмент для выявления шаблонов, обнаруженных в коде ECMAScript/JavaScript, и составления отчетов о них. Во многом он похож на JSLint и JSHint за несколькими исключениями: они поставляются с предопределенным для вас набором правил. ESlint обладает гибкостью, поэтому вы можете настроить его.
Простой пример того, как это может вам помочь?
Итак, давайте рассмотрим простой пример:
function(a,b){
//do something with the variables
return a * d;
}
Эта ошибка очевидна, когда у вас небольшой объем кода.
Но если у вас большая сумма, это будет очень кстати.
Запустив eslint в свой код, вы получите следующий вывод:
1:10 error 'test' is defined but never used no-unused-vars
1:17 error 'b' is defined but never used no-unused-vars
2:1 error Expected indentation of 1 tab but found 4 spaces indent
3:1 error Expected indentation of 1 tab but found 4 spaces indent
3:16 error 'd' is not defined no-undef
Без ES lint у вас могут быть нежелательные ошибки, которые могут сделать ваших клиентов недовольными.
Так что часть процесса автоматизации качества кода и вместе с автоматическими тестами вы можете настроить eslint, чтобы улучшить качество кода.
Это исправит нежелательные ошибки, и ваши клиенты будут счастливее.
Вы можете видеть в приведенном выше коде, что он уже обнаружил некоторые ошибки, и у меня уже есть настроенная конфигурация eslint.
Давайте сделаем это для вас сейчас!
Если вы хотите включить ESLint как часть системы сборки вашего проекта, мы рекомендуем установить его локально. Вы можете сделать это с помощью npm:
Установка и использование
Требования: Node.js (>=6.14), npm версии 3+.
Чуть-чуть по теме: В Приложение PRO версии вы также можете настроить все для легкой отладки тестов в VSCode. Вы даже можете получить весь вышеуказанный код бесплатно и использовать его самостоятельно. Лицензия MIT.
Есть два способа установить ESLint: глобально и локально.
Локальная установка и использование
$ npm установить eslint —save-dev
Затем вы должны настроить файл конфигурации:
$ ./node_modules/.bin/eslint —init
После этого вы можете запустить ESLint в корневом каталоге вашего проекта следующим образом:
$ ./node_modules/.bin/eslint yourfile.js
Вместо перехода к ./node_modules/.bin/ вы также можете использовать npx для запуска eslint:
$ npx eslint
Примечание. Если ESLint не был установлен вручную (через npm), npx установит eslint во временный каталог и выполнит его.
Любые подключаемые модули или общедоступные конфигурации, которые вы используете, также должны быть установлены локально для работы с локально установленным ESLint.
Глобальная установка и использование
Если вы хотите сделать ESLint доступным для инструментов, работающих во всех ваших проектах, мы рекомендуем установить ESLint глобально. Вы можете сделать это с помощью npm:
$ npm установить -g eslint
Затем вы должны настроить файл конфигурации:
$ eslint —init
После этого вы можете запустить ESLint для любого файла или каталога следующим образом:
$ eslint yourfile.js
Любые подключаемые модули или общие конфигурации, которые вы используете, также должны быть установлены глобально, чтобы работать с глобально установленным ESLint.
Таким образом, ESLint находит ошибки, применяет правила, а также может автоматически исправлять проблемы.
Запустить команду fix очень просто:
./node_modules/.bin/eslint --fix --ext .js test.js
/appseed/starter-express/test.js
1:10 error 'test' is defined but never used no-unused-vars
1:17 error 'b' is defined but never used no-unused-vars
3:13 error 'd' is not defined no-undef
После выполнения команды fix она возвращает только те ошибки, которые требуют вашего внимания.
Понятно, что мы никогда не используем тестовую функцию в нашем случае. И похоже, я сделал опечатку при использовании переменной d вместо b.
Давайте исправим это и посмотрим на результат. Код сейчас выглядит так:
function test(a,b){
//do something with the variables
return a * b;
}
test(1,2);
И вывод для eslint приведен ниже:
node_modules/eslint/bin/eslint.js test.js
➜ starter-express git:(feat/sequelize-orm-register) ✗
Одной из лучших функций узла, которую вы можете использовать с npm, являются скрипты пакетов.
Таким образом, в вашем package.json вы можете установить некоторые команды, чтобы легко запускать eslint из вашего проекта или вызывать его из вашего travis ci.
"scripts": {
"start": "node index.js",
"dev": "nodemon start",
"lint": "./node_modules/.bin/eslint --ext .js config/ models/ routes/ seeders/ index.js",
"lint-fix": "./node_modules/.bin/eslint --fix --ext .js config/ models/ routes/ seeders/ index.js",
},
Это полезно, потому что теперь вы можете просто запустить простую команду для тестирования и исправления небольших ошибок.
npm run lint
npm run lint-fix
PS: эта статья была впервые опубликована на блог appseed.us.