Ensure the development machine meets the requirements listed in the readme. Furthermore, configure your editor to highlight ESLint warnings. From the repository root run:
$ yarn install
The pageflow-paged-react package has a different set of dependencies, which
need to be installed separately:
$ cd entry_types/paged/packages/pageflow-paged-react
$ yarn install
The Jest test suites need to be run from the respective package
roots. To run the specs from ./spec:
$ cd package
$ yarn test
$ cd entry_types/paged/packages/pageflow-paged
$ yarn test
$ cd entry_types/scrolled/package
$ yarn test
The pageflow-paged-react contains co-located tests inside
src/**/__spec__ directories:
$ cd entry_types/paged/packages/pageflow-paged-react
$ yarn test
To invoke the Rollup build when changing files, run the following command from the repository root:
$ yarn start
The Webpack built for pageflow-paged-react needs to be started separately:
$ cd entry_types/paged/packages/pageflow-paged-react
$ yarn start
To temporarily use a your local version of a package in a host
application, first run yarn link in the package directory:
$ cd my-projects/pageflow/package
$ yarn link
and
$ cd my-projects/pageflow/entry_types/scrolled/package
$ yarn link
In the host application run:
$ cd my-projects/pageflow-host-app
$ yarn link pageflow
and
$ cd my-projects/pageflow-host-app
$ yarn link pageflow-scrolled
Restart the development servers. Note that development watchers need
to be running for the pageflow repository. Run yarn install in the
host application.
You can return to using the version specified in the package.json
file, by running yarn unlink pageflow/yarn unlink pageflow-scrolled and yarn install --force.
If you see errors of the form "hooks can only be called inside the
body of a function component", you need to make sure that only one
copy of React is loaded. In the above setup, there is a copy of React
in my-projects/pageflow/node_modules/react and in
my-projects/pageflow-host-app/node_modules/react. When
pageflow-scrolled is linked, imports of react inside
pageflow-scrolled will load the module from
my-projects/pageflow/node_modules. If there are other packages in
the host application which import react, they will load the module
from the host application's node_modules directory. To fix this, we
need to link the react package so that only the copy from the host
application is used:
$ cd my-projects/pageflow-host-app/node_modules/react
$ yarn link
$ cd my-projects/pageflow/
$ yarn link react
To output a production ready build, run from the repository run:
$ bin/build-packages