Боюсь это дико сложно в общем случае, по факту компонента должна уметь это делать. А главное, это может породить кучу неочевидных проблем.
т.е. загрузка компоненты - это всего навсего определение глобальной переменной как метод (класс) определенный в файле (функция require). Вы можете конечно вызвать его повторно с уже новой версией файла, но в памяти могут остаться объекты (например в замыканиях) от старой версии. Если это учитывать (каждый метод должен это проверять) - то такое обновление возможно.
Так как этим никто не заморачивается, придется переписывать практически все используемые компоненты.