Yarn package management

72

Transcript of Yarn package management

Page 1: Yarn package management
Page 2: Yarn package management
Page 3: Yarn package management

I A M N O T A N E X P E R T

I N Y A R N

J U S T A J A V A S C R I P T D E V E L O P E R

Page 4: Yarn package management
Page 5: Yarn package management
Page 6: Yarn package management

NPM IS AMAZING

Page 7: Yarn package management

NPM IS HUGE

Page 8: Yarn package management
Page 9: Yarn package management

RANGE SPECIFIERS

PROBLEM

^1.2.3 ~1.2.3

NOT DETERMINISTIC~node_modules

Page 10: Yarn package management
Page 11: Yarn package management

RANGE SPECIFIERS

PROBLEM

^1.2.3 ~1.2.3

NOT DETERMINISTIC~node_modules

Page 12: Yarn package management

NPM IS SLOW

PROBLEM

SEQUENTIALDOWNLOADING

Page 13: Yarn package management
Page 14: Yarn package management

OFFLINE DEVELOPMENT

PROBLEM

NPM DOESNTWORK OFFLINE

Page 15: Yarn package management

CI BUNDLING

OFFLINE

NODE_MODULESMUST MATCH

PACKAGE.JSON

Page 16: Yarn package management
Page 17: Yarn package management

PREPUBLISH?

NPWTFM?

Page 18: Yarn package management
Page 19: Yarn package management
Page 20: Yarn package management
Page 21: Yarn package management

RANGE SPECIFIERS

PROBLEM

^1.2.3 ~1.2.3

NOT DETERMINISTIC~node_modules

Page 22: Yarn package management

FIXED VERSIONS?

RANGE SPECIFIERS PROBLEM

SUB DEPENDENCIESNOT FIXED

Page 23: Yarn package management
Page 24: Yarn package management

FIXED VERSIONS?

RANGE SPECIFIERS PROBLEM

SUB DEPENDENCIESNOT FIXED

Page 25: Yarn package management
Page 26: Yarn package management

NPM SHRINKWRAP?

RANGE SPECIFIERS PROBLEM

REQUIRESEXPLICIT SYNC

Page 27: Yarn package management

COMMIT MODULES?

RANGE SPECIFIERS PROBLEM

100S OF FILES IN PRMUST DEVELOP VIRTUALIZATION

HELPS WITH DEV - PRODUCTION INTEGRITY

Page 28: Yarn package management
Page 29: Yarn package management

OFFLINE DEVELOPMENT

PROBLEM

NPM DOESNTWORK OFFLINE

Page 30: Yarn package management

NPM CACHE-MIN?

OFFLINE DEVELOPMENT PROBLEM

NPM --CACHE-MIN INFINITY INSTALL LEFT-PAD- STILL NEEDS CONNECTIVITY

- FRAGILE

Page 31: Yarn package management

LOCAL REGISTRIES?

OFFLINE DEVELOPMENT PROBLEM

- SINOPEA- LOCAL-NPM- NPM_LAZY

Page 32: Yarn package management
Page 33: Yarn package management

LOCAL REGISTRIES?

OFFLINE DEVELOPMENT PROBLEM

- SINOPEA- LOCAL-NPM- NPM_LAZY

Page 34: Yarn package management

GOOD PRACTICE IS OPTIN

PROBLEM

SHRINKWRAP SAVING TO MANIFEST

Page 35: Yarn package management

TEAM CONVENTIONS?

GOOD PRACTICES ARE OPT IN PROBLEM

HARD TO ENSURE PEOPLE FOLLOW

Page 36: Yarn package management

PRECOMMIT HOOKS?

GOOD PRACTICES ARE OPT IN PROBLEM

CAN BE DISABLED

Page 37: Yarn package management

CUSTOM SCRIPTS?

GOOD PRACTICES ARE OPT IN PROBLEM

- GO AGAINST CONVENTION- GIT WORKFLOW ISSUES

- NEW THING- DEVELOPERS RESPONSIBILITY

Page 38: Yarn package management

NPM IS STILL SLOW

HOWEVER...

BUT LOCAL REGISTRIES AS CACHES HELP

Page 39: Yarn package management

SHARING NODE_MODULES?

BUNDLING CIPROBLEM

- GLOBAL NODE_MODULES FOLDER- PACKAGE.JSON HASH

- DOCKER CONTAINER CHANGES- NON-DETERMINISM CAUSES ISSUES

Page 40: Yarn package management

PREPUBLISH

NPWTFM

- DEAL WITH IT- IN-PUBLISH

Page 41: Yarn package management

SAM BOYER

PACKAGE MANAGERFOR GOLANG

GLIDE

Page 42: Yarn package management

"SOFTWARE IS TERRIBLE"

SAM BOYER

Page 43: Yarn package management

"PEOPLE ARE TERRIBLE"

SAM BOYER

Page 44: Yarn package management

"THERE ARE TOO MANY DIFFERENTSCENARIOS"

SAM BOYER

Page 45: Yarn package management

"NOTHING WILL REALLYWORK FOR SURE"

SAM BOYER

Page 46: Yarn package management

"IT’S PROVABLE THATNOTHING WILL REALLY

WORK FOR SURE"

SAM BOYER

Page 47: Yarn package management

"OUR LIVES AREMEANINGLESS PERTURBATIONS

IN A SWIRLING VORTEXOF CHAOS AND ENTROPY"

SAM BOYER

Page 48: Yarn package management
Page 49: Yarn package management
Page 50: Yarn package management

NEW NPM CLIENT

Page 51: Yarn package management

DOUBLE THE SPEEDCompared with npm 3

Page 52: Yarn package management

OFFLINE MIRRORecho 'yarn-offline-mirror "./my-cache"' > .yarnrc

rm -rf yarn.lock && yarn

Page 53: Yarn package management

DETERMINISTICnode_modules same everytime

Page 54: Yarn package management

YARN.LOCKSimilar to npm-shrinkwrap

Page 55: Yarn package management

AUTOMATIC MANIFEST SYNC

yarn add left-padyarn add mocha --dev

Page 56: Yarn package management

PACKAGE VALIDATIONPackage integrity validated

by checksum

Page 57: Yarn package management
Page 58: Yarn package management

WORKFLOWInstall and setup a project

DEMO

Page 59: Yarn package management
Page 60: Yarn package management

SPEED DEMO

Page 61: Yarn package management
Page 62: Yarn package management

OFFLINE MIRRORInstall dependencies without

an internet connection

DEMO

Page 63: Yarn package management
Page 64: Yarn package management

RUN SCRIPTSScripts are run based on

pattern matching

DEMO

Page 65: Yarn package management
Page 66: Yarn package management

YARN IS STILL WIP

MACOS SEEMS SOLIDPOS. ISSUES w/PRIVATE MODULES IN DOCKER

STILL UNPROVEN FOR US IN CI(WERE WORKING ON IT)

HMM...

Page 67: Yarn package management

YARN HAS QUIRKS

OFFLINE CACHE .yarnrcGITHUB URLS

STILL HAS PREPUBLISH

HMM...

Page 68: Yarn package management

YARN > NPM

YARN IS LONGER TO TYPE THAN NPM

NITPICK...

Page 69: Yarn package management

HTTP://YARNPKG.COM

Page 70: Yarn package management
Page 71: Yarn package management

THANKYOU

Page 72: Yarn package management

http://yarnpkg.com/en/docshttps://yarnpkg.com/blog/2016/11/24/offline-mirrorhttps://yarnpkg.com/en/docs/migrating-from-npmhttps://www.youtube.com/watch?v=Mou6JzfZVf0http://github.com/ryardley/yarn-talk

[email protected]/ryardleytwitter.com/rudiyardley

YARN