Existe um comando ou técnica para 'concretizar' links simbólicos? (Copie os arquivos para que não sejam mais um link simbólico)

Existe um comando ou técnica para 'concretizar' links simbólicos? (Copie os arquivos para que não sejam mais um link simbólico)

estou a usarlernapara gerenciar um monorepo de vários pacotes.

Funciona bem no meu ambiente de desenvolvimento, onde posso trabalhar em vários pacotes que dependem uns dos outros e o código continua funcionando.

No entanto, estou tendo problemas para criar esse código para produção.

Essencialmente, o problema é que, quando eu compilar meu código, receberei alguns módulos cjs que possuem

   require('some-dependency')

A dependência existirá como um link simbólico na node_modulespasta e, portanto, funciona no meu ambiente de desenvolvimento.

No entanto, se eu quiser copiar node_modules para uma imagem do Docker, isso não funcionará, pois o Docker apenas ignora os links simbólicos.

O que eu gostaria de fazer é ter um comando que inspecione node_moduleslinks simbólicos e, se eles existirem, basta copiar todos os arquivos para serem arquivos concretos.

Isso é possível? Qual é a terminologia?

Responder1

Você pode adicionar a opção de desreferência ao comando cp. A desreferência fará com que o cp copie o arquivo vinculado em vez do simlink.

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

E alternativamente:

cp -L -r node_modules/* dest_dir/

informação relacionada