There have been many LED instructables, so I will mainly focus on what's different about mine and leave you to fill in the details by reading elsewhere. I won't go into calculating resistor values, series vs. parallel, or things like that. Partially because I did this a while ago and don't remember some of the stuff.
First, the rationale: I don't want lights on my bike because they're theft magnets, are more fragile, and more cumbersome. I want a single battery pack that powers a tail light and one or two headlights, and I want to turn it all on or off with one switch. The backpack is the best way to go for me, since I also like to carry my lock in the backpack anyway and always have it with me.
I used two Luxeon Rebel Stars (145 lumens @ 700mA) for the headlights, and two Luxeon III red-orange side emitters for the tail light. I made a little 555 timer circuit (google it) and encased it in epoxy, and rigged up a switch so that the tail light is always blinking, but the headlights can blink or be solid. Due to my electronics half-assery, the headlights actually blink very slightly when "solid." You can't really tell when riding, though.
I went the resistor route instead of using a buckpuck, which I somewhat regret. A buckpuck is especially cool because you can later upgrade to a Li-ion battery pack (much more convenient to charge, and lighter) and it'll still work the same even though the input voltage is different. And it wastes less juice and thus produces less waste heat.
The switches I used are waterproof E-Switch 100AWSP1's, mouser part # 612-100A-A1422 / manuf. part # 100AWSP1T1B4M2RE.
A good place to go for 555 circuit:https://www.instructables.com/id/EP8RPXKLVPEXCFLXNH/