Remix.run Logo
▲ mikeryan an hour ago

NX Monorepos work that way. Broadly speaking (and with many exceptions) all packages end up in the root. It “builds” release distributions with the correct package.json files and transpiled js.

It helps keep all your related packages on the same dependencies. It’s hell for react native sometimes though.

▲user43928 21 minutes ago | parent [-]

I don't see what you mean.

With nx you define the dependencies between your tasks, so that the packages build in the right order and with caching.

I do not think it changes anything about how packages are installed by the package manager or bundled by the bundler.

You can declare build tools in either the root package.json or packages/a/package.json, and I don't think anything prevents you from bundling something declared in devDependencies.

On second thought, I see now that you probably mean it helps keep shared dependencies at the same version when you declare them in the root package.json.

That's a feature of npm/pnpm/yarn workspaces though, not nx itself. And it only works with bundled dependencies, since they would be undeclared in the package itself and thus couldn't be installed externally. If you need that, I think pnpm catalogs would be the right tool.