eslint не может справиться с директивой #include preprocessor в javascript

#javascript #atom-editor #eslint #extendscript

#javascript #atom-editor #eslint #extendscript

Вопрос:

Я использую eslint в atom для обработки кода extendscript для Adobe After Effects. Extendscript основан на ECMAScript, поэтому eslint действительно полезен, и я каждый день изучаю совершенство стиля кода JS.

Но есть одна загвоздка. Extendscript использует директивы препроцессора, так что вы можете использовать #include и несколько других вещей. Это приводит к тому, что eslint начинает шипеть и испаряться. Использование //eslint-disable-next-line or /*eslint-disable*/ не работает, потому # что вызывает фатальную ошибку синтаксического анализа, а не нарушает правила как таковые.

Есть ли какой-либо обходной путь? Или мне придется использовать eval() для включения моих библиотек?

Комментарии:

1. Можете ли вы запустить только препроцессор, а затем вызвать eslint по результату?

2. Любой шанс //@include 'path/to/file' сработает?

3. @torazaburo Да, //@include решит проблему, а также //@includepath может заменить #includepath и //@ targetengine может заменить #targetengine . Вы хотите превратить это в ответ?

4. @torazaburo да, спасибо. Превратите это в ответ, и я пометлю его как правильный.

Ответ №1:

Использование eslint в ExtendScript с #include прагматикой стиля можно выполнить с eslint-plugin-skip-adobe-directives помощью плагина processor.

Установите для вашего пакета с:

 $ npm install --save-dev eslint-plugin-skip-adobe-directives
  

Затем добавьте в .eslintrc конфигурацию:

 "plugins": [
  "skip-adobe-directives"
]
  

Другой альтернативой в наши дни было бы написать скрипт как ES6 или что-то более приятное для работы, а затем перенести обратно на ECMAScript 3-го издания, используя extendscriptr , возможно.