@goodforonefare/ci-cache-loader v0.9.2
CI Cache Loader
Caches the result of following loaders on disk
How does this differ from cache-loader?
cache-loader is excellent for development mode. However, it may have reduced in peformance in continuous integration environments due to:
- Git checkouts assigning arbitrary timestamps to source files
- npm/yarn installation assigning arbitrary timestamps
node_modulesfiles - Cache restoration assigning arbitrary timestamps to
node_modulesfile
ci-cache-loader works around these problems by:
- Tracking cached files by hash instead of last modified time
- Tracking npm dependencies by package version instead of last modified time
Can I just use this for development?
No. cache-loader is much better at reacting to development environment changes. This loader assumes that:
node_modulesis an unmodified version of code installed via npm/yarn (i.e., no patches, or modification by build scripts)- All source code is untouched during webpack compilation
thread-loaderisn't used (CI servers tend to restrict thread counts anyway)
Install
yarnUsage
Add this loader in front of other (expensive) loaders to cache the result on disk.
webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.ext$/,
use: ['@shopify/ci-cache-loader', ...loaders],
include: path.resolve('src'),
},
],
},
};⚠️ 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) |
write | {Function(cacheKey, data, callback) -> {void}} | undefined | Allows you to override default write cache data to file (e.g. Redis, memcached) |
read | {Function(cacheKey, callback) -> {void}} | undefined | Allows you to override default read cache data from file |
5 years ago
5 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago