From f499ddeceb4ffdf26edf5758da6495d69ef73e6b Mon Sep 17 00:00:00 2001 From: Anton Gilgur Date: Mon, 3 Feb 2020 18:56:26 -0500 Subject: [PATCH] (fix): declarationMaps (*.d.ts.map) should have correct `sources` - when declarationDir is set, `sources` gets set correctly, but otherwise its relative path will be incorrect - so always set declarationDir to paths.appDist --- src/createRollupConfig.ts | 6 +++--- test/fixtures/build-default/tsconfig.json | 1 + test/tests/tsdx-build.test.js | 18 +++++++++++++++++- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/createRollupConfig.ts b/src/createRollupConfig.ts index b8255c881..11207403c 100644 --- a/src/createRollupConfig.ts +++ b/src/createRollupConfig.ts @@ -155,6 +155,7 @@ export async function createRollupConfig( compilerOptions: { sourceMap: true, declaration: true, + declarationDir: paths.appDist, jsx: 'react', }, }, @@ -165,9 +166,8 @@ export async function createRollupConfig( }, }, check: !opts.transpileOnly, - useTsconfigDeclarationDir: Boolean( - tsconfigJSON?.compilerOptions?.declarationDir - ), + // declarationDir is used internally above as a default + useTsconfigDeclarationDir: true, }), babelPluginTsdx({ exclude: 'node_modules/**', diff --git a/test/fixtures/build-default/tsconfig.json b/test/fixtures/build-default/tsconfig.json index 7f2bd50c5..47810bce0 100644 --- a/test/fixtures/build-default/tsconfig.json +++ b/test/fixtures/build-default/tsconfig.json @@ -3,6 +3,7 @@ "module": "ESNext", "lib": ["dom", "esnext"], "declaration": true, + "declarationMap": true, "sourceMap": true, "rootDir": "./src", "strict": true, diff --git a/test/tests/tsdx-build.test.js b/test/tests/tsdx-build.test.js index b38887193..f4b7b6a7c 100644 --- a/test/tests/tsdx-build.test.js +++ b/test/tests/tsdx-build.test.js @@ -3,6 +3,8 @@ */ const shell = require('shelljs'); +const fs = require('fs-extra'); + const util = require('../fixtures/util'); shell.config.silent = false; @@ -42,6 +44,17 @@ describe('tsdx build', () => { expect(lib.foo()).toBe('bar'); }); + it('should create declarationMap files (*.d.ts.map) correctly', async () => { + util.setupStageWithFixture(stageName, 'build-default'); + + shell.exec('node ../dist/index.js build'); + + expect(shell.test('-f', 'dist/index.d.ts.map')).toBeTruthy(); + + const dtsmap = await fs.readJSON('dist/index.d.ts.map'); + expect(dtsmap.sources[0]).toBe('../src/index.ts'); + }); + it('should clean the dist directory before rebuilding', () => { util.setupStageWithFixture(stageName, 'build-default'); @@ -102,7 +115,7 @@ describe('tsdx build', () => { expect(code).toBe(0); }); - it('should use the declarationDir when set in tsconfig', () => { + it('should use the declarationDir when set in tsconfig', async () => { util.setupStageWithFixture(stageName, 'build-withTsconfig'); const output = shell.exec('node ../dist/index.js build --format esm,cjs'); @@ -120,6 +133,9 @@ describe('tsdx build', () => { expect(shell.test('-f', 'typings/index.d.ts')).toBeTruthy(); expect(shell.test('-f', 'typings/index.d.ts.map')).toBeTruthy(); + const dtsmap = await fs.readJSON('typings/index.d.ts.map'); + expect(dtsmap.sources[0]).toBe('../src/index.ts'); + expect(output.code).toBe(0); });