Skip to content

Commit dfd4de3

Browse files
authored
fix(typescript): fix ESM build (#1311)
Do not use named imports from TypeScript
1 parent fa80acc commit dfd4de3

File tree

11 files changed

+40
-13
lines changed

11 files changed

+40
-13
lines changed

packages/typescript/src/customTransformers.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
import { BuilderProgram, CustomTransformers, Program, TypeChecker } from 'typescript';
1+
import type { BuilderProgram, CustomTransformers, Program, TypeChecker } from 'typescript';
22

33
import type { CustomTransformerFactories, TransformerStage, TransformerFactory } from '../types';
4-
54
/**
65
* Merges all received custom transformer definitions into a single CustomTransformers object
76
*/

packages/typescript/src/moduleResolution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {
1+
import type {
22
ModuleResolutionHost,
33
ResolvedModuleFull,
44
ResolvedProjectReference,

packages/typescript/src/options/plugin.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import * as defaultTs from 'typescript';
1+
import defaultTs from 'typescript';
22

33
import type { RollupTypescriptOptions, PartialCompilerOptions } from '../../types';
44
import { getTsLibPath } from '../tslib';

packages/typescript/src/options/tsconfig.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@ import { readFileSync } from 'fs';
22
import { dirname, resolve } from 'path';
33

44
import { PluginContext } from 'rollup';
5-
import {
5+
import typescript from 'typescript';
6+
import type {
67
Diagnostic,
78
ExtendedConfigCacheEntry,
89
MapLike,
9-
ModuleKind,
10-
ModuleResolutionKind,
1110
ParsedCommandLine,
1211
ProjectReference,
1312
TypeAcquisition,
@@ -28,6 +27,7 @@ import {
2827
} from './interfaces';
2928
import { normalizeCompilerOptions, makePathsAbsolute } from './normalize';
3029

30+
const { ModuleKind, ModuleResolutionKind } = typescript;
3131
export interface TypeScriptConfig {
3232
autoSetSourceMap: boolean;
3333
options: CompilerOptions;

packages/typescript/src/preflight.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { PluginContext, RollupOptions } from 'rollup';
2-
import { ModuleKind } from 'typescript';
2+
import typescript from 'typescript';
33

44
import { TypeScriptConfig } from './options/tsconfig';
55
// import { resolveIdAsync } from './tslib';
66

7+
const { ModuleKind } = typescript;
78
interface PreflightOptions {
89
config: TypeScriptConfig;
910
context: PluginContext;

packages/typescript/src/tslib.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { fileURLToPath } from 'url';
2+
13
import resolve, { SyncOpts } from 'resolve';
24

35
// const resolveIdAsync = (file: string, opts: AsyncOpts) =>
@@ -19,7 +21,8 @@ export const getTsLibPath = () => {
1921
try {
2022
// eslint-disable-next-line no-underscore-dangle
2123
return resolveId(process.env.__TSLIB_TEST_PATH__ || 'tslib/tslib.es6.js', {
22-
basedir: __dirname
24+
// @ts-ignore import.meta.url is allowed because the Rollup plugin injects the correct module format
25+
basedir: fileURLToPath(new URL('.', import.meta.url))
2326
});
2427
} catch (_) {
2528
return null;

packages/typescript/src/watchProgram.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { PluginContext } from 'rollup';
2-
import { DiagnosticCategory } from 'typescript';
3-
2+
import typescript from 'typescript';
43
import type {
54
Diagnostic,
65
EmitAndSemanticDiagnosticsBuilderProgram,
@@ -17,6 +16,7 @@ import { DiagnosticsHost } from './diagnostics/host';
1716
import { Resolver } from './moduleResolution';
1817
import { mergeTransformers } from './customTransformers';
1918

19+
const { DiagnosticCategory } = typescript;
2020
type BuilderProgram = EmitAndSemanticDiagnosticsBuilderProgram;
2121

2222
// @see https://github.com/microsoft/TypeScript/blob/master/src/compiler/diagnosticMessages.json

packages/typescript/test/fixtures/incremental-single/tsconfig.tsbuildinfo

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

packages/typescript/test/node_modules/current-package

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/typescript/test/test.mjs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { fileURLToPath } from 'url';
2+
3+
import test from 'ava';
4+
5+
import { rollup } from 'rollup';
6+
7+
import typescript from 'current-package';
8+
9+
import { getCode, onwarn } from '../../../util/test.js';
10+
11+
test.beforeEach(() => process.chdir(fileURLToPath(new URL('.', import.meta.url))));
12+
13+
test.serial('works as ESM build', async (t) => {
14+
const bundle = await rollup({
15+
input: 'fixtures/basic/main.ts',
16+
plugins: [typescript({ tsconfig: 'fixtures/basic/tsconfig.json', target: 'es5' })],
17+
onwarn
18+
});
19+
const code = await getCode(bundle, { format: 'es' });
20+
21+
t.false(code.includes('number'), code);
22+
t.false(code.includes('const'), code);
23+
});

0 commit comments

Comments
 (0)