是否有命令或技术可以“具体化”符号链接?(复制文件,使它们不再是符号链接)

是否有命令或技术可以“具体化”符号链接?(复制文件,使它们不再是符号链接)

我在用着勒纳管理多包 monorepo。

它在我的开发环境中运行良好,在那里我可以处理多个相互依赖的包,并且代码可以继续运行。

然而,我在构建此代码进行生产时遇到了一些麻烦。

本质上,问题是,当我编译代码时,我会得到一些 cjs 模块,它们有

   require('some-dependency')

依赖项将作为node_modules文件夹中的符号链接存在,因此可以在我的开发环境中工作。

但是,如果我想要将 node_modules 复制到 docker 镜像上,这将不起作用,因为 Docker 会忽略符号链接。

我想要做的是有一个命令来检查node_modules符号链接,如果它们存在,那么就将所有文件复制为具体文件。

这可能吗?术语是什么?

答案1

您可以将取消引用选项添加到 cp 命令。取消引用将导致 cp 复制链接文件而不是 simlink。

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

或者:

cp -L -r node_modules/* dest_dir/

相关内容