mirror of
https://github.com/ezolenko/rollup-plugin-typescript2.git
synced 2025-12-08 19:06:16 +00:00
Merge branch 'fix-declaration-map-sources' of https://github.com/agilgur5/rollup-plugin-typescript2 into agilgur5-fix-declaration-map-sources_2
This commit is contained in:
commit
ee33209beb
@ -46,7 +46,7 @@ The plugin inherits all compiler options and file lists from your `tsconfig.json
|
||||
* `noEmit`: false
|
||||
* `inlineSourceMap`: false (see [#71](https://github.com/ezolenko/rollup-plugin-typescript2/issues/71))
|
||||
* `outDir`: `./placeholder` in cache root, see [83](https://github.com/ezolenko/rollup-plugin-typescript2/issues/83) and [Microsoft/TypeScript/issues/24715](https://github.com/Microsoft/TypeScript/issues/24715)
|
||||
* `declarationDir`: `process.cwd()` (*only if `useTsconfigDeclarationDir` is false in the plugin options*)
|
||||
* `declarationDir`: Rollup's `output.file` or `output.dir` (*only if `useTsconfigDeclarationDir` is false in the plugin options*)
|
||||
* `moduleResolution`: `node` (*`classic` is [deprecated](https://www.typescriptlang.org/docs/handbook/module-resolution.html). It also breaks this plugin, see [#12](https://github.com/ezolenko/rollup-plugin-typescript2/issues/12) and [#14](https://github.com/ezolenko/rollup-plugin-typescript2/issues/14)*)
|
||||
* `allowNonTsExtensions`: true to let other plugins on the chain generate typescript, update plugin's include filter to pick them up (see [#111](https://github.com/ezolenko/rollup-plugin-typescript2/issues/111))
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@ import * as _ from "lodash";
|
||||
import { join } from "path";
|
||||
import { IContext } from "./context";
|
||||
|
||||
export function getOptionsOverrides({ useTsconfigDeclarationDir, cacheRoot, cwd }: IOptions, preParsedTsconfig?: tsTypes.ParsedCommandLine): tsTypes.CompilerOptions
|
||||
export function getOptionsOverrides({ useTsconfigDeclarationDir, cacheRoot }: IOptions, preParsedTsconfig?: tsTypes.ParsedCommandLine): tsTypes.CompilerOptions
|
||||
{
|
||||
const overrides: tsTypes.CompilerOptions = {
|
||||
noEmitHelpers: false,
|
||||
@ -24,11 +24,9 @@ export function getOptionsOverrides({ useTsconfigDeclarationDir, cacheRoot, cwd
|
||||
if (preParsedTsconfig.options.module === undefined)
|
||||
overrides.module = tsModule.ModuleKind.ES2015;
|
||||
|
||||
const declaration = preParsedTsconfig.options.declaration;
|
||||
if (!declaration)
|
||||
// only set declarationDir if useTsconfigDeclarationDir is enabled
|
||||
if (!useTsconfigDeclarationDir)
|
||||
overrides.declarationDir = undefined;
|
||||
if (declaration && !useTsconfigDeclarationDir)
|
||||
overrides.declarationDir = cwd;
|
||||
|
||||
// unsetting sourceRoot if sourceMap is not enabled (in case original tsconfig had inlineSourceMap set that is being unset and would cause TS5051)
|
||||
const sourceMap = preParsedTsconfig.options.sourceMap;
|
||||
|
||||
26
src/index.ts
26
src/index.ts
@ -12,11 +12,13 @@ import { parseTsConfig } from "./parse-tsconfig";
|
||||
import { printDiagnostics } from "./print-diagnostics";
|
||||
import { TSLIB, TSLIB_VIRTUAL, tslibSource, tslibVersion } from "./tslib";
|
||||
import { blue, red, yellow, green } from "colors/safe";
|
||||
import { relative } from "path";
|
||||
import { relative, dirname, resolve as pathResolve } from "path";
|
||||
import { normalize } from "./normalize";
|
||||
import { satisfies } from "semver";
|
||||
import findCacheDir from "find-cache-dir";
|
||||
import { PluginImpl, PluginContext, InputOptions, OutputOptions, TransformResult, Plugin } from "rollup";
|
||||
|
||||
import { PluginImpl, PluginContext, InputOptions, OutputOptions, MinimalPluginContext, TransformResult, SourceMap, Plugin } from "rollup";
|
||||
|
||||
import { createFilter } from "./get-options-overrides";
|
||||
|
||||
type RPT2Options = Partial<IOptions>;
|
||||
@ -365,11 +367,27 @@ const typescript: PluginImpl<RPT2Options> = (options) =>
|
||||
}
|
||||
else
|
||||
{
|
||||
const relativePath = relative(pluginOptions.cwd, fileName);
|
||||
// don't mutate the entry because generateBundle gets called multiple times
|
||||
let entryText = entry.text
|
||||
const declarationDir = (_output.file ? dirname(_output.file) : _output.dir) as string;
|
||||
const cachePlaceholder = `${pluginOptions.cacheRoot}/placeholder`
|
||||
|
||||
// modify declaration map sources to correct relative path
|
||||
if (extension === ".d.ts.map") {
|
||||
const parsedText = JSON.parse(entryText) as SourceMap;
|
||||
// invert back to absolute, then make relative to declarationDir
|
||||
parsedText.sources = parsedText.sources.map(source => {
|
||||
const absolutePath = pathResolve(cachePlaceholder, source);
|
||||
return relative(declarationDir, absolutePath);
|
||||
});
|
||||
entryText = JSON.stringify(parsedText);
|
||||
}
|
||||
|
||||
const relativePath = relative(cachePlaceholder, fileName);
|
||||
context.debug(() => `${blue("emitting declarations")} for '${key}' to '${relativePath}'`);
|
||||
this.emitFile({
|
||||
type: "asset",
|
||||
source: entry.text,
|
||||
source: entryText,
|
||||
fileName: relativePath,
|
||||
});
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user