3.4 KiB
Local Component Development
Summary
Our team needs to be able quickly fix potential issues discovered in status-web
and make progress independently of the status-web
release process. To achieve
these goals, we will maintain our own git fork of status-web
, while always
trying to upstream our work.
In this repository, we will include our fork of status-web
as a git submodule
that is used as a local dependency in the yarn workspace in order to make it
very easy to experiment with changes to status-web
while maintaining the ability
to prepare clean feature branches that will be submitted as PRs to the upstream repo.
Workflow
When facing an issue in status-web or aiming to introduce a new feature or component, it's highly beneficial to be able to assess your modifications in real-time within nimbus-gui. Regrettably, achieving this seamlessly with the tooling provided by yarn isn't straightforward. Hence, our custom scripts offer a viable alternative.
I. Switch to local component development mode
To begin local component development, run the following command:
yarn local_deps:begin
This command will:
- Check and update the
status-web
submodule if necessary - Build the
status-web
packages - Replace the
@status-im/components
package installed by yarn with the local version we just built
Now we depend on the local version of @status-im/components
and can make changes to it
II. Make the required changes
Inside the vendor/status-web
directory, you can find the source code. For example,
if you want to make changes to the components, they are located in vendor/status-web/packages/components
.
Now in order to make changes and examine them in real-time, you can follow the steps below:
- Make the required changes
- Build and install the changes running:
yarn local_deps:build
- Examine the changes in
nimbus-gui
's dev environment
III. Push the changes to our status-web
fork
Once you are satisfied with the changes, you can push them to our fork of status-web
- Navigate to the
vendor/status-web
directory and examine the changescd vendor/status-web git status
Do not mind the changes in the following files, you should not commit them:
apps/mobile/package.json
,packages/colors/package.json
,packages/icons/package.json
,yarn.lock
- Commit your changes
git checkout -b <your-branch-name> git add <your-changes> git commit git push
- Create a PR to the
nimbus-gui/status-web
repository
IV. Exit local component development mode
Now with the changes pushed to our fork of status-web
, you can exit the local
component development mode by running the following command:
yarn local_deps:end
This will check if you have any uncommitted changes and will remind you to commit
them if you do. It will also restore the original @status-im/components
package,
by installing it with yarn.
V. Update packages and submodule
Having the PR merged, you can update the @status-im/components
package and
the status-web
submodule in nimbus-gui
.
- Update the
@status-im/components
package by setting the correct revision in thepackage.json
file and runyarn install
- Update the
status-web
submodule:cd vendor/status-web git pull cd ../.. git add vendor/status-web git commit -m "chore(vendor): Update status-web submodule"