Разделение кода с помощью Rollup и Svelte меняет все имена блоков на новые хеши даже без каких-либо модификаций

Я использую Svelte и Rollup с разделением кода, и вот несколько части моего rollup.config.js:

    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'
    },

Rollup генерирует чанки с именами, содержащими хэши (например, investor-fa42bee8.js).

Если я снова запустил сценарий сборки без изменений ни в одном файле проекта, все фрагменты будут сгенерированы с новыми хэшами, и такое поведение повредит долгосрочному кешу клиента.

Как я могу изменить это поведение и предоставить один и тот же хеш для всех фрагментов, которые не изменяются?

Любая помощь будет приветствоваться.

Заранее спасибо.


person Antonio Carlos Amaral    schedule 31.03.2021    source источник


Ответы (1)


Если хеши меняются, что-то меняется в ваших источниках. Скорее всего, плагин или баннер, содержащий метку времени или что-то в этом роде.

person lukastaegert    schedule 01.04.2021
comment
Большое спасибо за ваш ответ, Лукас, но я сделал программу, которая сравнивает строку с строкой одного из блоков, созданных в двух последовательных зданиях, без каких-либо изменений, и программа показывает, что содержимое блоков точно такое же. - person Antonio Carlos Amaral; 01.04.2021
comment
К сожалению, без репродукции это сложно отладить. Этого не должно происходить, но в противном случае я могу только догадываться, и это никуда не денется. Что-то, что вы можете попробовать: добавьте простой плагин, который просто реализует moduleParsed ловушку, и проверьте, идентичны ли code свойства модулей между запусками. - person lukastaegert; 01.04.2021
comment
Другая возможность состоит в том, что плагин неоптимально использует ловушку augmentChunkHash. - person lukastaegert; 02.04.2021
comment
Лукас, еще раз спасибо за быстрый ответ, внимание и терпение. Я боролся с этим до сегодняшнего дня, и когда я удалил rollup-plugin-postcss из rollup.confg.js, проблема была решена. Странно то, что, как я уже сказал, я создал программу, которая сравнивает все файлы, созданные обоими процессами сборки, и не показывает никаких различий. Возможно, в этой программе был баг. Так или иначе, проблема решилась, и еще раз большое спасибо. - person Antonio Carlos Amaral; 11.04.2021