Есть ли команда или метод для «конкретизации» символических ссылок? (Скопировать файлы, чтобы они больше не были символическими ссылками)

Есть ли команда или метод для «конкретизации» символических ссылок? (Скопировать файлы, чтобы они больше не были символическими ссылками)

я используюлернадля управления многопакетным монорепозиторием.

Это хорошо работает в моей среде разработки, где я могу работать над несколькими пакетами, которые зависят друг от друга, и код продолжает работать.

Однако у меня возникли некоторые проблемы при создании этого кода для производства.

По сути, проблема в том, что когда я компилирую свой код, я получаю некоторые модули cjs, которые имеют

   require('some-dependency')

Зависимость будет существовать в виде символической ссылки в node_modulesпапке и поэтому работает в моей среде разработки.

Однако если я хочу скопировать node_modules в образ Docker, это не сработает, поскольку Docker просто игнорирует символические ссылки.

Мне бы хотелось иметь команду, которая проверяет node_modulesналичие символических ссылок и, если они существуют, просто копирует все файлы в конкретные файлы.

Возможно ли это? Какова терминология?

решение1

Вы можете добавить опцию разыменования к команде cp. Разыменование заставит cp скопировать связанный файл, а не симлинк.

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

И альтернативно:

cp -L -r node_modules/* dest_dir/

Связанный контент