Skip to content
๐Ÿ‰ A Monorepo with multiple packages and a shared build, test, and release process.
JavaScript
Branch: master
Clone or download

README.md

Monorepo with Lerna & Yarn Workspaces

A Monorepo with multiple packages and a shared build, test, and release process.

image

  • ๐Ÿ‰ Lerna โ€Š- The Monorepo manager
  • ๐Ÿ“ฆ Yarn Workspacesโ€Š - โ€ŠSane multi-package management
  • ๐Ÿš€ Reactโ€Š - โ€ŠJavaScript library for user interfaces
  • ๐Ÿ’… styled-componentsโ€Š -โ€Š CSS in JS elegance
  • ๐Ÿ›  Babelโ€Š - โ€ŠCompiles next-gen JavaScript
  • ๐Ÿ“– Storybook - UI Component Environment
  • ๐Ÿƒ Jestโ€Š -โ€Š Unit/Snapshot Testing

Usage

  • yarn dev - This starts Storybook for viewing all the components locally.
  • yarn bootstrap - This installs all of the packages and links dependent packages together.
  • yarn build - This babelfies all of the packages and creates /lib folders for each one.
  • yarn test - Run all linting and unit tests before committing.
  • yarn test -o - Run only the tests that have changed.
  • yarn test -u - Update all of the snapshot tests.

Lerna

  • lerna changed - Show which packages have changed.
  • lerna diff - Show specifically what files have cause the packages to change.

Linking

When linking inside of the Monorepo, everything works as expected. If you are trying to consume packages from this Monorepo in a different application locally, using npm link or yarn link does not work as expected. However, we have a workaround for the time being.

  1. Run yarn build
  2. Run yarn dev
  3. Change the package.json of the consumer from $YOUR_PACKAGE_NAME (which lives inside the monorepo) to file:./../monorepo/packages/$YOUR_PACKAGE_NAME
  4. Run rm -rf node_modules && yarn in the consumer
  5. ๐ŸŽ‰

Contributing

All formatting and linting should be taken care of for you using stylelint, ESLint, and Prettier. You should also consider installing an extension for CSS syntax highlighting.

You canโ€™t perform that action at this time.