mirror of
https://github.com/mattermost/mattermost.git
synced 2026-04-13 04:57:45 -04:00
* simplify CODEOWNERS * dont .gitignore AGENTS.md * AGENTS.md to document previous CODEOWNERS responsibilities * update from https://developers.mattermost.com/contribute/more-info/server/schema-migration-guide/ * CREATE INDEX CONCURRENTLY now vetted * rewrite and move to README.md * dont limit to 80 chars * rewrite webapp AGENTS.md and add to README.md --------- Co-authored-by: Mattermost Build <build@mattermost.com>
37 lines
2.6 KiB
Markdown
37 lines
2.6 KiB
Markdown
# Mattermost Web App
|
|
|
|
This folder contains the client code for the Mattermost web app. It's broken up into multiple packages each of which either contains an area of the app (such as `playbooks`) or shared logic used across other packages (such as the packages located in the `platform` directory). For anyone who's used to working in [the mattermost/mattermost-webapp repo](https://github.com/mattermost/mattermost-webapp), most of that is now located in `channels`.
|
|
|
|
## npm Workspaces
|
|
|
|
To interact with a workspace using npm, such as to add a dependency or run a script, use the `--workspace` (or `--workspaces`) flag. This can be done when using built-in npm commands such as `npm add` or when running scripts. Those commands should be run from this directory.
|
|
|
|
```sh
|
|
# Add a dependency to a single package
|
|
npm add react --workspace=playbooks
|
|
|
|
# Build multiple packages
|
|
npm run build --workspace=platform/client --workspace=platform/components
|
|
|
|
# Test all workspaces
|
|
npm test --workspaces
|
|
|
|
# Clean all workspaces that have a clean script defined
|
|
npm run clean --workspaces --if-present
|
|
```
|
|
|
|
To install dependencies for a workspace, simply run `npm install` from this folder as you would do normally. Most packages' dependencies will be included in the root `node_modules`, and all packages' dependencies will appear in the `package-lock.json`. A `node_modules` will only be created inside a package if one of its dependencies conflicts with that of another package.
|
|
|
|
## Useful Links
|
|
|
|
- [Developer setup](https://developers.mattermost.com/contribute/developer-setup/), now included with the Mattermost server developer setup
|
|
- [Web app developer documentation](https://developers.mattermost.com/contribute/more-info/webapp/)
|
|
|
|
### Dependency Changes
|
|
|
|
Any PR that modifies `package.json` or `package-lock.json` needs extra scrutiny:
|
|
|
|
- **No duplicate libraries.** Before adding a new dependency, check whether an existing one already covers the same use case. Multiple libraries for the same purpose (e.g., two different date pickers, or Bootstrap 3 and Bootstrap 4 simultaneously) create long-term upgrade pain.
|
|
- **License check.** New dependencies must not use GPL or similarly restrictive licenses. Dependencies with no license at all should also be flagged.
|
|
- **Justify the addition.** A new dependency should solve a real problem that existing code or dependencies don't already address. Push back on adding packages for trivial functionality.
|
|
- **Version conflicts.** Check whether the new dependency introduces conflicting peer dependency versions. Cascading version conflicts are expensive to untangle later and have historically blocked upgrades for months.
|