Hash 使用Rollup和Svelte进行代码拆分时,即使不做任何修改,也会使用新的哈希值更改所有块名

Hash 使用Rollup和Svelte进行代码拆分时,即使不做任何修改,也会使用新的哈希值更改所有块名,hash,split,svelte,rollup,Hash,Split,Svelte,Rollup,我正在将Svelte和Rollup与代码拆分一起使用,下面是我的Rollup.config.js的一些部分: Rollup生成名称包含哈希的块(例如investor-fa42bee8.js) 如果我再次运行构建脚本,在项目的任何文件中都不做任何修改,那么所有的块都会用新的哈希值生成,并且这种行为会损害客户端的长期缓存 如何更改此行为并为所有未修改的块授予相同的哈希 任何帮助都会来的 提前感谢。如果哈希值发生变化,则源代码中的某些内容也会发生变化。很可能是包含时间戳或类似内容的插件或横幅。非常感谢

我正在将SvelteRollup代码拆分一起使用,下面是我的Rollup.config.js的一些部分:

Rollup生成名称包含哈希的块(例如
investor-fa42bee8.js

如果我再次运行构建脚本,在项目的任何文件中都不做任何修改,那么所有的块都会用新的哈希值生成,并且这种行为会损害客户端的长期缓存

如何更改此行为并为所有未修改的块授予相同的哈希

任何帮助都会来的


提前感谢。

如果哈希值发生变化,则源代码中的某些内容也会发生变化。很可能是包含时间戳或类似内容的插件或横幅。

非常感谢您的回复,卢卡斯,但我制作了一个程序,对两个连续建筑中生成的块进行逐行比较,无需修改,程序显示了块的内容是完全相同的。不幸的是,如果没有复制,这很难调试。这不应该发生,否则我只能猜测,这不会有什么进展。您可以尝试:添加一个简单的插件,它只实现一个
moduleParsed
钩子,并检查模块的
code
属性在运行之间是否相同。另一种可能是插件以次优方式使用
augmentChunkHash
钩子。卢卡斯,再次感谢您的快速回答,你的注意力和耐心。直到今天,我一直在努力解决这个问题,当我从rollup.confg.js中删除rollup插件postss时,问题就解决了。奇怪的是,正如我所说,我创建了一个程序,它比较了两个构建过程生成的所有文件,并且没有显示任何差异。也许这个程序有个bug。不管怎样,问题解决了,再次感谢你。
    input: {
        'boot': 'src/boot.js',
        'app': 'src/app.js',
        'agency': 'src/modules/agency.js',
        'buyer': 'src/modules/buyer.js',
        'buyer-group': 'src/modules/buyer-group.js',
        'investor': 'src/modules/investor.js',
        'management-unit': 'src/modules/management-unit.js',
        'platform': 'src/modules/platform.js',
        'supplier': 'src/modules/supplier.js',
        'tables': 'src/modules/tables.js',
        'pt-BR': 'src/core/locale/pt-BR.js',
        'en': 'src/core/locale/en.js',
        'external-svelte-package': 'node_modules/external-svelte-package/src/index.js'
    },

    output: {
        sourcemap: false,
        format: 'esm',
        dir: `${baseDir}/js`,
        entryFileNames: '[name]-[hash].js',
        chunkFileNames: '[name].[hash].js'
    },