Как исключить каталог node_modules из синхронизации OneDrive?

2079
Ivan Akulov

Я являюсь разработчиком внешнего интерфейса и храню свои внешние проекты в OneDrive. Из-за того, как Node.js организует зависимости, каждый проект имеет node_modulesкаталог с десятками мегабайт крошечных файлов, для синхронизации которых требуется вечность.

Что я могу сделать, чтобы избежать синхронизации node_modulesкаталогов при сохранении проектов в OneDrive?

0

3 ответа на вопрос

3
Ivan Akulov

Фон

OneDrive не позволяет исключать каталоги по имени, и это скоро не изменится :

[Представительский ответ OneDrive на запрос UserVoice:] Не сейчас

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

Решение

Тем не менее, вы можете решить эту проблему путем настройки вещей на стороне Node.js. Сделайте node_modulesкаталог символической ссылкой на файл в другом месте:

# Open any place outside OneDrive cd D:\node_dependencies # Make a symlink target. After linking, node_modules for your project  # will be installed here mkdir node_modules_for_my_project  # Open the project directory cd <the project directory> # Make a *file* link from node_modules to the newly created directory. # You will need to delete existing node_modules directory if it exists cmd /C "mklink node_modules D:\node_dependencies\node_modules_for_my_project" 

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

A screenshot showing that npm install and Node.js’s require work as intended

Протестировано с OneDrive v17.3.7101.1018 и файлами OneDrive по требованию.

Недостатки

Это не универсальное решение. Недостатком этого является то, что Explorer, Powershell и другие инструменты не будут распознаваться node_modulesкак каталог:

A screenshot showing that Explorer shows node_modules as an unrecognized file with a shortcut icon

Тем не менее, редакторы кода на основе Node.js будут читать это очень хорошо:

Screenshot of Visual Studio code with node_modules directory expanded

Это не похоже на работу. Я получаю сообщение об ошибке "Не удается найти модуль" при попытке запустить приложение (используя Typescript). Pierrick Bignet 6 лет назад 0
1
Pierrick Bignet

Для пользователей Typescript добавьте node_modules в свой путь, чтобы избежать проблем с разрешением модулей.

В tsconfig.json добавьте:

"paths": { [... some paths ...], "*": [ "node_modules/*" ] } 

Изменить : все еще есть некоторые проблемы. Я могу построить проект, но с Cannot find moduleошибками ts-node и nodemon . Ну, это все еще проблема тогда :(

1
clurd

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

После синхронизации пустой папки я вошел в

Настройки OneDrive → Выбрать папки

и отменил выбор node_modulesпапки.

Затем при запуске npm installв корневой папке проекта OneDrive обнаружит конфликт с содержимым папки в облаке. Это не будет синхронизироваться.

Изображение ошибки синхронизации

Недостатком этого подхода является то, что OneDrive выдает ошибки синхронизации, но, похоже, он хорошо работает для моих нужд.