Почему сборка подмодуля git зависит от модулей узлов родительского проекта?

#node.js #git #build #git-submodules

Вопрос:

https://github.com/hyperbotauthor/chessopsnpmts

В этом проекте есть подмодуль git, который, в свою очередь, строится в соответствии со своим собственным package.json сценарием сборки.

 [submodule "chessground"]
    path = chessground
    url = https://github.com/ornicar/chessground
 

Однако, если я запускаю тот же сценарий сборки, когда импортирую его в свой проект в качестве подмодуля git, то сборка завершается ошибкой с загадочными сообщениями об ошибках о недостающих модулях, которые на самом деле не отсутствуют.

Я подозревал, что это как-то связано с модулями узлов родительского проекта, поэтому я переименовал папку модулей узлов родительского проекта на время сборки, и это удалось. Итак, теперь у меня есть сценарий сборки, который переименовывает, создает, а затем восстанавливает исходное имя папки модулей родительского узла.

 "buildcg": "mv node_modules node_modules_ignore ; cd chessground amp;amp; yarn amp;amp; yarn dist amp;amp; cd .. ; mkdir vendor ; cp chessground/dist/chessground.js vendor ; printf 'nn// es exportnnexport { Chessground }n' >> vendor/chessground.js ; mv node_modules_ignore node_modules"
 

Зависит ли сборка, находящаяся в папке модуля git, от установленных модулей узла родительского проекта ( каждый модуль устанавливается локально в родительский проект )?

Комментарии:

1. Git не контролирует, использует ли кто-то его подмодули ненадлежащим образом. Похоже, что здесь дело обстоит именно так: тот, кто создал этот набор узловых модулей, запутал его и оставил это проблемой для вас. Но зависимости в целом сложны.

2. Спасибо за эти идеи. Действительно, это вряд ли будет проблемой подмодуля git. Скорее, это Node.js ( что также было тегом к вопросу ) проблема. В разрешении модуля Node.js может вернуться в родительскую папку и извлечь зависимости, которые не требуются подмодулю. Если я изменю имя папки модулей узла, то это нежелательное разрешение модуля не удастся. Просто догадываюсь.