Мне может потребоваться вмешательство, потому что написание codemods и плагинов для транспиляции вызывает привыкание. Codemods - это скрипты, которые преобразуют исходный код, преобразовывая его в абстрактное синтаксическое дерево (AST). Это просто техническая болтовня о том, как обычные инструменты анализируют и анализируют исходный код. Babel, ESLint и даже GraphQL - все они полагаются на AST для выполнения своей работы.

Если вам интересно, вот как выглядит AST:

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

  • Переименовать функции, переменные
  • Обновите старые приложения и библиотеки
  • Реорганизуйте большие объемы кода с помощью детерминированных преобразований
  • Применять передовой опыт

Перед тем, как я начал создавать код, я написал несколько правил ESLint. Что я вынес из написания плагинов, так это то, что это отличный способ постепенных изменений. Я поговорил с несколькими коллегами, которые, как я знал, внесли свой вклад в экосистему, и поинтересовался, писать ли все в плагине или в преобразовании. После этого я попробовал и полюбил, насколько легко использовать AST с сегодняшними инструментами.

Начало работы

JSCodeShift - клиентская утилита для запуска codemods. Это похоже на jQuery для работы с абстрактными синтаксическими деревьями.

ESLint упрощает написание правил. Это необходимость для любого разработчика JavaScript и хорошая основа для эргономики разработчика.

Полтора недели с тех пор, как я начал писать эти плагины, и я должен сказать, как замечательно их использовать. Это делает работу с крупными рефакторами не такой уж утомительной. Если вы вносите одни и те же повторяющиеся изменения - использование codemod может быстро решить проблему. Однако, если вы вносите постепенные изменения или применяете передовые методы, лучше вместо этого создать правило ESLint. И codemods, и правила - это молоток и гвоздь любого инструментария разработчика, и если вы еще не имели удовольствия написать свой собственный, попробуйте. Если вы выполняете рефакторинг большого количества кода, напишите код-мод, который сделает черную работу. Если вы делаете небольшие инкрементные обновления, то правило ESLint можно легко обновить с предупреждения до ошибки, когда старые методы устарели.

Все еще заинтересован? Вот аккуратный список, который я нашел, в котором есть больше о кодовой модификации:

Https://github.com/sejoker/awesome-jscodeshift