Skip to content

Commit 16ab793

Browse files
committed
feat: first attempt at implementing resolve-typescript-plugin
1 parent e8b8c26 commit 16ab793

File tree

3 files changed

+395
-9
lines changed

3 files changed

+395
-9
lines changed

index.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import {ResolveOptions} from "webpack";
2+
3+
type Resolver = NonNullable<ResolveOptions["resolver"]>;
4+
5+
const pluginName = "ResolveTypescriptPlugin";
6+
7+
export default class ResolveTypescriptPlugin {
8+
public apply(resolver: Resolver): void {
9+
const target = "file";
10+
resolver.ensureHook(target);
11+
resolver.getHook("raw-file").tapAsync(pluginName, (request, resolveContext, callback) => {
12+
const path = request.path && request.path.replace(/\.js$/, ".ts");
13+
if (path === request.path) {
14+
callback();
15+
} else {
16+
resolver.doResolve(
17+
target,
18+
{
19+
...request,
20+
path,
21+
relativePath:
22+
request.relativePath && request.relativePath.replace(/\.js$/, ".ts")
23+
},
24+
`using path: ${path}`,
25+
resolveContext,
26+
callback
27+
);
28+
}
29+
});
30+
}
31+
}

package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,11 @@
3636
"prettier": "2.2.1",
3737
"semantic-release": "17.4.2",
3838
"ts-node": "9.1.1",
39-
"typescript": "4.2.4"
39+
"typescript": "4.2.4",
40+
"webpack": "5.35.0"
41+
},
42+
"peerDependencies": {
43+
"webpack": "^5.0.0"
4044
},
4145
"eslintConfig": {
4246
"root": true,

0 commit comments

Comments
 (0)