I have tried using discrete BJT to do it. But the overhead from the 5V
VDC is not enough.
It could be if you used an appropriate circuit. Here's one that regulates current to 100mA at up to 4.4V on a 5V supply:-
simulate this circuit – Schematic created using CircuitLab
Q1, R1, and R2 act as a "Vbe multiplier" which drops about 1.2V (the exact voltage can be adjusted by varying the ratio of R1/R5). At 100mA Collector current Q2's Base-Emitter bias is ~0.8V, leaving ~0.4V across R3. 0.4V/3.9Ω = 102mA. Q2 has a saturation voltage of <0.2V at 100mA. 5V - 0.4V (across R3) - 0.2V (across Q2) = 4.4V maximum output voltage at 100mA.
This circuit alone is obviously not sufficient for charging a Lipo battery, as the voltage must not be allowed to go above 4.20V. So you will need a circuit which reduces the current when battery voltage reaches 4.2V.
The following circuit provides the required CVCC (Constant Voltage Constant Current) charge profile, using all discrete components except for the TL431 'Precision Programmable Reference' (I could have used a plain Zener diode here, but low voltage Zeners have poor regulation, and we need a very precise reference voltage):-
simulate this circuit
Q3 and Q4 compare the Lipo voltage to the reference voltage, turning on Q5 and reducing the charge current when battery voltage reaches 4.2V. C2 maintains high frequency stability if the battery is disconnected.
This circuit is about the minimum required to safely charge a Lipo cell, but dedicated charger ICs provide more features to enhance safety and cell life, including:-
Shutting off completely when charge current drops to ~10% of the set current.
Charging at a lower rate when voltage is below 3.0V, to prevent damaging a cell which has been deeply discharged.
Monitoring battery temperature and turning off if it goes too high (a Lipo battery which gets hot during charging may be about to explode!).
Detecting internal and external fault conditions.
Providing status outputs to indicate charging mode etc.
You could add all these features using discrete components, but you would need a lot of them. With modern 1 chip solutions available at very low cost it's hardly worth the effort, except perhaps for learning about how such circuits work.