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

Add configuration flags to disable integrated type checker #9138

Merged
merged 10 commits into from
Oct 28, 2019
12 changes: 12 additions & 0 deletions packages/next/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2316,6 +2316,18 @@ To learn more about TypeScript checkout its [documentation](https://www.typescri
> **Note**: Next.js does not enable TypeScript's `strict` mode by default.
> When you feel comfortable with TypeScript, you may turn this option on in your `tsconfig.json`.

> **Note**: By default, Next.js reports all TypeScript errors during dev and prevents application build if any are detected.
> If you don't want to leverage this behaviour and prefer to do type checks manually, set the following option in your `next.config.js`:
>
> ```js
> // next.config.js
> module.exports = {
> typescript: {
> transpileOnly: true,
> },
> }
> ```

### Exported types

Next.js provides `NextPage` type that can be used for pages in the `pages` directory. `NextPage` adds definitions for [`getInitialProps`](#fetching-data-and-component-lifecycle) so that it can be used without any extra typing needed.
Expand Down
2 changes: 1 addition & 1 deletion packages/next/build/output/store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ store.subscribe(state => {
}

if (state.typeChecking) {
Log.info('bundled successfully, waiting for typecheck results ...')
Log.info('bundled successfully, waiting for typecheck results...')
return
}

Expand Down
3 changes: 3 additions & 0 deletions packages/next/build/webpack-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,8 @@ export default async function getBaseWebpackConfig(
const useTypeScript = Boolean(
typeScriptPath && (await fileExists(tsConfigPath))
)
const typescriptTranspileOnly =
config.typescript && config.typescript.transpileOnly

const resolveConfig = {
// Disable .mjs for node_modules bundling
Expand Down Expand Up @@ -839,6 +841,7 @@ export default async function getBaseWebpackConfig(
}),
!isServer &&
useTypeScript &&
!typescriptTranspileOnly &&
new ForkTsCheckerWebpackPlugin(
PnpWebpackPlugin.forkTsCheckerOptions({
typescript: typeScriptPath,
Expand Down
4 changes: 3 additions & 1 deletion packages/next/server/hot-reloader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -349,11 +349,13 @@ export default class HotReloader {
async prepareBuildTools(multiCompiler: webpack.MultiCompiler) {
const tsConfigPath = join(this.dir, 'tsconfig.json')
const useTypeScript = await fileExists(tsConfigPath)
const typescriptTranspileOnly =
this.config.typescript && this.config.typescript.transpileOnly

watchCompilers(
multiCompiler.compilers[0],
multiCompiler.compilers[1],
useTypeScript,
useTypeScript && !typescriptTranspileOnly,
({ errors, warnings }) => this.send('typeChecked', { errors, warnings })
)

Expand Down