ts-transform-paths
Use this to load modules whose location is specified in the paths section of tsconfig.json.
Install
yarn add ts-transform-paths -D
Requirement
TypeScript >= 2.4.1
How to use
Unfortunately, TypeScript itself does not currently provide any easy way to use custom transformers (See https://github.com/Microsoft/TypeScript/issues/14419). The followings are the example usage of the custom transformer.
tsconfig.json
{
"compilerOptions": {
"paths": {
"@schema": ["./src/schema"],
"@modules/*": ["./src/modules/*"]
}
}
}
webpack (with ts-loader or awesome-typescript-loader)
// webpack.config.js
const pathsTransformer = require("ts-transform-paths").default;
module.exports = {
// ...
module: {
rules: [
{
test: /\.ts$/,
loader: "ts-loader", // or 'awesome-typescript-loader'
options: {
getCustomTransformers: (program) => ({
before: [pathsTransformer(program)]
})
}
}
]
}
};
Rollup (with rollup-plugin-typescript2)
// rollup.config.js
import typescript from "rollup-plugin-typescript2";
import pathsTransformer from "ts-transform-paths";
export default {
// ...
plugins: [
typescript({
transformers: [
(service) => ({
before: [pathsTransformer(service.getProgram())],
after: []
})
]
})
]
};
ttypescript
See ttypescript's README for how to use this with module bundlers such as webpack or Rollup.
// tsconfig.json
{
"compilerOptions": {
// ...
"plugins": [{ "transform": "ts-transform-paths" }]
}
// ...
}
ts-node
// my-ts-script.ts
import { MyClass } from "@schema";
const myClass = new MyClass("Message");
// index.js
const pathsTransformer = require("ts-transform-paths").default;
require("ts-node").register({
transformers: {
before: [pathsTransformer()]
}
});
require("./my-ts-script");
and run
yarn node ./index.js