* docs(docs): add the workspace section for nx.dev * Update docs/map.json Co-Authored-By: Brandon <robertsbt@gmail.com> Co-authored-by: Isaac Mann <isaacplmann+git@gmail.com> Co-authored-by: Brandon <robertsbt@gmail.com>
51 lines
1.9 KiB
Markdown
51 lines
1.9 KiB
Markdown
# Nx Workspace
|
|
|
|
## Files
|
|
|
|
Every Nx workspace has a file structure like this:
|
|
|
|
```treeview
|
|
myorg/
|
|
├── apps/
|
|
├── libs/
|
|
├── tools/
|
|
├── workspace.json
|
|
├── nx.json
|
|
├── package.json
|
|
└── tsconfig.json
|
|
```
|
|
|
|
Nx makes it easy to split up your code into separate projects. Projects come in two varieties - applications and libraries.
|
|
|
|
`/apps/` contains the application projects. These are the main entry point for a runnable application. We recommend keeping applications as light-weight as possible, with all the heavy lifting being done by libraries that are imported by each application.
|
|
|
|
`/libs/` contains the library projects. There are many different kinds of libraries, and each library defines its own external api so that boundaries between libraries remain clear.
|
|
|
|
`/tools/` contains scripts that act on your code base. This could be database scripts, custom builders or workspace schematics.
|
|
|
|
`/workspace.json` defines each project in your workspace and the builder commands that can be run on those projects.
|
|
|
|
`/nx.json` adds extra information about projects, including manually defined dependencies and tags that can be used to restrict the ways projects are allowed to depend on each other.
|
|
|
|
`/tsconfig.json` sets up the global typescript settings and creates aliases for each library to aid when creating typescript imports.
|
|
|
|
## Configuration
|
|
|
|
Many of the tools that Nx provides as plugins have a global configuration file that can be found at the root of workspace and a project-specific configuration file found at the root of each project that overrides the global settings for that project.
|
|
|
|
For instance, `libA` has a `tsconfig.json` file that extends the global `tsconfig.json` file:
|
|
|
|
```treeview
|
|
myorg/
|
|
├── apps/
|
|
├── libs/
|
|
│ └── libA/
|
|
│ ├── src/
|
|
│ └── tsconfig.json
|
|
├── tools/
|
|
├── workspace.json
|
|
├── nx.json
|
|
├── package.json
|
|
└── tsconfig.json
|
|
```
|