# cache-loader (opens new window)

将其他loader处理后的文本和依赖关系,持久化储存;下次取时直接返回。

webpack 匹配执行 loader 顺序:

  1. 从首向尾依次执行loader的pitch属性函数
  2. 从尾向首依次执行loader的default函数

由此,在pitch中做拦截判断,取得缓存后直接返回:

  1. options.cacheIdentifier以及remainingRequest做hash处理为key,取得储存的文件
  2. 判断remainingRequest一致
  3. 比对所有dep文件修改时间FS.stat),全部一致则认为缓存可用
  4. 提供依赖,返回原处理结果

default函数中持久化其他loader的处理结果:

  1. 获取依赖
  2. 获取各依赖的文件修改时间
  3. 储存

储存结构:

{
    remainingRequest: String,
    dependencies: [{
        path: String,
        mtime: Date,
    }],
    contextDependencies[{
        path: String,
        mtime: Date,
    }],
    result: {
        type: String,
        data: String,
    }
}
最后更新: 1/12/2023, 1:44:05 PM