Skip to content
📈0️⃣

vitepress 项目没有修改的情况, 打包出的 html 文件仍然有变化

问题

vitepress 项目没有修改的情况, 打包出的 html 文件仍然有变化

原因

打包时, vitepress 会根据文件后缀生产一个 map 映射, 这个映射每次打包都是乱序的, 导致文件名变化

解决

  1. 修改 node_modules\vitepress\dist\node\ 目录下的 serve-xxx.js 文件

    js
    const _hashmap = {}; 
    for (const name in bundle) {
      const chunk = bundle[name];
      if (isPageChunk(chunk)) {
        const hash = chunk.fileName.match(hashRE)[1];
        pageToHashMap[chunk.name.toLowerCase()] = hash; 
        _hashmap[chunk.name.toLowerCase()] = hash; 
        bundle[name + "-lean"] = {
          ...chunk,
          fileName: chunk.fileName.replace(/\.js$/, ".lean.js"),
          preliminaryFileName: chunk.preliminaryFileName.replace(
            /\.js$/,
            ".lean.js"
          ),
          code: chunk.code.replace(staticStripRE, `""`),
        };
        chunk.code = chunk.code.replace(staticRestoreRE, "");
      }
    }
    const entries = Object.entries(_hashmap); 
    entries.sort((a, b) => a[0].localeCompare(b[0])); 
    Object.assign(pageToHashMap, Object.fromEntries(entries)); 
  2. 保存后重新运行 npm run docs:build