Это может быть немного сложно, так как приложение почти должно знать, что вы делаете это. IME, он работает лучше всего, когда вы можете разделить приложение на общий код и код экземпляра в двух отдельных деревьях каталогов. Общий код также не должен делать ничего глупого, например включать файл, который должен быть в дереве экземпляров.
Одна точка входа для загрузки общего кода также является большим бонусом, потому что тогда вы можете связать несколько очень маленьких файлов: код экземпляра включает один в своем собственном каталоге; этот файл включает файл вне кода экземпляра; этот файл затем либо загружает файл точки входа для общего кода, либо загружает другой, который делает. Теперь это только один способ сделать это, но это означает, что у вас есть только один файл, который должен знать, где находится общий код (так что вы можете переместить его, если вам нужно с минимальными усилиями), и если вы делаете это правильно, все различные деревья кода экземпляра загружают его, хотя и косвенно.