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:venia
from package root. - To run the full PWA Studio deeloper experience, with Venia hot-reloading and concurrent Buildpack/Peregrine rebuilds, run
npm run watch:all
from 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 install
to getnode_modules
up to date within any folder underpackages/
. Instead, runnpm install
in the root of the repo, which will ensure all package's dependencies are up-to-date. - When adding a new entry to
devDependencies
in 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
.