This swaps the order of TypeScript transpilation and alias resolution in `@sveltejs/package` to fix #13044. TypeScript sees aliases like `$lib/` as bare imports and does not apply `rewriteRelativeImportExtensions`, and resolving aliases first seems like the correct fix. For more see https://github.com/microsoft/TypeScript/issues/61991#issuecomment-
3046150782
--- /dev/null
+---
+'@sveltejs/package': patch
+---
+
+fix: resolve aliases before transpiling for `rewriteRelativeImportExtensions`
}
}
+ // _before_ transpilining TS, that way TS will apply rewriteRelativeImportExtensions
+ // to these now-resolved path aliases, too
+ contents = resolve_aliases(input, file.name, contents, aliases);
+
if (file.name.endsWith('.ts') && !file.name.endsWith('.d.ts')) {
contents = await transpile_ts(tsconfig, filename, contents);
}
- contents = resolve_aliases(input, file.name, contents, aliases);
analyse_code(file.name, contents);
write(dest, contents);
} else {
--- /dev/null
+export declare const helper: () => string;
--- /dev/null
+export const helper = () => '';
--- /dev/null
+import { helper } from "./helper.ts";
+export { helper };
--- /dev/null
+import { helper } from "./helper.js";
+export { helper };
--- /dev/null
+{
+ "name": "typescript-alias-rewrites",
+ "private": true,
+ "version": "1.0.0",
+ "description": "typescript package with extension rewrites to aliased import paths",
+ "type": "module",
+ "peerDependencies": {
+ "svelte": "^5.0.0"
+ },
+ "exports": {
+ ".": {
+ "types": "./dist/index.d.ts",
+ "svelte": "./dist/index.js"
+ }
+ }
+}
--- /dev/null
+export const helper = () => '';
--- /dev/null
+import { helper } from '$lib/helper.ts';
+export { helper };
--- /dev/null
+import preprocess from 'svelte-preprocess';
+
+export default {
+ preprocess: preprocess()
+};
--- /dev/null
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "module": "ESNext",
+ "allowImportingTsExtensions": true,
+ "rewriteRelativeImportExtensions": true
+ }
+}
await test_make_package('typescript-nodenext');
});
+test('create package with typescript alias extension rewrites', async () => {
+ await test_make_package('typescript-alias-rewrites');
+});
+
// only run this test in newer Node versions
// TODO: remove after dropping support for Node < 22.18
const [major, minor] = process.versions.node.split('.', 2).map((str) => +str);