Upgrading ts-loader 4 to 5
Breaking4.5.0 → 5.4.5Breaking1Platform1New4Changed2Fixed4Other2
BreakingUpgrade verdict
1 breaking change and a platform requirement change.
In plain terms
- Declaration files (.d.ts) are now written to the correct output location, which may differ from where earlier versions put them.
- The package now declares that it needs TypeScript installed alongside it.
Must act 2 items need code or config changes
What you must change
Breaking1
Fixes the incorrect output path for declaration files, a breaking change.
Platform1
Lists typescript as a peer dependency.
API changes
Generated by DepDelta from published .d.ts files. Not mixed with prose notes.
- changed:
function makeAfterCompile(instance: TSInstance, configFilePath: string | undefined): (compilation: WebpackCompilation, callback: () => void) => void → function makeAfterCompile(instance: TSInstance, configFilePath: string | undefined): (compilation: webpack.compilation.Compilation, callback: () => void) => void
- changed:
function getConfigFile(compiler: typeof typescript, colors: Chalk, loader: Webpack, loaderOptions: LoaderOptions, compilerCompatible: boolean, log: logger.Logger, compilerDetailsLogMessage: string): { configFilePath: string | undefined; configFile: ConfigFile; configFileError: WebpackError | undefined } → function getConfigFile(compiler: typeof typescript, colors: Chalk, loader: webpack.loader.LoaderContext, loaderOptions: LoaderOptions, compilerCompatible: boolean, log: logger.Logger, compilerDetailsLogMessage: string): { configFilePath: string | undefined; configFile: ConfigFile; configFileError: WebpackError | undefined }
- removed:
const ModuleKindCommonJs = 1 - removed:
const ScriptTargetES2015 = 2 - added:
const extensionRegex: RegExp - added:
const jsonRegex: RegExp - added:
const tsxRegex: RegExp
- changed:
function loader(this: Webpack, contents: string): void → function loader(this: webpack.loader.LoaderContext, contents: string): void
- changed:
function getTypeScriptInstance(loaderOptions: LoaderOptions, loader: Webpack): { instance?: TSInstance; error?: WebpackError } → function getTypeScriptInstance(loaderOptions: LoaderOptions, loader: webpack.loader.LoaderContext): { instance?: TSInstance; error?: WebpackError }
- removed:
call AsyncCallback(err: Error | WebpackError | null, source?: string, map?: string): void - removed:
call ResolveSync(context: string | undefined, path: string, moduleName: string): string - removed:
interface AsyncCallback - removed:
interface Compiler - removed:
interface Resolve - removed:
interface ResolveSync - removed:
interface SourceMap - removed:
interface Watcher - removed:
interface Webpack - removed:
interface WebpackCompilation - removed:
interface WebpackCompiler - removed:
interface WebpackNodeWatchFileSystem - removed:
method Watcher.getTimes(): { [filePath: string]: number } - removed:
method WebpackCompiler.isChild(): boolean - removed:
property Compiler.hooks: any - removed:
property Compiler.options: { resolve: Resolve } - removed:
property Compiler.plugin: (name: string, callback: Function) => void - removed:
property Resolve.alias?: { [key: string]: string } - removed:
property Resolve.extensions?: string[] - removed:
property Resolve.fallback?: string | string[] - removed:
property Resolve.modulesDirectories?: string[] - removed:
property Resolve.packageAlias?: (string | string[])[] - removed:
property Resolve.packageMains?: (string | string[])[] - removed:
property Resolve.root?: string | string[] - removed:
property Resolve.unsafeCache?: RegExp | RegExp[] | boolean - removed:
property SourceMap.file: string - removed:
property SourceMap.sources: any[] - removed:
property SourceMap.sourcesContent: string[] - removed:
property Webpack._compiler: Compiler - removed:
property Webpack._module: WebpackModule - removed:
property Webpack.addContextDependency: (directory: string) => void - removed:
property Webpack.addDependency: (file: string) => void - removed:
property Webpack.async: () => AsyncCallback - removed:
property Webpack.cacheable: () => void - removed:
property Webpack.clearDependencies: () => void - removed:
property Webpack.context: string - removed:
property Webpack.data: Object - removed:
property Webpack.emitError: (message: string) => void - removed:
property Webpack.emitFile: (fileName: string, text: string) => void - removed:
property Webpack.emitWarning: (message: string) => void - removed:
property Webpack.query: string - removed:
property Webpack.request: string - removed:
property Webpack.resolve: (context: string, request: string, callback: (err: Error, result: string) => void) => void - removed:
property Webpack.resolveSync: (context: string, request: string) => string - removed:
property Webpack.resource: string - removed:
property Webpack.resourcePath: string - removed:
property Webpack.resourceQuery: string - removed:
property WebpackCompilation.assets: { [index: string]: { size: () => number; source: () => string } } - removed:
property WebpackCompilation.compiler: WebpackCompiler - removed:
property WebpackCompilation.errors: WebpackError[] - removed:
property WebpackCompilation.modules: WebpackModule[] - removed:
property WebpackCompiler.context: string - removed:
property WebpackCompiler.fileTimestamps: Map<string, number> - removed:
property WebpackCompiler.watchFileSystem: WebpackNodeWatchFileSystem - removed:
property WebpackNodeWatchFileSystem.watcher?: Watcher - removed:
property WebpackNodeWatchFileSystem.wfs?: { watcher: Watcher } - changed:
property LoaderOptions.getCustomTransformers?: string | (() => typescript.CustomTransformers | undefined) → property LoaderOptions.getCustomTransformers: string | ((program: typescript.Program) => typescript.CustomTransformers | undefined) - added:
property LoaderOptions.experimentalFileCaching: boolean - added:
property LoaderOptions.projectReferences: boolean - added:
property LoaderOptions.resolveModuleName: CustomResolveModuleName - added:
property LoaderOptions.resolveTypeReferenceDirective: CustomResolveTypeReferenceDirective - added:
property TSFile.projectReference?: { project?: typescript.ResolvedProjectReference; outputFileName?: string } - added:
property TSInstance.appendTsTsxSuffixesIfRequired: (filePath: string) => string - added:
property TSInstance.projectsMissingSourceMaps?: Set<string> - added:
type CustomResolveModuleName = (moduleName: string, containingFile: string, compilerOptions: typescript.CompilerOptions, moduleResolutionHost: typescript.ModuleResolutionHost, parentResolver… - added:
type CustomResolveTypeReferenceDirective = (typeDirectiveName: string, containingFile: string, compilerOptions: typescript.CompilerOptions, moduleResolutionHost: typescript.ModuleResolutionHost, parentR… - added:
type ResolveModuleName = (moduleName: string, containingFile: string, compilerOptions: typescript.CompilerOptions, moduleResolutionHost: typescript.ModuleResolutionHost) => typescript.… - added:
type ResolveSync = (context: string | undefined, path: string, moduleName: string) => string
- added:
enum LogLevel - added:
member LogLevel.ERROR = 3 - added:
member LogLevel.INFO = 1 - added:
member LogLevel.WARN = 2
- changed:
function makeResolver(options: { resolve: Resolve }): ResolveSync → function makeResolver(options: webpack.Configuration): ResolveSync
- changed:
function makeServicesHost(scriptRegex: RegExp, log: logger.Logger, loader: Webpack, instance: TSInstance): typescript.LanguageServiceHost → function makeServicesHost(scriptRegex: RegExp, log: logger.Logger, loader: webpack.loader.LoaderContext, instance: TSInstance, enableFileCaching: boolean, projectReferences?: ReadonlyArray<typescript.ProjectReference>): ServiceHostWhichMayBeCacheable - changed:
function makeWatchHost(scriptRegex: RegExp, log: logger.Logger, loader: Webpack, instance: TSInstance, appendTsSuffixTo: RegExp[], appendTsxSuffixTo: RegExp[]): WatchHost → function makeWatchHost(scriptRegex: RegExp, log: logger.Logger, loader: webpack.loader.LoaderContext, instance: TSInstance, projectReferences?: ReadonlyArray<typescript.ProjectReference>): WatchHost - added:
interface ServiceHostWhichMayBeCacheable - added:
property ServiceHostWhichMayBeCacheable.clearCache: Action | null - added:
property ServiceHostWhichMayBeCacheable.servicesHost: typescript.LanguageServiceHost - added:
type Action = () => void
- changed:
function appendSuffixIfMatch(patterns: RegExp[], path: string, suffix: string): string → function appendSuffixIfMatch(patterns: RegExp[], filePath: string, suffix: string): string - changed:
function appendSuffixesIfMatch(suffixDict: { [suffix: string]: RegExp[] }, path: string): string → function appendSuffixesIfMatch(suffixDict: { [suffix: string]: RegExp[] }, filePath: string): string - added:
function ensureProgram(instance: TSInstance): typescript.Program | undefined - added:
function getAndCacheOutputJSFileName(inputFileName: string, projectReference: typescript.ResolvedProjectReference, instance: TSInstance): string - added:
function getAndCacheProjectReference(filePath: string, instance: TSInstance): typescript.ResolvedProjectReference | undefined - added:
function isUsingProjectReferences(instance: TSInstance): boolean - added:
function supportsProjectReferences(instance: TSInstance): true | undefined - added:
function validateSourceMapOncePerProject(instance: TSInstance, loader: webpack.loader.LoaderContext, jsFileName: string, project: typescript.ResolvedProjectReference): void
- changed:
function makeWatchRun(instance: TSInstance): (compiler: WebpackCompiler, callback: () => void) => void → function makeWatchRun(instance: TSInstance): (compiler: webpack.Compiler, callback: () => void) => void