Когда дело доходит до разработки программного обеспечения, JavaScript повсюду. Его можно использовать для создания приложений, веб-страниц, на серверах или в маленьких роботах 🤖! Как мы можем убедиться, что ваш JavaScript может работать везде, где вы хотите, как мы этого хотим?

Что ж, вот что делает ES Check! Это утилита, которая была написана для обеспечения того, чтобы версия JavaScript, предназначенная для производства, соответствовала ожидаемой версии JavaScript для производства.

Для настройки ES Check требуется 2 шага!

Настроить ES Check можно, установив его и добавив однострочный скрипт.

  1. Добавьте ES Check.
npm install es-check --save-dev

2. Затем добавьте сценарий , как в примере ниже.

"test:es-check": "es-check es5 'dist/*.js'"

Используя приведенный выше пример, можно протестировать JavaScript на соответствие указанной версии JavaScript, запустивnpm run test:es-check в командной строке. Вот и все! 🎉

Почему важно знать, что JavaScript соответствует определенной версии?

Если скомпилированный JavaScript не соответствует поддерживаемой версии JavaScript среды, в которой он находится, он не будет работать. Это плохо! Предоставление веб-страницам, приложениям, службам или роботам неподдерживаемых версий JavaScript может привести к их частичной работе или сбою. 🙀

Как возникают проблемы с несовпадением версий JavaScript?

«Вы должны были проверить свой скомпилированный код, прежде чем он поступит в производство!», - говорите вы? Я делаю! Я сделал! Клянусь!

Проблемы несоответствия версий JavaScript могут возникнуть неожиданно с современной инфраструктурой выпуска кода. В нескольких абзацах, перечисленных ниже, я расскажу вам, как возникает это дерьмовое шоу. Имейте в виду, я драматичен! 🤷🏽‍

Pre-s ** t show необходимая осведомленность

Вот небольшой фрагмент кода подделки package.json с 2 * devDependencies [1], foo и bar.

"devDependencies": {
"foo": "^1.2.4",
"bar": "^6.0.1",
}

Обратите внимание на ^? Хорошо, что ^ сообщает npm, если есть более новая версия foo или bar, установите эту версию. Таким образом, даже несмотря на то, что foo предполагает, что он использует 1.2.4, на самом деле он может использовать 1.2.6.

Вот как происходит это дерьмовое шоу

  • Допустим, есть обновления для foo. foo обновлены некоторые из собственных devDependencies и исправлена ​​ошибка. Затем выпускается foo версия 1.2.7.
  • Я тем временем тестирую часть своего кода. Я используюfoo 1.2.6, и в моей тестовой среде он мне подходит.
  • Все выглядит хорошо, поэтому я отправляю свой код в производство.
  • В процессе создания моего кода для производства моя новая сборка получает foo 1.2.7, который только что был выпущен из-за этого ^.
  • Из-за обновлений foo devDependency, которые были добавлены с исправлением ошибок, его сборка неожиданно изменилась.
  • Изменения сборки 1.2.7 в * патче [2] версии 1.2.7 приводят к тому, что пакет JavaScript для моей производственной сборки компилируется с foo, содержащим версию JavaScript, которой я не ожидал.
  • Среда, в которую я только что отправил код JavaScript, не поддерживает версию JavaScript в foo, которую я ей только что отправил, и тут же гадит.
  • Член команды или, что еще хуже, клиент дал мне понять, что мой код, запущенный в производство, - дерьмо. Я плачу, выясняю ошибку и пытаюсь переложить ответственность foo, но никого не волнует, потому что я тут же, созрел для всех обвинений.
  • Я прикрепляю foo к 1.2.4.
  • Настаиваю на продакшн. Все исправлено - кроме меня. 😿

Глоссарий

  • devDependencies: вспомогательный код JavaScript, написанный кем-то другим, который я использую, чтобы работать быстрее. 💨
  • patch: изменение версии, которое, как ожидается, устранит проблему, но не нарушит существующую функциональность пакета.

Подведение итогов

После того, как мне было достаточно описывать, как происходила каждая ошибка, я решил заново обдумать проблему. Я сделал ES Check, чтобы решить эту проблему. ES Check использует парсер JavaScript Acorns, который проверяет версии JavaScript.

Есть еще несколько функций, которые я добавлю в ES-Check, и мы приветствуем их участие. Я даже смог использовать его, чтобы быстро сообщать об ошибках в проектах с открытым исходным кодом, которые я использую. Используйте ES Check для своих проектов и особенно для проектов с открытым исходным кодом, чтобы защитить себя от секс-шоу и сохранить свои задницы!

Мне очень помогли инженеры Dollar Shave Club, написавшие ES-Check, эту статью, и при жизни - это сложно. Команда Dollar Shave Club потрясающая. Мы верим в продукты, которые создаем. Если вы хотите вступить в клуб, пройдите сюда. Если вы хотите написать с нами код, перейдите сюда. Если вы хотите с нами работать, пройдите сюда. Следуйте за нами на Twitter".

Связанные статьи и плагины

Возможно, ES Check - не ваша чашка чая, потому что вы предпочитаете кофе. Хорошо. Вот несколько статей и проектов, которые меня вдохновляют, а также другие похожие инструменты. ✌🏽