the projector works · bundle browserify browserify webpack. @certsimplessl @mikemaccana webpack?

28
@mikemaccana THE PROJECTOR WORKS

Upload: others

Post on 25-Sep-2020

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana

THE PROJECTOR WORKS

Page 2: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana

📦MODULES

EVERYWHERE

Page 3: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

CertSimple

Page 4: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

EV SSL:

ACTUALLY CHECKS WHO YOU ARE, SHOWS THAT IN BROWSER

Page 5: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

40X FASTER

Page 6: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

HOW CERTSIMPLE IS BUILT

Page 7: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana@certsimplessl

We use npm on the backend

We use npm on the frontend

All our code is npm modules

Page 8: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

ALL THE THINGS WE WISH WE’D KNOWN

EARLIER

Page 9: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana@certsimplessl

Why we chose npm

How you can use npm

Things to avoid

Page 10: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana@certsimplessl

More packages

Page 11: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana@certsimplessl

Every frontend packageCertSimple needed was officially

maintained on npm

Page 12: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana@certsimplessl

Attitude to npm over time

Page 13: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana@certsimplessl

General JS things frontend needed also on npm

alpha-sort

es6-shimcountry-data

superagent

array-includes

Page 14: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

USE REAL PROJECTS, NOT STACKOVERFLOW

Page 15: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana@certsimplessl

Other module formats?

• window globals are dead

• RequireJS never had a module repository - dead

• UMD only exists because of globals and Require - just dead code at this point.

• Very few ES6 packages, and they’ll be on npm anyway

Page 16: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana@certsimplessl

Building, & bundling npm modules

Build Tasks gulp npm run-script build webpack

Bundle browserify browserify webpack

Page 17: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana@certsimplessl

Webpack?

• Can bundle npm packages

• Replaces build system as well

• 8-10% smaller modules + hot reload

• We use a bunch of existing gulp tools, so benefit not yet worth it

Page 18: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana@certsimplessl

modules everywhere

Page 19: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana@certsimplessl

Why just modules?• Simple imports

• modules are a reasonable unit of granularity

• Unlike /lib, every module has ‘test’, README.md, packages.json, etc.

• Easier to open source

Page 20: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana@certsimplessl

Making your modules prominent

Automatically build a Sublime .project file that prioritises private npm modules

Page 21: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana@certsimplessl

Bundling

This is the entire js/src/index.js

Makes a bundle in js/dist/index.js

Page 22: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana@certsimplessl

The ‘frontend’ module:

Page 23: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana@certsimplessl

How to bundle templates?

Page 24: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana@certsimplessl

Analysing bundle size:

Page 25: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana@certsimplessl

Deploying• package.json only specified version for your

immediate dependencies

• a version 1.0.0 - only use b version 1.2.0

• b version 1.2.0 - use version c 1.0.0 or newer

• c - could be any version

• package.json alone isn’t enough to ensure C has a consistent version

Page 26: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana@certsimplessl

npm shrinkwrap

• Provides consistent deploys

• Specifies the full tree, all the way down

• Built into npm

• Avoids overhead of committing node modules

Page 27: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

THANKS!

Page 28: THE PROJECTOR WORKS · Bundle browserify browserify webpack. @certsimplessl @mikemaccana Webpack?

@mikemaccana@certsimplessl

Links!Module countshttp://www.modulecounts.com/

Discify http://hughsk.io/disc/

Sublime prioritise private modules https://gist.github.com/mikemaccana/fe5c1a83bcbdc0157534

Browserify + gulp https://github.com/gulpjs/gulp/blob/master/docs/recipes/browserify-uglify-sourcemap.md

Webpack vs Browserifyhttps://github.com/k88hudson/browserify-webpack#results