シンボリックリンクを「具体化」するコマンドやテクニックはありますか? (ファイルをコピーしてシンボリックリンクではなくなるようにします)

シンボリックリンクを「具体化」するコマンドやテクニックはありますか? (ファイルをコピーしてシンボリックリンクではなくなるようにします)

私は使用していますレルナマルチパッケージのモノレポを管理します。

これは私の開発環境ではうまく機能し、相互に依存する複数のパッケージで作業してもコードは動作し続けます。

しかし、このコードを本番環境向けにビルドする際に問題が発生しています。

本質的には、問題は、コードをコンパイルすると、いくつかの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/

関連情報