nx/docs/shared/workspace-overview.md
Isaac Mann 9d20b031bb
docs(docs): add the workspace section for nx.dev (#2832)
* 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>
2020-04-09 09:10:44 -04:00

1.9 KiB

Nx Workspace

Files

Every Nx workspace has a file structure like this:

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:

myorg/
├── apps/
├── libs/
│   └── libA/
│       ├── src/
│       └── tsconfig.json
├── tools/
├── workspace.json
├── nx.json
├── package.json
└── tsconfig.json