57
@housecor bitnative.com Cory House The Starter Kit Manifesto

The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

@housecor bitnative.com

Cory House

The Starter Kit Manifesto

Page 2: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Author

Independent

Speaker / Coach

Software Architect

Page 3: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Fatigue

Page 4: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

This slide is with

animations

1. Ignore

2. Comprehensive framework

3. Starter Kit

Fatigue Solutions

Page 5: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

#FirstWorldProblems

Page 6: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation
Page 7: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation
Page 8: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Too. Many. Decisions.

Page 9: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

So. Many. Decisions.EditorWhich one?Which plugins?Use built in terminal?Editor config

Module formatES6 Modules, CommonJS…

HTML generationMinify?Use plugin?Inject prod only concerns?Templating language?

TranspilingNative ES or diff language?Use experimental features?Which plugins?Production vs dev config

BundlerWebpack, Browserify, Rollup…

LintingWhich linter?Enable which rules?Warning or error?Which plugins?Use a preset?

TestingFramework?Assertion Library?Helpers?Test file location?File naming?What environment?Mocking?Code CoverageContinuous Integration

Project structureBy file type or feature?Centralize API?Allow Inline JS?Extract to POJOs?

HTTPLibraryMock schema formatMock data generationMock server

Production buildMinificationSourcemapsBundle splittingCache bustingError logging

Automated Deployment

Page 10: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Overwhelmed?

Page 11: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Your team needs a JavaScript starter kit.

Page 12: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

while(fatigued) {

continueEnhancingStarterKit();

}

Page 13: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

This slide is with

animations

Codifies

- Decisions

- Best practices

- Lessons learned

Encourages consistency

Avoids forgetting important details

Increases quality

- Doing the “right” thing is the easy thing

Avoids repeating work

Why a Starter Kit?

Page 14: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Today’s list of “best practices” is too long for any individual to

track.

Create a starter kit that does it for you.

Page 15: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

This slide is with

animations

Starter Kit

JavaScript Development Environment

Boilerplate

Seed

Starter Project

Scaffold

Generator

x == y

Synonyms

Page 16: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Who Is This Talk For?

Page 17: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

“Any application that can be written in JavaScript, will eventually be written in JavaScript.”Atwood’s Law

Page 18: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation
Page 19: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Web

JavaScript Is Everywhere

Server Mobile Desktop

Page 20: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Web

This Talk Is For JS Developers

Server Mobile Desktop

Page 21: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Highly opinionated and comprehensive frameworks

Who Doesn’t Need a Starter Kit?

Page 22: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

EmberAngularReact

Opinion

Node

Page 23: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Boilerplate

Save time

Proven

Full-featured

Build your own

Freedom

Perfect fit for your team

No unnecessary complexity

Understand it

Easier to change

Page 24: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

A Starter Kit is Automated Checklist

Page 25: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Doctors use checklists

Page 26: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

We think we can remember all the steps.

We can’t.

Page 27: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

10 day line-infection rateFell from 11% to 0%

Checklist prevented:43 infections8 deaths$2 million

Dramatic Results

Page 28: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Doctors know what to do, but it’s easy to overlook a step.

Page 29: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Doctors know what to do, but it’s easy to overlook a step.

Developers

Page 30: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

A starter kit is a living, automated, and interactive checklist.

Page 31: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

What Belongs in Your Starter Kit?

Package Management

Bundling

Minification

Sourcemaps

Transpiling

Dynamic HTML Generation

Centralized HTTP

Mock API framework

Component libraries

Development Webserver

Linting

Automated testing

Continuous Integration

Automated build

Automated deployment

Working example app

Page 32: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation
Page 33: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation
Page 34: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Strong opinions are very useful to others.

Those who were undecided or ambivalent can just adopt your stance.

But those who disagree can solidify their stance by arguing against yours…

Derek Sivers

Page 35: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Atom WebStorm VSCodeBrackets

Step 1: Pick an Editor and Configuration

Page 36: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Step 1: Pick an Editor and Configuration

Page 37: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

JSPMBower npm

Jam volo

Step 2: Pick a Package Manager

Page 38: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Express

Webpack dev server

http-server live-server

budo Browsersync

Step 3: Pick a Development Webservers

Page 39: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

localtunnel ngrok Surge now

Step 4: Pick a Way to Share WIP

Page 40: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Grunt Gulp npm Scripts

Step 5: Choose an Automation Approach

Page 41: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Babel TypeScript Elm

Step 6: Pick a Transpiler

Page 42: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

ES6 ModulesUniversal Module

Definition(UMD)

CommonJS(CJS)

Asynchronous Module Definition

(AMD)IIFE

5 Module Formats

Step 7: Pick a Module Format

Page 43: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Browserify Webpack Rollup JSPM

Step 8: Pick a Bundler

Page 44: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Step 9: Pick a Linter

Page 45: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

3Helper Libraries

6Where to place tests

1Framework

2Assertion Library

4Where to run tests

5When to run tests

Unit Testing Decisions

Step 10: Testing Decisions…

Page 46: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

It’s Like Choosing a Gym

The important part is showing up.

Page 47: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Right Answer Wrong Answer

Any of these!

Woah, decision fatigue!

I’ll just keep coding and praying.

Page 48: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Jenkins

Semaphore

Travis Appveyor

CircleCI SnapCI

Step 11: Choose a CI Server

Page 49: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

isomorphic-fetch

xhr

SuperAgent

Axios

XMLHttpRequest

jQuery

Fetch

http

request

HTTP Call Approaches

BrowserNode Node & Browser

Step 12: Choose HTTP Library

Page 50: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Step 13: Choose an HTTP Mocking Approach

Page 51: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

“I’ll just slap this JS in a script tag.”- Some developer you know. But not you. Right? ☺

Step 14: Demo App

Page 52: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Why a Demo App?

Examples help.

Step 14: Demo App

Page 53: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

npm start npm run build

The Path To Production

npm run deploy

Step 15: Automated Build and Deploy

Page 54: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

Demo

This bullet list is with

animations

Here’s my starter…

Page 55: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

This slide is with

animations

Send a meeting invite to your team.

- Would we benefit from a starter kit?

- What are our JS pain points?

- Would we benefit from a demo app?

Challenge

Page 56: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation
Page 57: The Starter Kit Manifesto - SDD Conferencesddconf.com/brands/sdd/library/Starter_Kit_Manifesto... · 2017. 5. 11. · Bundling Minification Sourcemaps Transpiling Dynamic HTML Generation

@housecor