webpack-contrib/cache-loader

using with file-loader, files are not builded if in cache, even if dist folder is empty

ValeryVS opened this issue · 5 comments

  • Operating System: ubuntu 16.04
  • Node Version: 6.14.3
  • NPM Version: 3.10.10
  • webpack Version: 4
  • cache-loader Version: 3.0.1

Expected Behavior

file-loader outputs all to assets folder.
cache-loader used with file-loader.
While using with file-loader, if output directory does not content assets folder — get those files from cache and put in assets folder.

Actual Behavior

Webpack doesn't output assets folder, that shoul be generated by file-loader.

Code

        {
          test: /.(jpg|jpeg|png|svg|gif|ttf|otf|eot|woff|woff2)$/,
          use: [
            {
              loader: 'cache-loader'
            },
            {
              loader: 'file-loader',
              options: {
                outputPath: 'assets',
                name: isDevelopment ? '[path][name].[ext]' : '[hash].[ext]'
              }
            }
          ]
        }

How Do We Reproduce?

Add cache-loader before file-loader.

You don't need cache-loader on file-loader, why you do this? Anyway it should works, please create minimum reproducible test repo, thanks

I encountered the same problem with this config:

        {
          test: /\.(jpe?g|png|gif)$/,
          loaders: [
            'cache-loader',
            urlLoader,
            isProduction && imageLoader,
            imageSizeLoader
          ].filter(Boolean)
        },

The comment from @evilebottnawi helped me to realize it should be this:

        {
          test: /\.(jpe?g|png|gif)$/,
          loaders: [
            urlLoader,
            'cache-loader',
            isProduction && imageLoader,
            imageSizeLoader
          ].filter(Boolean)
        },

@evilebottnawi It might a good idea to mention in the readme that it should not be placed before any loader that has side effects like emitFile.

Rush commented

You don't need cache-loader on file-loader, why you do this? Anyway it should works, please create minimum reproducible test repo, thanks

It's needed if you have expensive plugins for optimizing images or other assets.

You don't need cache-loader on file-loader, why you do this? Anyway it should works, please create minimum reproducible test repo, thanks

https://github.com/Akiq2016/test-cache-loader
here is my minimum reproducible test repo