So schließen Sie das node_modules -Verzeichnis von der OneDrive-Synchronisierung aus

2169
Ivan Akulov

Ich bin ein Front-End-Entwickler und halte meine Front-End-Projekte in OneDrive. Aufgrund der Art und Weise, wie Node.js Abhängigkeiten organisiert, verfügt jedes Projekt über ein node_modulesVerzeichnis mit Dutzenden Megabytes winziger Dateien, deren Synchronisierung für immer in Anspruch nimmt.

Was kann ich tun, um zu vermeiden, dass node_modulesVerzeichnisse synchronisiert werden, während die Projekte in OneDrive bleiben?

0

3 Antworten auf die Frage

3
Ivan Akulov

Hintergrund

OneDrive erlaubt es nicht, Verzeichnisse anhand des Namens auszuschließen, und das ändert sich nicht so schnell :

[Die repräsentative Antwort von OneDrive auf eine UserVoice-Anforderung:] Derzeit nicht

Es wird empfohlen, Verzeichnisse zu deaktivieren, die in den OneDrive-Einstellungen nicht synchronisiert werden sollen. Dies ist jedoch mit OneDrive Files On-Demand unmöglich geworden .

Lösung

Sie können dieses Problem jedoch lösen, indem Sie die Einstellungen auf der Seite Node.js anpassen. Machen Sie aus dem node_modulesVerzeichnis einen Dateisymbollink zu einem anderen Ort:

# 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" 

Das Wichtigste dabei ist, dass Sie einen Datei- Symlink erstellen, nicht ein Verzeichnis . OneDrive erkennt und synchronisiert diesen Symlink nicht, während Node.js wie beabsichtigt damit arbeitet:

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

Getestet mit OneDrive v17.3.7101.1018 und OneDrive Files On-Demand aktiviert.

Nachteile

Dies ist keine universelle Lösung. Ein Nachteil davon ist, dass Explorer, Powershell und andere Tools nicht node_modulesals Verzeichnis erkannt werden :

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

Node.js-basierte Code-Editoren lesen es jedoch gut:

Screenshot of Visual Studio code with node_modules directory expanded

Das scheint nicht zu funktionieren. Beim Versuch, die App zu starten (unter Verwendung von Typescript), werden Fehler im Modul "Kann nicht gefunden" angezeigt. Pierrick Bignet vor 6 Jahren 0
1
Pierrick Bignet

Fügen Sie für TypenScript-Benutzer da draußen node_modules hinzu, um Probleme bei der Modulauflösung zu vermeiden.

Fügen Sie in tsconfig.json Folgendes hinzu:

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

Edit : Habe noch ein paar Probleme. Ich kann das Projekt aber TS-Knoten und Nodemon Feuer Cannot find moduleFehler erstellen . Nun, das ist dann immer noch ein Problem :(

1
clurd

Ich weiß, das ist eine ältere Frage, aber ich bin auf die gleiche Frage gestoßen. Die Lösung, auf die ich gestoßen bin, war, zuerst einen leeren node_modulesOrdner zu erstellen und diesen dann mit der Cloud zu synchronisieren.

Nachdem der leere Ordner synchronisiert wurde, ging ich in

OneDrive-Einstellungen → Ordner auswählen

und wählte den node_modulesOrdner aus.

Wenn Sie dann npm installim Projektstammordner ausführen, erkennt OneDrive einen Konflikt mit dem Inhalt des Ordners in der Cloud. Es wird nicht synchronisiert.

Bild des Synchronisierungsfehlers

Der Nachteil dieses Ansatzes ist, dass OneDrive Synchronisierungsfehler erzeugt, es schien jedoch für meine Bedürfnisse gut zu funktionieren.