Giter Club home page Giter Club logo

resolve-tspaths's Introduction

resolve-tspaths

npm license

If you use Typescript's path mapping feature to avoid ../../../../../ in your imports, you may have found that compiling with tsc doesn't convert your aliases to proper relative paths. This causes problems as the compiled JavaScript code can't actually run with those path aliases - you'll get a "module not found" error. If your project exports type definitions, your .d.ts files will also be broken if they are shipped with path aliases.

Use this package after tsc builds your code to replace any path aliases with relative paths - this means that you can develop using path aliases whilst still being able to ship working JavaScript code.

Sample tsconfig.json:

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "~/*": ["./src/*"]
    }
  },
}

The following types of paths are currently supported:

CommonJS imports

const { ... } = require("~/some/path");

ESM imports

import * as stuff from "~/some/path";
import stuff from "~/some/path";
import { stuff } from "~/some/path.js";
import { stuff as myStuff } from "~/some/path.mjs";

ESM dynamic imports

const stuff = await import("~/some/path");

ESM exports

export * from "~/some/path";
export * as stuff from "~/some/path";
export { stuff } from "~/some/path.js";
export { stuff as myStuff } from "~/some/path.mjs";

Node.JS require.resolve

const path = require.resolve("~/some/path");

CLI Usage

  1. Install as a dev dependency using npm or yarn, along with Typescript 3.x or later.

    yarn add -D resolve-tspaths typescript
    npm install --save-dev resolve-tspaths typescript
  2. Add it as a part of your build script in package.json after tsc.

    {
      "scripts": {
        "build": "tsc && resolve-tspaths"
      }
    }

Programmatic Usage

  1. Install as a dev dependency using npm or yarn, along with Typescript 3.x or later.

    yarn add -D resolve-tspaths typescript
    npm install --save-dev resolve-tspaths typescript
  2. Import the resolveTsPaths function and call it with the appropriate options.

    import { resolveTsPaths } from "resolve-tspaths";

Options

resolve-tspaths uses some reasonable defaults. For most cases, you probably won't need to specify any options.

--project <path>, -p <path>

Specify the path to the tsconfig file that the program should use. Defaults to "tsconfig.json" if not provided.

--src <path>, -s <path>

Specify the source directory. Defaults to compilerOptions.rootDir from your tsconfig if not provided. If rootDir is not defined in your tsconfig, it will default to "src".

--out <path>, -o <path>

Specify the output directory of the compiled code where resolve-tspaths should perform its changes. Defaults to compilerOptions.outDir from your tsconfig if not provided.

--ext <extension...>

Provide a space-delimited list of file extensions in the output directory that the program should process. Defaults to the following extensions:

  • js
  • mjs
  • cjs
  • d.ts
  • d.mts
  • d.cts

--verbose

Use this flag to print verbose logs to the console.

This option is only available when using the CLI.

--noEmit

Use this flag to not emit any changes to your files. Recommended to be used with --verbose for debugging which files the program will change if you don't use --noEmit.

This option is only available when using the CLI.

Comparison to existing packages

tsconfig-paths is a runtime dependency. resolve-tspaths is used at build time, which means your shipped code doesn't need to have this package included, and can run natively using Node or in the browser.

Performs the same function as tscpaths - but that project is no longer maintained. A pain point with that package was also that it no control over the logging which was extremely verbose. resolve-tspaths provides several more options for better control, and it's also well tested.

Inspiration

This project was heavily inspired by tscpaths by joonhocho, but it is sadly no longer maintained. My first attempt at building this library was based on a fork of tscpaths. Since the project has matured, it was moved out to its own repository.

Contributors

Thanks goes to these wonderful people (emoji key):


Ben Yap

๐Ÿ’ป โš ๏ธ ๐Ÿ“–

Chocobozzz

๐Ÿ’ป โš ๏ธ ๐Ÿ›

qiaoruntao

๐Ÿ’ป โš ๏ธ

Felix Viernickel

๐Ÿ› โš ๏ธ ๐Ÿ’ป

Kaic Bastidas

๐Ÿค”

Atlinx

๐Ÿค”

Victor Vincent

๐Ÿค” ๐Ÿ›

Forest

๐Ÿ›

Zebreus

๐Ÿ› โš ๏ธ ๐Ÿ’ป

This project follows the all-contributors specification. Contributions of any kind welcome! Please follow the contributing guidelines.

License

See LICENSE.

resolve-tspaths's People

Contributors

4nickel avatar allcontributors[bot] avatar benyap avatar chocobozzz avatar dependabot[bot] avatar qiaoruntao avatar renovate[bot] avatar zebreus avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.