update-ts-references

If your repository is a multi package repository (via lerna.js, yarn workspaces or pnpm workspaces) in combination with project references from TypeScript, this tool will be very helpful by reading dependencies out of the package.json and applying them to the tsconfig.json as references.

Usage no npm install needed!

<script type="module">
  import updateTsReferences from 'https://cdn.skypack.dev/update-ts-references';
</script>

README

update-ts-references

Test

If your repository is a multi package repository (via lerna.js, yarn workspaces or pnpm workspaces) in combination with project references from TypeScript, this tool will be very helpful by reading dependencies out of the package.json and applying them to the tsconfig.json as references.

There's a blog post that's a good introduction to it Optimizing multi-package apps with TypeScript Project References.

Usage

You can just use it via npx

npx update-ts-references --help

  Usage: update-ts-references [options]

  Options:
    --configName  The name of the config files which needs to be updated. Default: tsconfig.json
    --check       Checks if updates would be necessary (without applying them)
    --help        Show help
    --cwd         Set working directory. Default: [current path]
    --discardComments     Discards comments when updating tsconfigs. Default: false
    --verbose     Show verbose output. Default: false

or you add it as dev dependency and include it in the postinstall script in the package.json

yarn add update-ts-references --dev -W

 "scripts": {
   "postinstall": "update-ts-references"
 },
 "husky": {
    "hooks": {
      "pre-push": "update-ts-references --check"
    }
  },

FAQ

Why is my pnpm workspace alias not working?

update-ts-references is currently not supporting Referencing workspace packages through aliases yet. See issue #13

Where are the comments from my tsconfig?

update-ts-references is not able to preserve comments in tsconfig files when it is updating the references. If you need comments for the case like, explaining why compiler options are set, please move this part including comments into a second file and use the extends functionallity (see here).

License

Copyright 2020 mobile.de Developer: Mirko Kruschke

Use of this source code is governed by an MIT-style license that can be found in the LICENSE file or at https://opensource.org/licenses/MIT.