https://github.com/bnaya/typescript-monorepo-toolkit
CLI tool to automate typescript mono-repo management
https://github.com/bnaya/typescript-monorepo-toolkit
Last synced: 12 days ago
JSON representation
CLI tool to automate typescript mono-repo management
- Host: GitHub
- URL: https://github.com/bnaya/typescript-monorepo-toolkit
- Owner: Bnaya
- Created: 2019-11-20T03:22:02.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-06T02:17:38.000Z (over 2 years ago)
- Last Synced: 2025-05-07T22:10:04.144Z (12 days ago)
- Language: TypeScript
- Size: 1.75 MB
- Stars: 38
- Watchers: 1
- Forks: 3
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# typescript-monorepo-toolkit
## CLI tool to automatically setup typescript project references for yarn workspaces monorepos and other tasks
It can inject the appropriate tsconfig.references for all of the packages in a yarn workspace, and also help you change `rootDir` and `outDir` across all of the packages
Background / Motivation:
* 100+ packages monorepo that i want to move to project refs
* [#32028](https://github.com/microsoft/TypeScript/pull/32028) Build-Free Editing for Project References
* [Infer project references from common monorepo patterns / tools #25376](https://github.com/microsoft/TypeScript/issues/25376)How to use
```sh
npx typescript-monorepo-toolkit inject-refs ../path-to/yarn-project-root
```For debug info
```sh
DEBUG=typescript-monorepo-toolkit npx typescript-monorepo-toolkit inject-refs ../path-to/yarn-project-root
``````sh
Usage: [options] [command]Options:
-V, --version output the version number
-p, --tsconfig-path Use alterative config path inside the package. eg: test/tsconfig.json (default: "tsconfig.json")
-h, --help output usage informationCommands:
inject-refs [options] Inject the appropriate tsconfig references based on yarn workspaces dependency graph
set-outDir [newOutDir] Set the compilerOptions.outDir in all of the packages. omit new value to delete
set-rootDir [newRootDir] Set the compilerOptions.rootDir in all of the packages. omit new value to delete
set-extend [extendedTsconfigPath] Set the extends entry in all of the tsconfigs. omit new value to delete
```## How does it work
`yarn workspaces info` command has all the info we need.
The `tsconfig.json` manipulation is done using [recast](https://github.com/benjamn/recast), as `tsconfig.json` is not really JSON, so we can keep the comments. Unfortunately recast changes some of the formatting of the file.
This tool might break your tsconfigs
**Please run this tool on a clean git state, and inspect the diff**## Future possible improvements
* Become obsolete when [#25376](https://github.com/microsoft/TypeScript/issues/25376) is fixed
* Find a good name
* Support `tsconfig.test.json` and similar patterns
* Support lerna/other monorepo tools that can provider us with the dependency graph### Need TypeScript/JavaScript help with your open-source project? Feel free to contact me directly!
### Need TypeScript/JavaScript help in your company? [I'm available for consultation](http://bit.ly/2QJ4zk6) :)