Это звучит как странная проблема с потерей данных больше, чем npm.
Чтобы исследовать, я предлагаю вам посмотреть дерево папок на наличие изменений и отобразить предупреждение при удалении материала.Тогда, по крайней мере, вы можете сузиться, когда это произойдет.Возможно, дело даже не в разработке, а в повседневном обслуживании инструмента очистки.
Попробуйте встроенный инструмент: запустите «Настройка действий с папками» (из Spotlight) или прямо- щелкните папку с вашими пакетами и выберите Службы> Настройка действий с папками ... , чтобы настроить сценарий для запуска изменений папки на вашем Mac.Если это не сработает при изменениях подкаталогов, боюсь, вам нужно ...
Использовать инструмент командной строки, например fswatch :
$ brew install fswatch
$ fswatch --recursive --timestamp /path/to/modules
Вы можете фильтровать по типам событий (см. fswatch docs ), но обратите внимание, что вам понадобятся и --event Removed
и --event Renamed
, потому что использование Finder Trash на самом деле является командой переименования / перемещения.
Также посмотрите, как использовать fswatch
и другие инструменты CLI для Mac здесь: Есть ли такая команда, как "watch"или" inotifywait "на Mac?
В случае fswatch нет триггера при изменении для пользовательских сценариев.Вам лучше создать сценарий оболочки, который запускается до тех пор, пока вы его не уничтожите, и сконфигурировать fswatch для выхода после 1 события, чтобы сразу обработать вывод:
$WATCHED_PATH="/path/to/node/modules"
while [[ true ]]
do
path=`fswatch --recursive --one-event --event Removed --event Renamed "$WATCHED_PATH"`
applescript="tell app \"System Events\" to display dialog \"Removed $path\""
osascript -e $applescript
done