Использование наблюдателя за файлами node.js с JetBrains WebStorm

Я использую Prettier в своих проектах уже несколько недель. Мне это и вправду нравится!

Я использую IDE JetBrains WebStorm, поэтому я выполнил следующие инструкции на сайте проекта Prettier, чтобы настроить средство отслеживания файлов в WebStorm: https://prettier.io/docs/en/webstorm.html#using-file-watcher

Затем, каждый раз, когда я сохраняю файл JavaScript, Prettier автоматически запускает его, и WebStorm показывает мне изменения, как только файл сохраняется Prettier.

Я хочу, чтобы все в моей команде использовали Prettier, но не все используют WebStorm. Некоторые люди используют редакторы, которые сложно настроить с помощью Prettier. Итак, я выполнил эти инструкции на сайте проекта Prettier, чтобы настроить средство отслеживания файлов в качестве сценария npm в моем package.json файле: https://prettier.io/docs/en/watching-files.html

"scripts": {
  "prettier-watch": "onchange '**/*.js' -- prettier --write {{changed}}"
}

Я использовал пакет onchange в качестве наблюдателя за файлами, как это предлагается в документации, и отключил средство наблюдения за файлами в WebStorm, поскольку мне не нужно, чтобы Prettier запускался дважды подряд.

Проблема в том, что когда я сохраняю файл в WebStorm, пакет onchange запускает Prettier правильно, но я не вижу изменений в редакторе, даже когда я выключаюсь, а затем возвращаюсь в окно файла с помощью курсора мыши. Когда я пытаюсь внести новое изменение и снова сохранить, я получаю от WebStorm предупреждающее сообщение «Конфликт файлового кеша»: «В памяти и на диске были внесены изменения. Сохранить изменения в памяти, показать разницу, загрузить изменения файловой системы»

введите описание изображения здесь

Если я выберу «Загрузить изменения файловой системы», сохраненная версия Prettier успешно загрузится. Но видеть это диалоговое окно каждый раз, когда я сохраняю, очень раздражает. Я бы предпочел, чтобы изменения отражались в WebStorm автоматически.

Похоже, что единственный способ - использовать вместо этого встроенный наблюдатель файлов WebStorm, но тогда у меня нет простого способа настроить Prettier для моих коллег, не заставляя их вручную устанавливать свои собственные независимые решения.

Итак, мой вопрос таков: Как я могу использовать общий наблюдатель файлов node.js в качестве сценария npm, который вносит изменения в мои файлы после сохранения и автоматически перезагружает эти изменения в WebStorm без этого диалогового окна?


person MattSidor    schedule 26.01.2018    source источник
comment
Ни за что; каждое внешнее изменение, внесенное в файл, вызовет эту проблему, если вы не настроите внешний инструмент как средство отслеживания файлов в настройках. Диалог нельзя отключить. Связанный билет: youtrack.jetbrains.com/issue/IDEA-42003   -  person lena    schedule 26.01.2018
comment
Хорошо. Похоже, что лучшим вариантом для меня было бы настроить наблюдатель за файлами в качестве дополнительного скрипта для любых разработчиков, которые хотят его использовать, потому что в их редакторе нет встроенного. Я выполнил инструкции по настройке ловушки перед фиксацией, которая по-прежнему будет обеспечивать соблюдение правил Prettier, даже если другие разработчики не используют средство отслеживания файлов. (prettier.io/docs/en/precommit.html)   -  person MattSidor    schedule 26.01.2018


Ответы (2)


Я столкнулся с той же проблемой, и я не сомневаюсь, что диалог действительно раздражает, и вот шаги, которые, наконец, помогли мне решить проблему.

  • Перейдите в Webstorm / Настройки Phpstorm / Настройки.
  • Откройте настройки для наблюдателей за файлами: /Tools/File Watchers/
  • Дважды щелкните программу-наблюдатель за файлами, в данном случае Prettier.
  • Это откроет модальное окно для редактирования наблюдателя. Снимите флажок Auto-save edited files to trigger the watcher

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

person Adil    schedule 08.03.2018

Возможно, вы могли бы попробовать поиграть с настройкой Use "safe write" на панели системных настроек в webstorm

person Daniel Khoroshko    schedule 26.01.2018
comment
Хорошее предложение! Я пробовал это, но, к сожалению, ничего не изменилось. : \ - person MattSidor; 26.01.2018
comment
очень неприятная ситуация - person Daniel Khoroshko; 27.01.2018
comment
обычно, если я редактирую открытый файл в другом редакторе (например, в коде или vim), webstorm сразу загружает изменения после того, как файл был сохранен - person Daniel Khoroshko; 27.01.2018
comment
О, это интересно! На какой ОС вы используете Webstorm? Я использую версию для Mac. - person MattSidor; 28.01.2018
comment
Я определенно заметил такое поведение в linux, когда пробовал другие редакторы. Я полагаю, что webstrom должен полагать, что файл сохранен, чтобы это работало. Поскольку окно предупреждения на вашем скриншоте, в моем случае появляется только тогда, когда происходит следующее: 1) есть несохраненные изменения, которые я внес в файл 2) внешняя программа (например, npm) внесла изменения одновременно (webstrom не загружает их in) 3) Я нажимаю "Сохранить", и появляется предупреждение о различиях - person Daniel Khoroshko; 29.01.2018
comment
Таким образом, кажется (довольно смешно, конечно), что программа onchange изменяет файл до, что webstorm зарегистрирует файл как сохраненный. - person Daniel Khoroshko; 29.01.2018
comment
поэтому я думаю, что добавление '-d 1000', '-w' или '-p 500' могло бы помочь - person Daniel Khoroshko; 29.01.2018