Magento PWA Studio is a collection of tools that lets developers build complex Progressive Web Applications on top of Magento 2 stores.
The PWA Studio project welcomes all codebase and documentation contributions. We would like to recognize the following community members for their efforts on improving the PWA Studio project:
| mage2pratik | vdiachenko | jissereitsma | rossmc |
| bobmotor | gavin2point0 | neeta-wagento | mtbottens |
| Jakhotiya | JStein92 | bgkavinga | philwinkle |
| bobbyshaw | matthewhaworth | shakyShane | Igloczek |
| mhhansen | rowan-m | artKozinets | camdixon |
For more information about contributing to this repository, see the Contribution guide.
To ease local development, testing, and versioning, the PWA Studio project uses a monorepo, with package management orchestrated by lerna.
All packages are versioned in a single repo, but released to npm as independent packages.
This repository includes the following packages:
- venia-concept - Reference/Concept Theme
- pwa-buildpack - Build tooling
- peregrine - eCommerce Component Library
- pwa-module
- pwa-devdocs - Project source for the documentation site
Note: You must have a version of node.js >= 8.0.0, and a version of npm >= 5.0.0. The latest LTS versions of both are recommended.
Follow these steps to install the dependencies for all the packages in the project:
- Clone the repository
- Navigate to the root of the repository from the command line
- Run
npm install - Watch the bootstrapping take place.
- To run the Venia theme development experience, run
npm run watch:veniafrom package root. - To run the full PWA Studio deeloper experience, with Venia hot-reloading and concurrent Buildpack/Peregrine rebuilds, run
npm run watch:allfrom package root.
When using a monorepo and lerna, it's important that you break some common habits that are common when developing front-end packages.
- Do not run
npm installto getnode_modulesup to date within any folder underpackages/. Instead, runnpm installin the root of the repo, which will ensure all package's dependencies are up-to-date. - When adding a new entry to
devDependenciesin a package'spackage.json, ask yourself whether that dependency will be used across multiple packages. If the answer is "yes," the dependency should instead be installed in the rootpackage.json. This will speed up runs oflerna bootstrap.