Skip to content

Latest commit

 

History

History
52 lines (31 loc) · 2.24 KB

README.md

File metadata and controls

52 lines (31 loc) · 2.24 KB

parcel-resolver-tspaths

Parcel does not make use of tsconfig.json to resolve path aliases, and instead uses package.json (reference). This Parcel v2 plugin enables typescript path alias resolution as you would normally expect with webpack or otherwise. As a bonus, intellisense will continue to provide suggestions from your tsconfig.

Installation (~3.1kB minified, 0 dependencies)

  • yarn add -D parcel-resolver-tspaths

    or

    npm install --save-dev parcel-resolver-tspaths

  • Ensure all parcel packages are set to minimum version ^2.0.0 and that Parcel is configured for Typescript.

  • In your .parcelrc, be sure to properly extend the default config and add the plugin to your resolvers like so:

    "extends": "@parcel/config-default",
    "resolvers": ["...", "parcel-resolver-tspaths"],
    "transformers": {
      "*.{ts,tsx}": ["@parcel/transformer-typescript-tsc"]
    },
    "validators": {
      "*.{ts,tsx}": ["@parcel/validator-typescript"]
    },

And that's it. Note: the order of resolvers is sequential, and I highly recommend keeping this resolver after the base resolvers due to parcel bugs.

If you're lazy like me, you might be interested in my package that auto-generates your tsconfig paths as you code. You can read more about tsconfig-paths-autogen here.

Caveats

  • This plugin does not support Typescript aliases while importing non-code assets, but this is being considered for future development.

    For example:

    import logo from 'url:@myassets/image/logo.svg';
  • Please file an issue if you notice any bugs. Thanks!

Development

Clone this repo anywhere, then run yarn && yarn link in the project root.

In any parcel app, run yarn && yarn link parcel-resolver-tspaths. Then follow normal build procedures. Real tests coming soon.

If you run into issues viewing verbose output, you can see all raw output by running yarn test |& cat (Mac/Linux users only).