Skip to content
This repository was archived by the owner on Dec 26, 2022. It is now read-only.

Commit b533981

Browse files
committed
Fork TS Checker
Added Type Checking for Typescript files at build time
1 parent ff7fa08 commit b533981

File tree

4 files changed

+20
-20
lines changed

4 files changed

+20
-20
lines changed

package.json

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,9 @@
4949
"react-dom": "^17.0.2",
5050
"styled-components": "^5.3.0",
5151
"terser-webpack-plugin": "^5.2.4",
52-
"ts-loader": "^9.2.5",
5352
"typescript": "^4.2.4",
5453
"webpack": "^5.52.1",
55-
"webpack-cli": "^4.7.0",
56-
"webpack-merge": "^5.7.3"
54+
"webpack-cli": "^4.7.0"
5755
},
5856
"devDependencies": {
5957
"@pmmmwh/react-refresh-webpack-plugin": "^0.4.3",
@@ -99,9 +97,7 @@
9997
"ts-jest": "^27.0.5",
10098
"ts-node": "^10.2.1",
10199
"webpack-bundle-analyzer": "^4.4.2",
102-
"webpack-dev-server": "^4.2.0"
103-
},
104-
"peerDependencies": {
105-
"react-is": "16.8.0"
100+
"webpack-dev-server": "^4.2.0",
101+
"fork-ts-checker-webpack-plugin": "^6.3.3"
106102
}
107103
}

src/stories/Counter.stories.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// YourComponent.stories.js
22
import { Story } from '@storybook/react';
33
import Counter from 'components/Counter';
4+
import React from 'react';
45

56
// This default export determines where your story goes in the story list
67
export default {

webpack.config.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import DotEnvWebpackPlugin from 'dotenv-webpack';
77
import ReactRefreshWebpackPlugin from '@pmmmwh/react-refresh-webpack-plugin';
88
import HtmlWebpackPlugin from 'html-webpack-plugin';
99
import CopyWebpackPlugin from 'copy-webpack-plugin';
10+
import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin';
1011

1112
export default ({ env }: { env: string }) => {
1213
const isEnvDevelopment = env === 'development';
@@ -44,12 +45,23 @@ export default ({ env }: { env: string }) => {
4445
],
4546
});
4647

48+
const ForkTS = new ForkTsCheckerWebpackPlugin({
49+
async: isEnvDevelopment,
50+
typescript: {
51+
enabled: true,
52+
configFile: path.join(__dirname, 'tsconfig.json'),
53+
mode: 'write-references',
54+
},
55+
logger: { infrastructure: 'webpack-infrastructure', issues: 'console', devServer: true },
56+
});
57+
4758
return {
4859
target: 'web',
4960
mode: isEnvProduction ? 'production' : isEnvDevelopment && 'development',
5061
bail: isEnvProduction,
5162
entry: { main: path.join(__dirname, 'src', 'index.tsx'), vendor: ['react', 'react-dom'] },
5263
devtool: isEnvProduction ? 'source-map' : isEnvDevelopment && 'cheap-module-source-map',
64+
stats: isEnvDevelopment ? 'minimal' : isEnvProduction && 'normal',
5365
output: {
5466
clean: true,
5567
path: path.join(__dirname, 'build'),
@@ -126,6 +138,7 @@ export default ({ env }: { env: string }) => {
126138
Copy,
127139
isEnvProduction && MiniCss,
128140
isEnvDevelopment && ReactRefresh,
141+
isEnvDevelopment && ForkTS,
129142
].filter(Boolean),
130143
} as Configuration;
131144
};

yarn.lock

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7551,7 +7551,7 @@ enhanced-resolve@^4.5.0:
75517551
memory-fs "^0.5.0"
75527552
tapable "^1.0.0"
75537553

7554-
enhanced-resolve@^5.0.0, enhanced-resolve@^5.8.0:
7554+
enhanced-resolve@^5.8.0:
75557555
version "5.8.2"
75567556
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz#15ddc779345cbb73e97c611cd00c01c1e7bf4d8b"
75577557
integrity sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==
@@ -8581,7 +8581,7 @@ fork-ts-checker-webpack-plugin@4.1.6, fork-ts-checker-webpack-plugin@^4.1.6:
85818581
tapable "^1.0.0"
85828582
worker-rpc "^0.1.0"
85838583

8584-
fork-ts-checker-webpack-plugin@^6.0.4:
8584+
fork-ts-checker-webpack-plugin@^6.0.4, fork-ts-checker-webpack-plugin@^6.3.3:
85858585
version "6.3.3"
85868586
resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.3.3.tgz#73a9d8e1dc5821fa19a3daedc8be7568b095c8ab"
85878587
integrity sha512-S3uMSg8IsIvs0H6VAfojtbf6RcnEXxEpDMT2Q41M2l0m20JO8eA1t4cCJybvrasC8SvvPEtK4B8ztxxfLljhNg==
@@ -11916,7 +11916,7 @@ micromatch@^3.1.10, micromatch@^3.1.4:
1191611916
snapdragon "^0.8.1"
1191711917
to-regex "^3.0.2"
1191811918

11919-
micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4:
11919+
micromatch@^4.0.2, micromatch@^4.0.4:
1192011920
version "4.0.4"
1192111921
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
1192211922
integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==
@@ -16078,16 +16078,6 @@ ts-jest@^27.0.5:
1607816078
semver "7.x"
1607916079
yargs-parser "20.x"
1608016080

16081-
ts-loader@^9.2.5:
16082-
version "9.2.5"
16083-
resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.2.5.tgz#127733a5e9243bf6dafcb8aa3b8a266d8041dca9"
16084-
integrity sha512-al/ATFEffybdRMUIr5zMEWQdVnCGMUA9d3fXJ8dBVvBlzytPvIszoG9kZoR+94k6/i293RnVOXwMaWbXhNy9pQ==
16085-
dependencies:
16086-
chalk "^4.1.0"
16087-
enhanced-resolve "^5.0.0"
16088-
micromatch "^4.0.0"
16089-
semver "^7.3.4"
16090-
1609116081
ts-node@^10.2.1:
1609216082
version "10.2.1"
1609316083
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.2.1.tgz#4cc93bea0a7aba2179497e65bb08ddfc198b3ab5"

0 commit comments

Comments
 (0)