ente/web/docs/dev.md

76 lines
2.3 KiB
Markdown
Raw Normal View History

2024-03-30 12:23:01 +00:00
# Development
## Yarn commands
### yarn dev:*
Launch the app in development mode. There is one `yarn dev:foo` for each app,
e.g. `yarn dev:auth`. `yarn dev` is a shortcut for `yarn dev:photos`.
The ports are different for the main apps (3000), various sidecars (3001, 3002).
### yarn build:*
Build a production export for the app. This is a bunch of static HTML/JS/CSS
that can be then deployed to any web server.
There is one `yarn build:foo` for each app, e.g. `yarn build:auth`. The output
will be placed in `apps/<foo>/out`, e.g. `apps/auth/out`.
### yarn preview:*
Build a production export and start a local web server to serve it. This uses
Python's built in web server, and is okay for quick testing but should not be
used in production.
The ports are the same as that for `yarn dev:*`
### lint, lint-fix
Use `yarn lint` to check that your code formatting is as expected, and that
there are no linter errors. Use `yarn lint-fix` to try and automatically fix the
issues.
2024-03-11 09:50:52 +00:00
2024-02-16 04:30:21 +00:00
## Monorepo
The monorepo uses Yarn (classic) workspaces.
To run a command for a workspace `<ws>`, invoke `yarn workspace <ws> <cmd>` from
2024-03-04 15:11:27 +00:00
the root folder instead the `yarn <cmd>` youd have done otherwise. For
2024-02-21 11:40:31 +00:00
example, to start a development server for the `photos` app, we can do
```sh
2024-02-21 11:40:31 +00:00
yarn workspace photos next dev
```
2024-02-16 04:30:21 +00:00
2024-02-21 11:40:31 +00:00
There is also a convenience alias, `yarn dev:photos`. See `package.json` for the
2024-02-21 11:50:09 +00:00
full list of such aliases. The two common patterns are `dev:<app-name>` for
running a local development server, and `build:<app-name>` for creating a
production build.
2024-02-21 11:40:31 +00:00
2024-02-22 06:52:07 +00:00
> Tip: `yarn dev` is a shorcut for `yarn dev:photos`
2024-02-21 11:48:55 +00:00
Note that yarn does not automatically update `node_modules` if you switch to a
branch that has added or modified dependencies. So if you encounter unexpected
2024-02-21 13:59:22 +00:00
errors on switching branches, make sure that your `node_modules` is up to date
2024-02-22 06:52:07 +00:00
by running `yarn install` first.
> `yarn` is a shortcut for `yarn install`
2024-02-21 11:48:55 +00:00
2024-02-16 04:30:21 +00:00
To add a local package as a dependency, use `<package-name>@*`. The "*" here
denotes any version.
```sh
yarn workspace photos add '@/utils@*'
```
> Note: The yarn (classic) command above causes harmless but noisy diffs in
> `yarn.lock` when adding or removing dependencies to the workspaces. To fix
> them, run `yarn` again once to reset these unnecessary changes.
2024-02-16 04:30:21 +00:00
To see what packages depend on each other locally, use
```sh
yarn workspaces info
```