我在用着勒纳管理多包 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/