Bot the pain away!

Bot the pain away!

Maintaining a JavaScript software project, be it open source or not, can be a ton of work.
There is the fun work of developing new features , fixing a bug or refactoring a messy chunk of code but those are always followed by chores like releasing new versions or updating some dependencies. But worry not, there is help out there. I’ll show you the benefits of semantic versioning and some cool bots,
such as Greenkeeper and semantic-release, that will do these chores for you!

8c9b2e646f684c03394c5522717c371b?s=128

anderspree

May 26, 2018
Tweet

Transcript

  1. Bot the pain away!

  2. !

  3. ! I'M JULIA WEB DEVELOPER @ NEIGHBOURHOODIE SOFTWARE

  4. CouchDB, Offline First, Hoodie, Greenkeeper

  5. None
  6. ! VS. "

  7. MODULARISATION ▸ ! the monolith ▸ " many smaller scoped

    modules
  8. ! SMALLER MODULES ! ▸ easier to document ▸ easier

    to test ▸ easier to contribute to
  9. ! SMALLER MODULES ! ▸ easier to maintain ?

  10. RELEASING A NEW VERSION FOR A MODULE $ npm publish

  11. Wait a minute! Did we.. ▸ create a git tag?

    ▸ git push --tags? ▸ pick the right version number ▸ commit the package.json? ▸ write the change logs?
  12. ! "

  13. HUMANS MAKE MISTAKES

  14. !

  15. SEMANTIC VERSIONING (SEMVER) X.Y.Z

  16. SEMANTIC VERSIONING MAJOR.MINOR.PATCH 1. Major: ! Incompatible API Changes 2.

    Minor: ✨ New Functionality 3. Patch: # Bug Fixes
  17. SEMANTIC VERSIONING BREAKING.FEATURE.FIX 1. Breaking: ! Incompatible API Changes 2.

    Feature: ✨ New Functionality 3. Fix: # Bug Fixes
  18. Version numbers are for computers, not for humans.

  19. HAUPTVERSIONS NUMMERNERHÖH UNGSANGST

  20. ! Automation !

  21. AUTOMATIC RELEASES

  22. ✨ SEMANTIC RELEASE ✨ ▸ free & open source ▸

    has many plugins
  23. ✨ SEMANTIC RELEASE ✨ $ npx semantic-release-cli setup

  24. ✨ SEMANTIC RELEASE ✨ ▸ waits for the tests to

    succed on CI ▸ calculates version based on the commit message ▸ - creates the git tag ▸ publishes package to npm ▸ creates the GitHub release & changelog
  25. None
  26. COMMIT MESSAGE CONVENTIONS fix: .. feat: .. BREAKING CHANGE: (in

    commit body)
  27. None
  28. ✨ SEMANTIC RELEASE ✨ notifies maintainers and users of new

    releases!
  29. WHAT ABOUT.. DEPENDENCY MANAGMENT

  30. SO MUCH HAS HAPPEND...

  31. ⚠⚡ No security updates without up-to-date dependencies!

  32. DEPENDENCY MANAGMENT $ npm outdated

  33. DEPENDENCY MANAGMENT $ npm update Updating everything to the latest

    version at once ... probably breaks everything
  34. DEPENDENCY MANAGMENT ! Going through the changelogs of each outdated

    dependency ... probably takes forever
  35. WHAT IF SOMEONE (!) DID ALL THIS FOR YOU?

  36. AND THE ONLY THING LEFT FOR YOU TO DO IS

    TO CLICK A BUTTON.
  37. ! Automation !

  38. None
  39. ! GREENKEEPER ! ▸ Open Source ▸ free for Open

    Source ▸ Plans for private Repositories & Github Enterprise ▸ 14 Days free trial on Github Marketplace
  40. None
  41. None
  42. !

  43. SEMANTIC VERSION RANGES THE CARET '^' "JEST": "^22.0.0" ▸ ✅

    22.0.1 ▸ ✅ 22.4.4 ▸ ❌ 23.0.0
  44. SEMANTIC VERSION RANGES THE TILDE '~' "JEST": "~22.1.0" ▸ ✅

    22.1.1 ▸ ❌ 22.2.0 ▸ ❌ 23.0.0
  45. SEMANTIC VERSION RANGES "JEST": "22.1.0" ▸ ❌ 22.1.1 ▸ ❌

    22.2.0 ▸ ❌ 23.0.0
  46. OUT OF RANGE ^1.0.0 -> 2.0.0

  47. None
  48. IN RANGE ^2.3.2 -> 2.6.0

  49. None
  50. None
  51. SEMANTIC RELEASE & GREENKEEPER !

  52. None
  53. None
  54. Thank you!