Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Lerna and Monorepo architecture for JavaScript

Lerna and Monorepo architecture for JavaScript

Presentation of for the session of FOSSAsia's OpenTech Summit Sri Lanka 2020.

https://eventyay.com/e/3231dd0d

Chathu Vishwajith

January 06, 2020
Tweet

More Decks by Chathu Vishwajith

Other Decks in Programming

Transcript

  1. Who am I Chathu Vishwajith Auth0 Ambassador Co-Founder of a

    startup Colombo JS Meetup Co-organizer @iamchathu Lerna and Monorepo architecture for JavaScript
  2. Project Lynx → Fullstack Javascript → Node.js/Typescript Backend → React

    Frontend Lerna and Monorepo architecture for JavaScript
  3. Multiple Projects (Multi-repo) → Create separate projects for each. →

    Separate CI tools. Lerna and Monorepo architecture for JavaScript
  4. Multiple Projects (Multi-repo) → Create separate projects for each. →

    Separate CI tools. → Teams divided to each project. Lerna and Monorepo architecture for JavaScript
  5. Shared Package → Create another project. → Add as a

    git dependancy. Lerna and Monorepo architecture for JavaScript
  6. Shared Package → Create another project. → Add as a

    git dependancy. → yarn add https://gitlab.com/lynx/lynx-shared.git Lerna and Monorepo architecture for JavaScript
  7. New updates! → Update version. → Push new changes. Lerna

    and Monorepo architecture for JavaScript
  8. New updates! → Update version. → Push new changes. →

    Update the dependency on the dependent packages. Lerna and Monorepo architecture for JavaScript
  9. Nightmares → Forgot to update. → Duplicate dependacies. → Testing

    became hard. Lerna and Monorepo architecture for JavaScript
  10. Nightmares → Forgot to update. → Duplicate dependacies. → Testing

    became hard. → Report issues in multiple places. Lerna and Monorepo architecture for JavaScript
  11. Nightmares → Forgot to update. → Duplicate dependacies. → Testing

    became hard. → Report issues in multiple places. → Productivity went down! Lerna and Monorepo architecture for JavaScript
  12. Monorepo → Javascript has modules. → Local dependent modules. →

    Share common dependancies. Lerna and Monorepo architecture for JavaScript
  13. Monorepo → Javascript has modules. → Local dependent modules. →

    Share common dependancies. → One places to report issues. Lerna and Monorepo architecture for JavaScript
  14. Monorepo → Javascript has modules. → Local dependent modules. →

    Share common dependancies. → One places to report issues. → Easy to test cross-modules. Lerna and Monorepo architecture for JavaScript
  15. Monorepo → Javascript has modules. → Local dependent modules. →

    Share common dependancies. → One places to report issues. → Easy to test cross-modules. → Cross package changes. Lerna and Monorepo architecture for JavaScript
  16. Monorepo → Javascript has modules. → Local dependent modules. →

    Share common dependancies. → One places to report issues. → Easy to test cross-modules. → Cross package changes. → Test across modules. Lerna and Monorepo architecture for JavaScript
  17. Monorepo → Javascript has modules. → Local dependent modules. →

    Share common dependancies. → One places to report issues. → Easy to test cross-modules. → Cross package changes. → Test across modules. → Easy to publish Lerna and Monorepo architecture for JavaScript
  18. Monorepo a Monorepo is a single repository holding the code

    of multiple projects which may or may not be related in some way. The projects managed in a Monorepo can be dependents of each other or they can be completely unrelated. Lerna and Monorepo architecture for JavaScript
  19. Myths about Monorepo → Anybody can change any file. Lerna

    and Monorepo architecture for JavaScript
  20. Myths about Monorepo → Anybody can change any file. →

    Hard to scale. Lerna and Monorepo architecture for JavaScript
  21. Myths about Monorepo → Anybody can change any file. →

    Hard to scale. → Big repository size. Lerna and Monorepo architecture for JavaScript
  22. What are the tools → Lerna. → Yarn Workspace. Lerna

    and Monorepo architecture for JavaScript
  23. What are the tools → Lerna. → Yarn Workspace. →

    Lerna with Yarn Workspaces. Lerna and Monorepo architecture for JavaScript
  24. What are the tools → Lerna. → Yarn Workspace. →

    Lerna with Yarn Workspaces. → Nx. Lerna and Monorepo architecture for JavaScript
  25. Who use Lerna → React. → Babel. → ZendDesk Garden.

    Lerna and Monorepo architecture for JavaScript
  26. Summary → Mono repo is way of organizing multiple projects

    in single code reporsioty. https://github.com/iamchathu/lerna-monorepo-test Lerna and Monorepo architecture for JavaScript
  27. Summary → Mono repo is way of organizing multiple projects

    in single code reporsioty. → Monorepo or Lerna are not silver bullets. https://github.com/iamchathu/lerna-monorepo-test Lerna and Monorepo architecture for JavaScript