- Bug fix: add config file as build dependency - thanks @alexander-akait
- Bug fix: Use custom transformer when building solution references [#1025] - thanks @feosuna1
- Hotfix: Disable
enhanced-resolve
- thanks @manuth
- Add Support for Resolving
.cjs
,.mjs
,.cts
and.mts
Files [#1503] - thanks @manuth
- Bug fix: Generate declaration files for js files if allowJs is set to true [#1260] - thanks @hediet and @mvilliger
- simplify configuration for fork-ts-checker-webpack-plugin - thanks @piotr-oles
- make v9 latest following v8 release - thanks @johnnyreilly
- Bug fix: support webpack 5 in ts-loader [#1438] - thanks @einatbar
- cater for change in resolveTypeReferenceDirective API in TypeScript 4.7 [#1421] - thanks @johnny_reilly and @cspotcode for inspiration in ts-node work here: TypeStrong/ts-node#1648
- Docs fix for thread-loader / history - thanks @johnnyreilly
- Add function to get the latest program - thanks @Zn4rK
- Fix undefined configPath now falls back to default - thanks @johnnyreilly
- Fix error message for invalid getCustomTransformers modules - thanks @blaky
- Start consuming webpack loader types - thanks @johnnyreilly
- Add webpack minimum version in peerDependencies - thanks @afdev82
- Make v9 latest in npm again - thanks @johnnyreilly
- Fixed impossibility to have several instances of ts-loader with different compiler options - thanks @timocov
- Fix removed files handling in watch mode - thanks @gasnier
- update CHANGELOG.md for 8.2.0 release - thanks @johnnyreilly
- Use caches for module resolution and type reference directives when using compiler default functions - thanks @sheetalkamat - uses: microsoft/TypeScript#43700
- Remove usage of loader-utils - thanks @jonwallsten
- Use correct hook for emitting additional assets during compilation - thanks @jonwallsten
Breaking changes:
- minimum webpack version: 5
- minimum node version: 12
Changes:
- webpack 5 migration - thanks @johnnyreilly, @jonwallsten, @sokra, @appzuka, @alexander-akait
- fix: cater for change in resolveTypeReferenceDirective API in 4.7 - thanks @dragomirtitian
- This is a backport from v9.2.7 for webpack 4 compatibility
- Fixed impossibility to have several instances of ts-loader with different compiler options - thanks @timocov
- This is a backport from v9.2.0 for webpack 4 compatibility
- Use caches for module resolution and type reference directives when using compiler default functions - thanks @sheetalkamat - uses: microsoft/TypeScript#43700
- This is a backport from v9.1.0 for webpack 4 compatibility
- feat: remove top-level typescript import statements - thanks @ulivz
- Perf: Optimize fileExists callback path - thanks @berickson1
- Included correct webpack source location in emitted errors - thanks @lorenzodallavecchia
- Re-Fixed missing errors in watch mode in webpack5 - thanks @appzuka
- Update definition files in watch mode in webpack@5 - thanks @appzuka,@JonWallsten,@alexander-akait
- Add afterDeclarations to getCustomTransformers in README.md - thanks @appzuka
- Upgrade
chalk
,loader-utils
, andsemver
to latest stable versions - thanks Avi Vahl
- Speed up builds by adding an in-memory cache to file path lookups - thanks @berickson1
- Instead of checking date, check time thats more accurate to see if something has changed - thanks @sheetalkamat
- Fixed build failing in yarn v2 pnp - thanks @aicest
- Fixed missing errors in watch mode in webpack5 - thanks @appzuka
- Fixed build failing when using thread-loader - thanks @valerio
- Fixed memory leak when using multiple webpack instances - thanks @valerio
- Speeds up project reference build and doesnt store the result in memory - thanks @sheetalkamat
- Fixed further deprecation warning on webpack@5 - thanks @appzuka
- Fixed deprecation warnings on webpack@5 - thanks @sanex3339
- Uses existing instance if config file is same as already built solution - thanks @sheetalkamat
- Fix the wrong instance caching when using
appendTsSuffixTo
andappendTsxSuffixTo
together - thanks @meowtec
- Fix 2 issues with experimentalWatchApi - thanks @appzuka
- Fix webpack deprecations - thanks @g-plane
- Support for symlinks in project references - thanks @sheetalkamat!
ts-loader
now supports TypeScript 3.6 and greater BREAKING CHANGE
- Add a delay before starting the comparison tests to avoid failures under WSL - thanks @appzuka
- Apply other loaders when updating files in watch mode - thanks @iorate
- Ensure that JSON files are included in build module resolution - thanks @berickson1
- Make content hash consistent across machines - thanks @elyalvarado
- fix: watch-run - thanks @zn4rk
- Project reference support enhancements - thanks @sheetalkamat!
- Following the end of life of Node 8,
ts-loader
no longer supports Node 8 BREAKING CHANGE
- Enable typescript 3.8.3 support when using
webpack.config.ts
files - thanks @vladimiry!
- Output types alongside JS files, enable declaration maps - thanks @meyer!
- Emitting .tsbuildinfo when using watch api - thanks @sheetalkamat!
- don't emit declaration files for a declaration file (#1014) - thanks @gvinaccia!
- Consume typescript apis from typescript nightly - thanks @sheetalkamat!
- Fix SolutionBuilder watches and related fixes (#998) - thanks @sheetalkamat!
- fix: no errors reported if flagged with @ts-check (#1004) - thanks @reinholdk!
- Build upstream project references with SolutionBuilder (#851, #913) - thanks @sheetalkamat!
- Fix issue when handling files not included in tsconfig.json (#934) - thanks @davazp!
- Upgrade typescript version to 3.5.2 (#954) - thanks @fa93hws
- Set configFilePath when reading config file (#939) - thanks @konpikwastaken!
- Fix issue with
resolveTypeReferenceDirective
causing errors likeCannot find name 'it'
with Jest (#934) (#919) - thanks @andrewbranch! - Fix TypeScript diagnostics not being printed to console when using project references (#932) - thanks @andrewbranch!
- Drop support for node < 8.6 related to micromatch upgrade to 4; see: TypeStrong#929
- Update dependencies - thanks @johnnyreilly!
- use @types/webpack for loader typings - thanks @LukeSheard!
- refactor: add common appendTsTsxSuffixesIfRequired function to instance - thanks @johnnyreilly!
- feat: resolveTypeReferenceDirective support for yarn PnP - thanks @johnnyreilly!
- fix: don't include anything apart from ts-loader in publish - thanks @johnnyreilly!
- fix: Pass ts.Program to getCustomTransformers (#860) - thanks @andersekdahl!
- feat: enable experimentalFileCaching by default (#868) - thanks @timocov!
- fix: projectReferences with rootDir (#868) - thanks @andrewbranch!
- feat: Exposes a
resolveNodeModule
option - thanks @arcanis!
- feat: Micro-optimizations - thanks @johnnyreilly
- feat: Lists typescript as a peer dependency - thanks @arcanis!
- feat: Initial support for project references -
projectReferences
- thanks @andrewbranch!
- fix(getTranspilationEmit): pass the raw path to transpileModule - thanks @Brooooooklyn
- feat: Added cache for some FS operations while compiling -
experimentalFileCaching
- thanks @timocov!
- feat: Fixed issue with incorrect output path for declaration files - thanks @JonWallsten! BREAKING CHANGE
- feat: Added support for TypeScript declaration map - thanks @JonWallsten!
- fix(loader): new Error to webpack when errors occured in the loader function - thanks @linxiaowu66 and @systemmetaphor!
- fix(types): expose public interfaces from root index.d.ts - thanks @Hotell!
- feat: generate ambient types from implementation - thanks @Hotell!
- error when not using webpack 4 - thanks @johnnyreilly
- Fix options caching when ts-loader is used in multiple rules - thanks @yyx990803!
Please note, this bug fix requires that vue-loader users still using v14 should either upgrade to v15 or explicitly pass the same ts-loader options via v14's loaders option. See more details here
- Fix dependency resolution when using pnpm - thanks @xbtsw and @zkochan!
- Add
allowTsInNodeModules
option for importing .ts files from node_modules - thanks @aelawson!
- Pass `context' to error formatters - thanks @gustavderdrache!
- Fix slow
experimentalWatchApi
(#746) - thanks @sheetalkamat and @MLoughry! - feat:
getCustomTransformers
support path string for a module - thanks @vagusX and @s-panferov (upon whose work this is based I believe)
- Fix name collision in experimentalWatchApi code - thanks @MLoughry!
- Support webpack 4
- Drop support for webpack 2/3 BREAKING CHANGE - use ts-loader 3.x if you need webpack 2/3 support
- Minimum TypeScript version is now 2.4.1 BREAKING CHANGE
- Deprecated option
entryFileCannotBeJs
removed' BREAKING CHANGE - Start using prettier for the codebase
- Add trace for traceResolution - thanks @onigoetz!
- local .d.ts files now marked as changed when watch is triggered - thanks @KnisterPeter!
- Fixes to support watch api for compiling - lib support etc - thanks @sheetalkamat!
- Report diagnostics only on certain files with
reportFiles
option - thanks @freeman! - Replaced option
contextAsConfigBasePath
withcontext
option. Strictly speaking a breaking change. However, given the original option was never able to fulfil its intended purpose I've decided to treat this as just a new feature; there seems no possibility that anyone can be usingcontextAsConfigBasePath
- thanks @christiantinauer! - Added support for the new watch api of TypeScript compiler. nb This feature has been placed behind a new
experimentalWatchApi
option until it has been thoroughly tested. All being well it is likely to become the default behaviour for ts-loader in future - thanks @sheetalkamat!
- Add new loader option
contextAsConfigBasePath
- thanks @christiantinauer
- Fix error importing buildt ts files with allowJs (#667) - thanks @Pajn!
- Add
onlyCompileBundledFiles
option which modifies behaviour to load only those files that are actually bundled by webpack #267 - thanks @maier49! - Chore release; upgraded chalk dependency in
package.json
to 2.3, as 2.3 is another breaking changes release (from a TypeScript perspective)., see here for context - thanks @johnnyreilly
- Chore release; upgraded chalk dependency in
package.json
to 2.2, as 2.2 appears to be a breaking changes release. - thanks @lmk123 for reporting
- Chore release; upgraded chalk dependency. - thanks @johnnyreilly
- Fix allowJs @types resolution error (#657, #655) - thanks @johnnyreilly and @roddypratt + @ldrick for providing minimal repro repos which allowed me to fix this long standing bug!
This fix resolves the issue for TypeScript 2.4+ (which is likely 95% of users). For those people stuck on 2.3 or below and impacted by this issue, you should be able to workaround this by setting entryFileCannotBeJs: true
in your ts-loader options. This option should be considered deprecated as of this release. The option will likely disappear with the next major version of ts-loader which will drop support for TypeScript 2.3 and below, thus removing the need for this option.
All changes were made with this PR - thanks @johnnyreilly
(Published to npm as v3.0.2 due to npm publishing issues) thanks @mattlewis92 for noticing!
- drop support for typescript < 2.0 (no-one seems to be using it and we can simplify the code) BREAKING CHANGE
- remove
entryFileIsJs
option; it can be inferred from whether theallowJs
TypeScript compiler option has been set. - move to webpack 3.0 for test harness
- drop
configFileName
support (replaced byconfigFile
) BREAKING CHANGE - add support for a custom formatter for output - drop visual studio format (this can be added back if there's clamour for it and people can supply their own formatters in the interim) BREAKING CHANGE
- make loglevel warn by default (stop outputting typescript version number by default). Fixes #488
- fix tsc has "module" default to "es2015"when targetting es2015+, but ts-loader does not - thanks @Venryx for the suggestion!
- switch to build ts-loader / run tests with yarn because of this
- allow controlling whether the output can contain colours
- Start validating the options supplied to the loader (#629) - thanks @johnnyreilly!
- Fix kills ts-loader dependant builds issue (#626) - thanks @Loilo!
- Add an additional check for js files before reusing isExternalLibaryImport (#620) - thanks @WillMartin!
- Make TypeScript
basePath
configurable (#618) - thanks @Loilo! - Fix relative configFile path (#617) - thanks @Loilo!
- Add
configFile
option - thanks @Loilo!
- fix(tsconfig): stop passing rootDir option to TypeScript compiler (#597) - thanks @Brooooooklyn
- Fix findConfigFile in Windows (#604) - thanks @mengxy
- Move to use strictNullChecks - thanks @johnnyreilly
allowJs
supports importing types from external libraries (#586, #577) - thanks @bsouthga!
- Fix undefined watcher in watch-run causes error (#585) - thanks @zinserjan and @sokra!
- add appendTsxSuffixTo option to support using tsx with Vue - lots of discussion went into this PR. Thanks to @vhqtvn (author) and @HerringtonDarkholme, @johnnyreilly, @jbrantly, @octref, @rhyek and others for helping us land on our final implementation.
- refactor: Use chalk instead of colors - thanks @develar!
- Remove default of setting isolatedModules to true when in transpileOnly mode - thanks @johnnyreilly and @donaldpipowitch
- Report errors in JS(X) files when CheckJS is enabled - thanks @schmuli!
- Cater for change to @types acquisition strategy in TypeScript 2.4.1 - thanks @johnnyreilly
- Support custom transformers for ts - thanks @longlho and @Igorbek!
- Add happypack compatibility mode - thanks @aindlq!
- Don't include appended TS extension in webpack dependencies - thanks again @wearymonkey!
- Fix performance regression related to using getTimes() by tracking timestamps - thanks @wearymonkey
- make watch resilient to no watcher / watcher.mtimes - thanks @bancek and @mredbishop
- move to using loader-utils 1.0
- Add support for IgnoringWatchFileSystem - thanks @herschel666
- Use native Object.assign() - thanks @arusakov
Breaking changes:
- ts-loader now officially only supports webpack 2. ts-loader 2.x may work with webpack 1 but it is not supported. Related to that, all continuous integration tests now run against webpack 2.
- as webpack 2 does not support node 0.12 neither does ts-loader from now. node 4 at least is required.
- Fix bug when "extend"ing a tsconfig that specifies "allowJs" Thanks @cspotcode
- Minor perf optimisations
- Rolled back re-exported const enums no longer break emit in watch mode as performance cost was too high resolves #393
- Introduce meaningful error when importing TypeScript from
node_modules
- Introduce
entryFileIsJs
loader option which allows having an entry file which is js. resolves #388 and #401 - thanks @Wykks and @pqr.
NB Previously the entryFileIsJs
option was on by default when allowJs
was true. Now it has to be specified directly. Strictly speaking this is a breaking change; however given this is a rarely used option which exists for what is arguably an edge case this is being added without moving to 2.0. If this breaks people then we'll never do this again; I'd be surprised if anyone is relying on this though so we're taking a chance. Related tests have been suffixed "-entryFileIsJs" in the test name.
- Re-exported const enums no longer break emit in watch mode [#376] - thanks @smphhh
- typescript.sys should be compiler.sys [#379] - thanks @johnnyreilly and @jbrantly
- Fix TS module resolution paths on Windows - watch mode becomes faster [#372] - thanks @smphhh
- Crash when adding/removing files in watch-mode [#358] - thanks @jbbr for the suggested fix
- Provided an option to produce Visual Studio compatible error output [#355] - thanks @gamli
- Added support for vuejs via
appendTsSuffixTo
option [#270] - thanks @HerringtonDarkholme
- General refactor of ts-loader; some performance improvements [#335] - thanks @johnnyreilly
- Make the loader resilient to watched declaration files being removed. - thanks @opichals
- Improve performance for watch mode /
after-compile
plugin - thanks @Strate
- Make logging to stderr or stdout configurable; introduce logging levels [#214] - thanks @ThYpHo0n
- Fix regression that broke hot module replacement [#321] - thanks @dopare
- Added support for allowJs (#316) - thanks @dschnare
- Added support for @types (#247) -thanks @basarat for the ideas
- Normalize dependency graph paths - Fix broken dependencies on Windows - thanks @pzavolinsky
- Fixed the declaration issue (#214 part deux) - thanks @dizel3d
- Made ts-loader compatible with node v6 - thanks @Blechhirn
- Fixed the declaration issue (#214) - thanks @17cupsofcoffee
- Declarations update independent of compiler.watchFileSystem (#155) - thanks @opichals
Now built using TypeScript v2.0
- Elided imports are now watched (#156, #169)
- Declaration files for
.d.ts
files are now emitted (thanks @rob-bateman) (#174, #175)
- Add better error messaging when a file in tsconfig.json can not be loaded (#117, #145)
- Fix incompatibility with html-webpack-plugin (#152, #154)
- Add support for emitting declaration files when
declaration: true
is set (#48, #128) - Fix bug with specifying
target: es6
andmodule: commonjs
at the same time when using TS 1.7+ (#111, #132, #140). - Fix bug with resolving dependencies which are linked using
npm link
(#134, #141)
- Fix regression with watching definition files (#109, #110)
- Fix regression with Windows that was introduced in v0.7.0 (#92)
- Fix bug with webpack resolution that could sometimes cause TypeScript to not find modules (#92, #102)
- Loader output is now written to stderr instead of stdout. (#95, #103)
- Improve initial build performance significantly for larger projects (#100)
- Fix issue with nightly (#96)
- Remove support for 1.5 and 1.6-beta. TypeScript 1.6 (stable) is the now the lowest version supported.
- Fix issue when using source maps and Babel in certain situations (#81)
- Fix issue with nightly (#83)
- Add ignoreDiagnostics feature
- Fix issue with node resolution and
noEmitOnError
(#71)
- Fix issue with nightly (microsoft/TypeScript#4738)
- Add support for the NoErrorsPlugin
- Fix issue with nightly (microsoft/TypeScript#4497)
- Utilize TypeScript's new custom module resolution logic to integrate with webpack. This essentially means that TypeScript will resolve files exactly the same as webpack does (supporting aliases, etc). See the aliasResolution test for an example. Only supported in TS 1.6 and above.
- Rework error reporting to resolve certain edge cases with dependencies. In general errors should be much more consistent now in watch mode.
- Fix issue with targeting ES6 and transpile mode (#36)
- Fix issue with TypeScript nightly and new node module resolution strategy (#34)
- Tweaked error message output to include error code (#32)
- Add helpful messages around the TypeScript dependency
- Suggest how to install TypeScript if it hasn't been installed
- Show TypeScript version when compiling
- Warn if TypeScript version is incompatible
- Add support for
transpileOnly
loader option. See README for more information. - TypeScript is no longer a dependency of the loader and must be installed separately
- Loader options can now be set as a property in
webpack.config.js
- TypeScript options can be set through the loader option
compilerOptions
- Improved error reporting
- Errors from all files in the TypeScript application are now reported in watch mode instead of from just those files that changed. This means that making a breaking change in a dependency will now be correctly reported as an error in the dependent file.
- Errors with TypeScript options are now reported as webpack errors instead of logged to console
- Error output no longer contains the filename once from webpack and again in the error message. Instead, the filename is only reported by webpack
- Fixed issue with latest version of webpack where filenames could be reported twice for the same error in certain situations
- Using the
declaration
TypeScript option no longer results in errors - Add support for the
newLine
TypeScript option - Tests have been revamped to be full integration tests with nightly builds against the current stable and nightly TypeScript. Many new tests have been added.
- Update TypeScript dependency to 1.5 release (1.5.3)
- Improve error reporting related to tsconfig.json
- Fix bug that reported the wrong errors
- Errors are now reported as webpack errors instead of logged to console
- Add support for latest TypeScript nightly (#24)
- Add
silent
flag (#22)
- Add support for "noLib" compiler option (#19)
- Make errors easier to parse programmatically (#20)
- Errors in declaration files are now added to the stats object instead of written to console
- Errors now include
file
,rawMessage
, andlocation
properties
- Make --watch option more robust
- Fix issue where changes to entry file were not detected
- Fix issue where changes to typing information only did not result in a rebuild (#21)
- Fix error locations to be 1-based instead of 0-based (#18)
- Rework the way dependencies are loaded (#14)
- Fix NPM dependency on TypeScript (#15, #16)
- Fix Windows issue with paths (#14)
- TypeScript 1.5 support! (#14)
- tsconfig.json support (#2, #9)
- ES6 target support
- Remove TS-related options in favor of specifying them in tsconfig.json
- Add
configFileName
option for custom tsconfig files
- Exclude TS 1.5 as a dependency since there are breaking changes
- Add support for reporting errors in declaration files (#10)
- Add support for watch mode for declaration files (#11)
- Fix issue with extra
sourceMappingURL
in output files (#12)
- Add support for manually adding files (#6)
- Add paths to source maps (#8)
- Add support for specifying a custom TypeScript compiler
- Change how modules are resolved. Imports and declaration file references are
now resolved through TypeScript instead of being resolved through webpack's
resolve
API. This fixes a number of issues and better aligns the loader to work as a replacement for thetsc
command. (#3, #4, #5)
- Add noImplicitAny option (#2)
- Fix issue with source maps
- Add colors to error output
- Add new configuration options (#1)
- target, module, sourceMap, instance
- sourceMap default changed from
true
tofalse
- Workaround issue with TypeScript always emitting Windows-style new lines
- Add tests
- Initial version