cache-loader-with-compare
forked from https://github.com/LukeSheard/cache-loader --> https://github.com/webpack-contrib/cache-loader/
Install
npm install --save-dev cache-loader
Usage
Add this loader in front of other (expensive) loaders to cache the result on disk.
webpack.config.js
moduleexports = module: rules: test: /\.ext$/ use: 'cache-loader' ...loaders include: path
⚠️ Note that there is an overhead for saving the reading and saving the cache file, so only use this loader to cache expensive loaders.
Options
Name | Type | Default | Description |
---|---|---|---|
cacheKey |
{Function(options, request) -> {String}} |
undefined |
Allows you to override default cache key generator |
cacheDirectory |
{String} |
path.resolve('.cache-loader') |
Provide a cache directory where cache items should be stored (used for default read/write implementation) |
cacheIdentifier |
{String} |
cache-loader:{version} {process.env.NODE_ENV} |
Provide an invalidation identifier which is used to generate the hashes. You can use it for extra dependencies of loaders (used for default read/write implementation) |
read |
{Function(cacheKey, callback) -> {void}} |
undefined |
Allows you to override default read cache data from file (pitch phase) |
compare |
{Function(data, callback) -> {void}} |
undefined |
Allows you to override the comparision function for the generated data (pitch phase) |
generate |
{Function(depFileName, callback) -> {void}} |
undefined |
Allows you to override the cache object generator function (loader phase) |
write |
{Function(cacheKey, data, callback) -> {void}} |
undefined |
Allows you to override default write cache data to file (e.g. Redis, memcached) (loader phase) |
Examples
webpack.config.js
moduleexports = module: rules: test: /\.js$/ use: 'cache-loader' 'babel-loader' include: path
Database Integration
webpack.config.js
// Or different database client - memcached, mongodb, ...const redis = ;const crypto = ; // ...// connect to client// ... const BUILD_CACHE_TIMEOUT = 24 * 3600; // 1 day { return crypto;} // Generate own cache key { return `build:cache:`;} // Read data from database and parse them { client;} // Write data to database under cacheKey { client;} moduleexports = module: rules: test: /\.js$/ use: loader: 'cache-loader' options: cacheKey read write 'babel-loader' include: path
Maintainers
![]() Tobias Koppers |
![]() Juho Vepsäläinen |
![]() Joshua Wiens |
![]() Michael Ciniawsky |
![]() Alexander Krasnoyarov |