Replace absolute paths to relative paths for package compilation.
I'll add to this over time. Submit PR's if you like. Tag me on them.
First, install tsconfig-replace-paths
as devDependency using yarn or npm.
yarn add -D tsconfig-replace-paths
or
npm install --save-dev tsconfig-replace-paths
"scripts": {
"build": "tsc --project tsconfig.json && tsconfig-replace-paths --project tsconfig.json",
}
You can also setup a seperate tsconfig file just for types if you are also compiling with Babel. Assuming you're compiling CommonJs, make a tsconfig.types.cjs.json
. See examples of both CommonJs and ESM in the examples
folder within repo.
{
"extends": "./tsconfig",
"compilerOptions": {
"module": "commonjs",
"rootDir": "./src",
"outDir": "dist/commonjs",
"declaration": true,
"declarationMap": false,
"isolatedModules": false,
"noEmit": false,
"allowJs": false,
"emitDeclarationOnly": true
},
"exclude": ["**/*.test.ts"]
}
And then target that. Your final build script might look like this. You first compile to CommonJs using Babel, and then build the types using the Typescript Compiler, tsc
, followed by fixing the paths them with tsconfig-replace-paths
. If only tsc
did this for you.
"config": {
"dirBuild": "./dist",
"dirSrc": "./src",
},
"scripts": {
"build:commonjs": "yarn nuke:build && cross-env BABEL_ENV=commonjs babel $npm_package_config_dirSrc --out-dir $npm_package_config_dirBuild --extensions \".ts,.tsx,.js,.jsx\" --source-maps inline",
"build:types:commonjs": "tsc --project tsconfig.types.cjs.json && tsconfig-replace-paths --project tsconfig.types.cjs.json",
"build:types": "yarn build:types:commonjs",
"build": "yarn build:commonjs && yarn build:types",
"nuke:build": "rm -rf $npm_package_config_dirBuild",
}
flag | description | default |
---|---|---|
-p --project | project configuration file (tsconfig.json) | undefined |
-s --src | source code root directory (overrides the tsconfig provided) | undefined |
-o --out | output directory of transpiled code (tsc --outDir) (overrides the tsconfig provided) | undefined |
-v --verbose | console.log all the events | false |