Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support newer moduleResolution kinds, update build to TS 5.x #453

Merged
merged 10 commits into from Jul 17, 2023
2 changes: 1 addition & 1 deletion .github/workflows/nodejs.yml
Expand Up @@ -16,7 +16,7 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
node-version: [12.x, 14.x, 16.x, 18.x, 20.x]
node-version: [18.x, 20.x]
os: [ubuntu-latest, windows-latest, macOS-latest]

steps:
Expand Down
2 changes: 1 addition & 1 deletion __tests__/get-options-overrides.spec.ts
Expand Up @@ -22,12 +22,12 @@ const forcedOptions: ts.CompilerOptions = {
allowNonTsExtensions: true,
importHelpers: true,
inlineSourceMap: false,
moduleResolution: ts.ModuleResolutionKind.NodeJs,
noEmit: false,
noEmitOnError: false,
noEmitHelpers: false,
noResolve: false,
outDir: `${cacheDir}/placeholder`,
moduleResolution: ts.ModuleResolutionKind.Node10,
};

const defaultPreParsedTsConfig: ts.ParsedCommandLine = {
Expand Down
2 changes: 1 addition & 1 deletion dist/get-options-overrides.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 12 additions & 1 deletion dist/rollup-plugin-typescript2.cjs.js
Expand Up @@ -27834,11 +27834,22 @@ function getOptionsOverrides({ useTsconfigDeclarationDir, cacheRoot }, preParsed
noEmitOnError: false,
inlineSourceMap: false,
outDir: pluginutils.normalizePath(`${cacheRoot}/placeholder`),
moduleResolution: tsModule.ModuleResolutionKind.NodeJs,
allowNonTsExtensions: true,
moduleResolution: tsModule.ModuleResolutionKind.Node10,
};
if (!preParsedTsconfig)
return overrides;
switch (preParsedTsconfig.options.moduleResolution) {
ezolenko marked this conversation as resolved.
Show resolved Hide resolved
case tsModule.ModuleResolutionKind.Node10:
case tsModule.ModuleResolutionKind.Node16:
case tsModule.ModuleResolutionKind.NodeNext:
overrides.moduleResolution = preParsedTsconfig.options.moduleResolution;
break;
case tsModule.ModuleResolutionKind.Classic:
case tsModule.ModuleResolutionKind.Bundler:
default:
overrides.moduleResolution = tsModule.ModuleResolutionKind.Node10;
}
if (preParsedTsconfig.options.module === undefined)
overrides.module = tsModule.ModuleKind.ES2015;
// only set declarationDir if useTsconfigDeclarationDir is enabled
Expand Down
2 changes: 1 addition & 1 deletion dist/rollup-plugin-typescript2.cjs.js.map

Large diffs are not rendered by default.

13 changes: 12 additions & 1 deletion dist/rollup-plugin-typescript2.es.js
Expand Up @@ -27805,11 +27805,22 @@ function getOptionsOverrides({ useTsconfigDeclarationDir, cacheRoot }, preParsed
noEmitOnError: false,
inlineSourceMap: false,
outDir: normalizePath(`${cacheRoot}/placeholder`),
moduleResolution: tsModule.ModuleResolutionKind.NodeJs,
allowNonTsExtensions: true,
moduleResolution: tsModule.ModuleResolutionKind.Node10,
};
if (!preParsedTsconfig)
return overrides;
switch (preParsedTsconfig.options.moduleResolution) {
case tsModule.ModuleResolutionKind.Node10:
case tsModule.ModuleResolutionKind.Node16:
case tsModule.ModuleResolutionKind.NodeNext:
overrides.moduleResolution = preParsedTsconfig.options.moduleResolution;
break;
case tsModule.ModuleResolutionKind.Classic:
case tsModule.ModuleResolutionKind.Bundler:
default:
overrides.moduleResolution = tsModule.ModuleResolutionKind.Node10;
}
if (preParsedTsconfig.options.module === undefined)
overrides.module = tsModule.ModuleKind.ES2015;
// only set declarationDir if useTsconfigDeclarationDir is enabled
Expand Down
2 changes: 1 addition & 1 deletion dist/rollup-plugin-typescript2.es.js.map

Large diffs are not rendered by default.

17 changes: 10 additions & 7 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -65,7 +65,7 @@
"rollup-plugin-typescript2": "0.34.0",
"ts-jest": "^28.0.0",
"tslint": "6.1.3",
"typescript": "^4.6.3"
"typescript": "^5.1.3"
},
"repository": {
"type": "git",
Expand Down
15 changes: 14 additions & 1 deletion src/get-options-overrides.ts
Expand Up @@ -16,13 +16,26 @@ export function getOptionsOverrides({ useTsconfigDeclarationDir, cacheRoot }: IO
noEmitOnError: false,
inlineSourceMap: false,
outDir: normalize(`${cacheRoot}/placeholder`), // need an outdir that is different from source or tsconfig parsing trips up. https://github.com/Microsoft/TypeScript/issues/24715
moduleResolution: tsModule.ModuleResolutionKind.NodeJs,
allowNonTsExtensions: true,
moduleResolution: tsModule.ModuleResolutionKind.Node10,
ezolenko marked this conversation as resolved.
Show resolved Hide resolved
};

if (!preParsedTsconfig)
return overrides;

switch (preParsedTsconfig.options.moduleResolution)
{
case tsModule.ModuleResolutionKind.Node10:
case tsModule.ModuleResolutionKind.Node16:
case tsModule.ModuleResolutionKind.NodeNext:
overrides.moduleResolution = preParsedTsconfig.options.moduleResolution;
break;
case tsModule.ModuleResolutionKind.Classic:
case tsModule.ModuleResolutionKind.Bundler:
default:
overrides.moduleResolution = tsModule.ModuleResolutionKind.Node10;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm gonna need to review this in a lot more detail (need to catch up on TS changes since 5.x hit GA and refresh myself on this codebase), but I mentioned mjs support and bundler in #434 (comment).

bundler actually seemed the most appropriate at the time (since Rollup is a bundler) for Node16+, particularly due to the file extension issues. That's actually why I didn't implement support for mjs / cjs earlier because the file extension requirement could break many things (that and no user requested it)

Copy link
Owner Author

@ezolenko ezolenko Jun 30, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, this basically lowest effort to let users use more moduleResolution values without figuring out exactly what the differences are.

Copy link
Collaborator

@agilgur5 agilgur5 Jul 11, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I think bundler should not be overwritten either. With that change and README modifications about this, I think we could approve and merge this in.

Without tests though, we won't be able to confirm some of the behavior of node16 / nodeNext (particularly around file extensions) -- it is possible we may need to override those two to bundler as well

}

ezolenko marked this conversation as resolved.
Show resolved Hide resolved
if (preParsedTsconfig.options.module === undefined)
overrides.module = tsModule.ModuleKind.ES2015;

Expand Down