npm: beyond 'npm i

53
NPM Beyond npm i

Upload: pieter-herroelen

Post on 21-Jan-2017

216 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Npm: beyond 'npm i

NPMBeyond npm i

Page 2: Npm: beyond 'npm i

Pieter Herroelen

Page 4: Npm: beyond 'npm i
Page 5: Npm: beyond 'npm i
Page 6: Npm: beyond 'npm i

NPM?

Page 7: Npm: beyond 'npm i

NPM 2 vs NPM 3

Page 8: Npm: beyond 'npm i
Page 9: Npm: beyond 'npm i
Page 10: Npm: beyond 'npm i
Page 11: Npm: beyond 'npm i

NPM scripts

Page 12: Npm: beyond 'npm i

"scripts": { "postinstall": "echo \"Thanks for installing my package \""},

Page 13: Npm: beyond 'npm i

● prepublish: Run BEFORE the package is published. (Also run on local npm install without any arguments.)● publish, postpublish: Run AFTER the package is published.● preinstall: Run BEFORE the package is installed● install, postinstall: Run AFTER the package is installed.● preuninstall, uninstall: Run BEFORE the package is uninstalled.● postuninstall: Run AFTER the package is uninstalled.● preversion, version: Run BEFORE bump the package version.● postversion: Run AFTER bump the package version.● pretest, test, posttest: Run by the npm test command.● prestop, stop, poststop: Run by the npm stop command.● prestart, start, poststart: Run by the npm start command.● prerestart, restart, postrestart: Run by the npm restart command. Note: npm restart will run the stop and

start scripts if no restart script is provided.

(https://docs.npmjs.com/misc/scripts)

Predefined script names

Page 14: Npm: beyond 'npm i

"scripts": { "grunt-version": "grunt --version"},

$ grunt --versiongrunt-cli v0.1.13grunt v1.0.0$ npm run grunt-version

> [email protected] grunt /Users/pieter/projects/npm-test> grunt --version

grunt-cli v1.2.0grunt v1.0.1

Custom script names

Page 15: Npm: beyond 'npm i

How to use NPM as a build toolhttp://blog.keithcirkel.co.uk/how-to-use-npm-as-a-build-tool/

Page 16: Npm: beyond 'npm i

NPM version syntax

Page 17: Npm: beyond 'npm i

MAJOR.MINOR.PATCH

Page 18: Npm: beyond 'npm i

MAJOR.MINOR.PATCH

= Semantic versioning aka semver

Page 19: Npm: beyond 'npm i

1.2.3 - 2.3.4

Minimum version

Comparator( < or <= )

Maximum version

Page 20: Npm: beyond 'npm i

1.2.3 - 2.3.4

1.2.3 <= 2.3.4

= Hyphen range

Page 21: Npm: beyond 'npm i

1.x

Minimum version

Comparator( < or <= )

Maximum version

Page 22: Npm: beyond 'npm i

1.x

1.0.0 < 2.0.0

= Hyphen range

Page 23: Npm: beyond 'npm i

~1.2.3

Minimum version

Comparator( < or <= )

Maximum version

Page 24: Npm: beyond 'npm i

~1.2.3

1.2.3 < 1.3.0

= tilde range

Page 25: Npm: beyond 'npm i

^1.2.3

Minimum version

Comparator( < or <= )

Maximum version

Page 26: Npm: beyond 'npm i

^1.2.3

1.2.3 < 2.0.0

= caret range (default)

Page 27: Npm: beyond 'npm i

^0.2.3

Minimum version

Comparator( < or <= )

Maximum version

Page 28: Npm: beyond 'npm i

^0.2.3

0.2.3 < 0.3.0

Page 29: Npm: beyond 'npm i

NPM repositories

Page 30: Npm: beyond 'npm i

Module

Module author:npm publish

Your app

You:npm install

Page 31: Npm: beyond 'npm i

March 23rd, 2016

Page 33: Npm: beyond 'npm i
Page 34: Npm: beyond 'npm i

babel leftpad

Page 35: Npm: beyond 'npm i

Module

Module author:npm unpublish

Your app

You:npm install babel

Page 36: Npm: beyond 'npm i

http://back-grounds.com/file/792/1680x1050/crop/atomic-blast.jpg

Page 37: Npm: beyond 'npm i
Page 38: Npm: beyond 'npm i

You cannot publish over the previously published version.

Page 39: Npm: beyond 'npm i

babel leftpad^0.0.3

Page 41: Npm: beyond 'npm i

^0.0.3

Minimum version

Comparator( < or <= )

Maximum version

Page 42: Npm: beyond 'npm i

^0.0.3

0.0.3 < 0.0.4

Page 43: Npm: beyond 'npm i

Module

Module author:npm publish

Your app

You:npm install

Private NPMrepository

Page 44: Npm: beyond 'npm i

Module

Module author:npm unpublish

Your app

You:npm install

Private NPMrepository

Page 45: Npm: beyond 'npm i

NPM shrinkwrap

Page 46: Npm: beyond 'npm i

B(external)

C(external)

A

B(1.0.0)

C(1.0.0)

1.0.0 1.0.0

Page 47: Npm: beyond 'npm i

B(external)

C(external)

A

B(1.0.0)

C(1.0.0)

C(1.0.1)

1.0.0 1.0.1

Page 48: Npm: beyond 'npm i

$ npm shrinkwrapwrote npm-shrinkwrap.json

Page 49: Npm: beyond 'npm i

B(external)

C(external)

A

B(1.0.0)

C(1.0.0)

C(1.0.1)

1.0.0 1.0.0

Page 50: Npm: beyond 'npm i

Your own NPM repo + shrinkwrap = reproducible builds :)

Page 51: Npm: beyond 'npm i

Scoped packages

Page 52: Npm: beyond 'npm i

Module@neoscores/some-

module

Your colleague:npm publish

Your app

You:npm loginnpm install @neoscores/some-module

Page 53: Npm: beyond 'npm i

Thank you

(https://www.neoscores.com/jobs)