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

Lerna and Monorepo architecture for JavaScript

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Lerna and Monorepo architecture for JavaScript

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

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

Avatar for Chathu Vishwajith

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