imagemin-webpack-plugin icon indicating copy to clipboard operation
imagemin-webpack-plugin copied to clipboard

@types/webpack throwing type errors in Webpack v5

Open jljorgenson18 opened this issue 3 years ago • 0 comments

imagemin-webpack-plugin has a dependency on @types/webpack v4. However, v4 imports tapable which in recent versions will break with webpack v4. This means that if you upgrade to Webpack v5 which will upgrade tapable internally, you end up with type errors coming from imagemin-webpack-plugin (unless skipLibCheck is set to true)

node_modules/imagemin-webpack-plugin/node_modules/@types/webpack/index.d.ts:32:3 - error TS2305: Module '"tapable"' has no exported member 'Tapable'.

32   Tapable,
     ~~~~~~~

node_modules/imagemin-webpack-plugin/node_modules/@types/webpack/index.d.ts:1062:23 - error TS2707: Generic type 'SyncWaterfallHook<T, AdditionalOptions>' requires between 1 and 2 type arguments.

1062             resolver: SyncWaterfallHook;
                           ~~~~~~~~~~~~~~~~~

node_modules/imagemin-webpack-plugin/node_modules/@types/webpack/index.d.ts:1063:22 - error TS2707: Generic type 'SyncWaterfallHook<T, AdditionalOptions>' requires between 1 and 2 type arguments.

1063             factory: SyncWaterfallHook;
                          ~~~~~~~~~~~~~~~~~

node_modules/imagemin-webpack-plugin/node_modules/@types/webpack/index.d.ts:1064:28 - error TS2707: Generic type 'AsyncSeriesWaterfallHook<T, AdditionalOptions>' requires between 1 and 2 type arguments.

1064             beforeResolve: AsyncSeriesWaterfallHook;
                                ~~~~~~~~~~~~~~~~~~~~~~~~

node_modules/imagemin-webpack-plugin/node_modules/@types/webpack/index.d.ts:1065:27 - error TS2707: Generic type 'AsyncSeriesWaterfallHook<T, AdditionalOptions>' requires between 1 and 2 type arguments.

1065             afterResolve: AsyncSeriesWaterfallHook;
                               ~~~~~~~~~~~~~~~~~~~~~~~~

node_modules/imagemin-webpack-plugin/node_modules/@types/webpack/index.d.ts:1066:27 - error TS2707: Generic type 'SyncBailHook<T, R, AdditionalOptions>' requires between 2 and 3 type arguments.

1066             createModule: SyncBailHook;
                               ~~~~~~~~~~~~

And so on. I'm not positive what the right answer is here but maybe making @types/webpack a peerDependency or using * instead of v4 may fix it.

jljorgenson18 avatar Mar 29 '21 19:03 jljorgenson18