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 managed by lerna:
- venia-concept - Reference/Concept Storefront
- pwa-buildpack - Build tooling
- peregrine - eCommerce Component Library
- upward-js - Reference implementation of the UPWARD specification
- upward-spec - UPWARD specification and test suite
This repository also includes modules that are not managed by Lerna, because they are not meant to be distributed via NPM, and/or they should not have their dependencies centrally managed by Lerna.
- pwa-devdocs - Project source for the documentation site
See the Venia storefront setup topic for instructions on installing this project's dependencies and running the Venia storefront on top of an existing Magento backend.
See our Troubleshooting guide if you run into any problems.
If you have an issue that cannot be resolved, please create an issue.
- Our monorepo is set up so that
npm install
can cross-link dependencies (such as Venia's dependency on Buildpack) without any extra tools. Do not runlerna bootstrap
. - All devDependencies are installed in the repository root. This means that all scripts must be run from repository root; otherwise, the locally installed CLI commands they use will not be available.
- Production dependencies are sometimes installed in child packages, but for some projects, such as Venia, it makes no sense to have production dependencies, because of bundling.
- Don't check in a big change to
package-lock.json
, and don't check in anypackage-lock.json
files but the root one. - Make sure to run
npm run prettier
andnpm run lint
before any commit you intend to push. You may want to set up a Git hook for this.