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_modules
pasta 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_modules
links 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/