Gibt es einen Befehl oder eine Technik, um symbolische Links zu „konkretisieren“? (Kopieren Sie die Dateien, sodass sie keine symbolischen Links mehr sind.)

Gibt es einen Befehl oder eine Technik, um symbolische Links zu „konkretisieren“? (Kopieren Sie die Dateien, sodass sie keine symbolischen Links mehr sind.)

Ich benutzelernaum ein Multipaket-Monorepo zu verwalten.

Es funktioniert gut in meiner Entwicklungsumgebung, wo ich an mehreren Paketen arbeiten kann, die voneinander abhängig sind, und der Code trotzdem weiter funktioniert.

Ich habe jedoch einige Probleme, diesen Code für die Produktion zu erstellen.

Das Problem besteht im Wesentlichen darin, dass ich beim Kompilieren meines Codes einige CJS-Module erhalte, die

   require('some-dependency')

Die Abhängigkeit wird als symbolischer Link im node_modulesOrdner vorhanden sein und funktioniert daher in meiner Entwicklungsumgebung.

Wenn ich jedoch node_modules in ein Docker-Image kopieren möchte, funktioniert dies nicht, da Docker symbolische Links einfach ignoriert.

Ich hätte gern einen Befehl, der node_modulesnach symbolischen Links sucht und, falls vorhanden, einfach alle Dateien in konkrete Dateien kopiert.

Ist das möglich? Wie lautet die Terminologie?

Antwort1

Sie können dem cp-Befehl die Option „Dereferenzierung“ hinzufügen. Durch die Dereferenzierung kopiert cp die verknüpfte Datei und nicht den Simlink.

cp --dereference --recursive node_modules/* dest_dir/

Und alternativ:

cp -L -r node_modules/* dest_dir/

verwandte Informationen