bower power

28
BOWER POWER Supercharging Front-End Manageability Code: https://github.com/ecarlisle/bower-po

Upload: eric-carlisle

Post on 16-Apr-2017

1.508 views

Category:

Internet


0 download

TRANSCRIPT

Page 1: Bower power

BOWERPOWERSupercharging

Front-End Manageability

Code:https://github.com/ecarlisle/bower-power

Page 2: Bower power

SHAMELESS SELF PROMOTION

Who?

What?

When?

Where?

Eric Carlisle (Consulting, LLC)

UI Developer, UX Designer

20-ish Years

Baltimore, MD

Page 3: Bower power

AGENDA

Why do I need this?

Why is it so awesome?

How does it work?

How can I be ultra-awesome with it?

Page 4: Bower power

Ever felt like this?

DEPENDENCY MANAGEMENT MESSES

“WTF are we using already?”“What version? Versions?!”“Am I going to break it?”“How can I optimize it?”

Page 5: Bower power

DEPENDENCY MANAGEMENT MESSES

KISSAPPROACH

TAKE THE

Page 6: Bower power

DEPENDENCY MANAGEMENT MESSES

KeepItStunninglySimple

Page 7: Bower power

DEPENDENCY MANAGEMENT MESSES

KeepItStunninglySimple

• Increased Efficiency

• Reduced Cost• Better Process• Better Products• Happy Team• $$$

Page 8: Bower power

BOWER KEEPS IT SIMPLE

1. Maintains a dependency manifest.2. Fetches them when you need it.3. Tracks dependencies.4. Integrates with everything.

(NOT A BUILD TOOL LIKE OR )

Page 9: Bower power

PREREQUISITES

JavaScript runtime

Node.js package manager

version control system

Suggestion: The Git Bash shell for Windows:

Page 10: Bower power

PACKAGE MANAGEMENT SOUP

“WHICH SHOULD I USE?!”

OR

Page 11: Bower power

PACKAGE MANAGEMENT SOUP

“I SAY BOTH!!!”

AND

They are similar in many ways, but also have unique strengths.

Page 12: Bower power

WHY BOWER TOO?

Bower focuses on client-side dependencies.

1. Abstracts, separates

concerns.

2. Uses a flat dependency

tree.

3. Lives and breathes Git.

4. Establishes accountability.

(For you & components developers

too)

Page 13: Bower power

STARTING THE AWESOME

Crack open a command shell:

$ npm install –g bower

Use NPM to install Bower globally.

Initialize Bower configuration from your project root folder.

$ myProject bower init

Prepare for a bunch of questions. If you have NPM configured, many defaults are taken from package.json.

Page 14: Bower power

THE BOWER.JSON MANIFAST

{ "name": "bower-power", "version": ”1.0.0”, "description": "Bower Power! Supercharging Front-End Manageability", "main": “", "authors": ["Eric Carlisle [email protected]”], "license": "MIT", "keywords": ["Bower”, “Bower Training”], "homepage": "https://github.com/ecarlisle/bower-power", "moduleType": [], "private": true, "ignore": ["**/.*”, "node_modules”, "bower_components”, "test”, "tests”],}

Included in your applications as well as the dependencies you will install.

Page 15: Bower power

(THERE’S ALSO .BOWERRC)

{ "directory": "app/components/", "analytics": false, "timeout": 300000, "registry": { "search": ["https://my-bower-server.local",

“https://bower.herokuapp.com”] }}

Fit Bower to some app & environment requirements.

Page 16: Bower power

BOWER API COMMANDS

cache

help

info

lookup

prune

register

unregist

er

link

login

version

Typical Usage:

init

install

list

search

update

uninstall

Component Dev:

Utility:

Page 17: Bower power

INSTALLING DEPENDENCIES

# install by name $ bower install jquery

# By (Github) shortcut $ bower install twbs/bootstrap

# By GitHub and Subversion endpoints (SSH, HTTPS, HTTP) $ bower install [email protected]:Modernizr/Modernizr.git

# By URL$ bower install http://http://bower.io/img/bower-logo.png

# By folder$ bower install ~/assets/stylesheets/theme3/variables.sass

… and several, several ways to choose versions.

There are many installation options…

Page 18: Bower power

THE BOWER_COMPONENTS FOLDER

Contains EVERYTHING – often more than expected.But that’s ok!

Page 19: Bower power

THE BOWER_COMPONENTS FOLDER

• Usually gets the dependency’s entire

GitHub repo.

• Sometimes results in positive discovery

(Hey, look!)

• Empowered to use whatever you need.

• Many ways to integrate needed files into

your project.

• Add bower_components to .gitignore!

Page 20: Bower power

TRACK WHAT WE NEED!

# install for production use. $ bower install jquery --save

# Install for testing, debugging, development purposes only. $ bower install modernizr --save-dev

"dependencies": { "jquery": "~2.1.4" },"devDependencies": { "modernizr": ”~3.1.0"},

Production or Dev?

Then in bower.json:

Page 21: Bower power

SEMANTIC VERSIONING (SEMVER)

Versioning Pattern: MAJOR.MINOR.PATCH

STRICT1.9.3

SIMPLE>=1.9.3

CLOSE TO~1.9.3

COMPATIBLE WITH^1.9.3

EXAMPLES

Page 22: Bower power

INTEGRATE! INTEGRATE! INTEGRATE!

LEVEL UP AWESOMENESS!

Page 23: Bower power

INTEGRATE! INTEGRATE! INTEGRATE!

GRUNT

Page 24: Bower power

PROGRAMS AND APIS

Bower Programmatic API

bower-installer

Page 25: Bower power

GULP INTEGRATION

gulp-bower

gulp-main-bower-files

Page 26: Bower power

GRUNT INTEGRATION

grunt-wiredep

Page 27: Bower power

BUILD & REGISTER A BOWER PACKAGE

• Have a working GitHub repository.

• Please don’t squat dependency names.

• Make certain your bower.json is solid!

# Indicate package name and Github endpoint.$ bower register my-package https://github.com/you/my-package.git

http://bower.io/search/Bower Registry:

Page 28: Bower power

Q/A

www.ericcarlisle.com

[email protected]

@eric_carlisle