tooling / book-of-modern-frontend-tooling

The Front-end Tooling Book

Home Page:http://tooling.github.io/book-of-modern-frontend-tooling/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Dependency management > Bower

addyosmani opened this issue · comments

Bower is a package manager for the web. It offers a generic, unopinionated solution to the problem of front-end package management. Chapter ideas:

  • Installation
  • Discovering packages / search
  • Installing packages
  • Updating and uninstalling packages
  • Using packages
  • Publishing packages
  • Other Bower pro-tips

@addyosmani Hey, maybe I can help out on this one?

Pasting my braindump from oksoclap:

  • Bower best practices
  • Checking in deps vs not
  • How to make it fit into your older dev system
  • How it is different from npm: http://stackoverflow.com/questions/18641899/difference-between-bower-and-npm/18652918#18652918
  • Using Bower with RequireJS
  • How Bower works. Flat dep tree. Uses git. Unopinionated. git tag to release a new version. How the current registry is just a simple alias system. We also need to warn them that a lot of packages might not work correctly because of missing bower.json, and ways to work around that, like forking and fixing, and asking the author to include a bower.json.
  • Semver versioning
  • Creating a Bower package. Should include built, but not minified assets. And why. bower init. Ignoring unneeded files (!). 
  • Bower isn't just JS. Whatever assets; CSS, HTML, templates, etc.
  • bower link during development
  • Why everything is put in bower_components, and why it's a good thing. We need to teach them not to fight it.
  • How you can use Bower behind a proxy.
  • How you can use Bower with only HTTPS instead of git://, since git:// is blocked in some workplaces: http://stackoverflow.com/questions/15669091/bower-install-using-only-https/15684898#15684898
  • How you can set up your own internal Bower registry. And even use both central and your own.
  • Using the Bower API to create tools using Bower.
  • "command not found": http://stackoverflow.com/questions/15846076/command-not-found-after-installation/15850125#15850125 (a lot of people get this)
  • Some tips and tricks: like installing a specific commit/branch, how powerful the
  • Integrate Bower with the Rails asset pipeline.
  • Explain the flat dependency structure and why it's a good thing. Eg having multiple version would be bad. Also need to explain the resolutions key.
  • The future of Bower and what's being discussed. Like wycats proposed better integration with ES6 modules and AMD. Another important piece is the server rewrite. These two things will solve most of the current painpoints with Bower.

@PascalPrecht that would be amazing. What do you think of the awesomely thorough list from @sindresorhus above? I imagine we wouldn't capture everything here from the get go but the important high-level points. Wdyt?

@addyosmani So this is the outline I could imagine by picking points from yours and Sindre's list:

  • What is Bower? - short introduction to give people a little feeling what it's actually all about (it's not only JS but also HTML, CSS etc.)
  • Installation - Windows, Mac, Linux..
  • Discovering / Searching - I think it's good to show how to search for packages once it's installed so readers get a fast result. Also explaining that the registry is just an alias system.
  • Installing packages - Installing some packages that for now don't have any dependencies, also introducing a .bowerrc file. Why everything is put into bower_components .
  • Updating - self-explained
  • Uninstalling packages - Once the reader learned this, he's able to use all the basics of Bower to use it in his flow.
  • Creating packages - Introducing bower.json file and it's properties. Creating a sample package. Maybe we can here get into the deeper "How Bower works" section.
  • Packages with dependencies - Introducing dependencies and devDependencies. Also getting into the resolution process. Checking in deps vs. not.
  • Publishing Packages - Registration process, what is possible what is not (https, git etc.), updating own packages (getting into semantic versioning and git tagging)
  • Setting up your own Bower registry - I think, from here on it's time to tackle the "stuff around bower" things
  • Future of Bower

So it's a kind of a merged list of your proposed topics. There are still some things left from @sindresorhus list, but I think for a first version for the book, this is more then enough. One could actually write a whole book about Bower. However, I think even if we try to not digging too deep into the topics, we'll get a lot of content.

If you guys are okay with this outline, I'd just start with something once #8 is clarified.

@PascalPrecht I think this list of topics would make for a great start. 'The Future Of Bower' will probably want to capture support for things like ES6 modules but between @matscales and @sindresorhus I think we should be able to summarize that last part nicely. The rest would make for an amazing intro for beginners.

As part of #8, I've added a basic build system and project structure we can use for contributions. I'll be making tweaks to this but any content contributed in markdown form to the chapters directory should work. Thanks again!

@addyosmani alright, expect a PR the next days!

I guess Addy meant @wibblymat

@PascalPrecht mind if I assign this issue to you as the finalized author?

@addyosmani yea sure. I'm on it!

Thanks!

Just a friendly ping to see where we are on this :) Thanks again for volunteering to help out with this chapter!

@addyosmani Expect a PR in the next couple of days! Sorry for the delay, wanted to wait until the first grunt chapter bits come in, so I can see in what kinda direction things should go. Also had some private issues and other OSS stuff to do..

I didn't forget it :)

Thanks for the friendly ping though

@PascalPrecht I was wondering if you would still be interested in fleshing out the Bower chapter that we have now. It would be absolutely awesome to have some content on the getting started experience etc.

@addyosmani Ah sorry man.. totally forgot that one since I was working on like ten thousand other projects. So yea, I AM interested, and I'll put that on the top of my list!

Expect a PR today.

Fantastic. Thank you!
On 13 Apr 2014 10:52, "Pascal Precht" notifications@github.com wrote:

Expect a PR today.


Reply to this email directly or view it on GitHubhttps://github.com//issues/6#issuecomment-40303727
.

@addyosmani second PR is here: #56

"Installing Packages" and "Updating Packages" will land tomorrow. I try to send a PR each day now.