diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f03c57e5..b2e9697fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## v8.0.5 +* [Fixed deprecation warnings on webpack@5](https://github.com/TypeStrong/ts-loader/issues/1194) - thanks @sanex3339 + ## v8.0.4 * [Uses existing instance if config file is same as already built solution](https://github.com/TypeStrong/ts-loader/pull/1177) - thanks @sheetalkamat diff --git a/package.json b/package.json index e2514f2e4..bceb649e4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ts-loader", - "version": "8.0.4", + "version": "8.0.5", "description": "TypeScript loader for webpack", "main": "index.js", "types": "dist", diff --git a/src/index.ts b/src/index.ts index 6ceb4adf5..8282e9d21 100644 --- a/src/index.ts +++ b/src/index.ts @@ -632,6 +632,7 @@ function getTranspilationEmit( reportDiagnostics: true, fileName, }); + const module = loaderContext._module; addDependenciesFromSolutionBuilder(instance, fileName, file => loaderContext.addDependency(path.resolve(file)) @@ -644,11 +645,19 @@ function getTranspilationEmit( instance.loaderOptions, instance.colors, instance.compiler, - { module: loaderContext._module }, + { module }, loaderContext.context ); - loaderContext._module.errors.push(...errors); + /** + * Since webpack 5, the `errors` property is deprecated, + * so we can check if some methods for reporting errors exist. + */ + if (module.addError) { + errors.forEach(error => module.addError(error)); + } else { + module.errors.push(...errors); + } } return { outputText, sourceMapText }; diff --git a/src/instances.ts b/src/instances.ts index 527d89f44..95ac680e2 100644 --- a/src/instances.ts +++ b/src/instances.ts @@ -146,6 +146,7 @@ function successfulTypeScriptInstance( } } + const module = loader._module; const basePath = loaderOptions.context || path.dirname(configFilePath || ''); const configParseResult = getConfigParseResult( compiler, @@ -165,7 +166,15 @@ function successfulTypeScriptInstance( loader.context ); - loader._module.errors.push(...errors); + /** + * Since webpack 5, the `errors` property is deprecated, + * so we can check if some methods for reporting errors exist. + */ + if (module.addError) { + errors.forEach(error => module.addError(error)); + } else { + module.errors.push(...errors); + } return { error: makeError( @@ -415,6 +424,7 @@ export function reportTranspileErrors( if (!instance.reportTranspileErrors) { return; } + const module = loader._module; instance.reportTranspileErrors = false; // happypack does not have _module.errors - see https://github.com/TypeStrong/ts-loader/issues/336 if (!instance.loaderOptions.happyPackMode) { @@ -431,7 +441,15 @@ export function reportTranspileErrors( { file: instance.configFilePath || 'tsconfig.json' }, loader.context ); - loader._module.errors.push(...solutionErrors, ...errors); + /** + * Since webpack 5, the `errors` property is deprecated, + * so we can check if some methods for reporting errors exist. + */ + if (module.addError) { + [...solutionErrors, ...errors].forEach(error => module.addError(error)); + } else { + module.errors.push(...solutionErrors, ...errors); + } } }