I started playing with Bower and right out of the gate, there are a couple errors I encountered while using it on Windows. So I want to do a quick post on what I do to resolve the errors.
Let’s use installing twitter bootstrap as an example. I ran the following command:
bower install bootstrap
Right away I received the following error.
bower cloning git://github.com/twitter/bootstrap.git bower cached git://github.com/twitter/bootstrap.git bower fetching bootstrap bower error status code of git: 127
Do some Googling a bit and it seems like the solution to the problem was put git in my PATH. That’s weird. It is in my PATH. Running “git –version” in command prompt clearly shows I have msysgit installed and running “where git” shows me it points to “C:\RailsInstaller\Git\cmd\git.cmd”. Okay, even though I didn’t literally install msysgit myself, it was installed as part of the RailsInstaller.
As a last resort, I’ll just take a quick peek into the bower source code at least to see where it throws that error. So I found package.js. How Bower works in my case is it will construct a git URL using some naming convention and uses git on my machine to run some commands using spawn from child_process. From my past memory, spawn actually was not able to run .bat and .cmd files, but it was able to run .exe files. So this may be the problem since my git points to git.cmd. I then updated my PATH variable to include the path to git.exe directly. Remember to add it after the RailsInstaller path since order matters.
Run “bower install bootstrap”. Error again.
bower cloning git://github.com/twitter/bootstrap.git bower cached git://github.com/twitter/bootstrap.git bower fetching bootstrap bower error status code of git: 128 There where errors, here's a summary of them: - status code of git: 128 fatal: Not a git repository (or any of the parent directories): .git
There is a status code 128 error. It’s a different error. At least it seems like a progress. Googling more and it may have something to do with the bower cache. I assume Bower works somewhat like npm. So let’s just open C:\Users\<Username>\AppData\Roaming and there I see both bower\cache and bower-cache. At this point, I know I’m very close and I don’t want to investigate further on which to delete. I’ll just delete both.
Run “bower install bootstrap” again. tada! Here is the message for success.
bower cloning git://github.com/twitter/bootstrap.git bower caching git://github.com/twitter/bootstrap.git bower fetching bootstrap bower checking out bootstrap#v2.2.1 bower copying C:\Users\YourUsername\AppData\Roaming\bower\cache\bootstrap\c1ee45ee19795a66de4a0c45758fe0b1 bower cloning git://github.com/components/jquery.git bower caching git://github.com/components/jquery.git bower fetching jquery bower checking out jquery#1.8.3 bower copying C:\Users\YourUsername\AppData\Roaming\bower\cache\jquery\cf68c4c4e7507c8d20fee7b5f26709d9 bower installing bootstrap#2.2.1 bower installing jquery#1.8.3
Since yeoman uses Bower internally, yeoman now also works and you can run “yeoman install bootstrap” to install twitter bootstrap for your yeoman project, given that you have yeoman set up for Windows of course.