cache-loader icon indicating copy to clipboard operation
cache-loader copied to clipboard

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

Open ValeryVS opened this issue 6 years ago • 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.

ValeryVS avatar Jun 11 '19 10:06 ValeryVS

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

alexander-akait avatar Jun 11 '19 10:06 alexander-akait

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.

EECOLOR avatar Nov 24 '19 23:11 EECOLOR

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.

Rush avatar Feb 23 '20 22:02 Rush

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

Akiq2016 avatar Oct 27 '20 07:10 Akiq2016

Please migrate on https://webpack.js.org/configuration/other-options/#cache

alexander-akait avatar Oct 27 '20 11:10 alexander-akait