3 votes

Existe-t-il une commande ou une technique pour "concrétiser" les liens symboliques ? (Copier les fichiers pour qu'ils ne soient plus des liens symboliques)

J'utilise lerna pour gérer un multipackage monorepo.

Il fonctionne bien dans mon environnement de développement, où je peux travailler sur plusieurs paquets qui dépendent les uns des autres et le code continue de fonctionner.

Cependant, je rencontre des difficultés à mettre en place ce code pour la production.

En gros, le problème est que lorsque je compile mon code, j'obtiens des modules cjs qui ont

   require('some-dependency')

La dépendance existera sous la forme d'un lien symbolique dans le fichier node_modules et fonctionne ainsi dans mon environnement de développement.

Cependant, si je veux copier node_modules sur une image Docker, cela ne fonctionnera pas, car Docker ignore les liens symboliques.

Ce que je voudrais faire, c'est avoir une commande qui inspecte node_modules pour les liens symboliques, et s'ils existent, il suffit de copier tous les fichiers pour en faire des fichiers concrets.

Est-ce possible ? Quelle est la terminologie ?

7voto

Eric Mintz Points 2436

Vous pouvez ajouter l'option de déréférencement à la commande cp. Le déréférencement fera que cp copiera le fichier lié plutôt que le simlink.

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

Et alternativement :

cp -L -r node_modules/* dest_dir/

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X