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

Я использую Svelte и Свернуть с разделение кода, и вот некоторые части моего 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).

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

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

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

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
43
1

Ответы 1

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

Большое спасибо за ваш ответ, Лукас, но я сделал программу, которая сравнивает строку с строкой одного из блоков, созданных в двух последовательных зданиях, без каких-либо изменений, и программа показывает, что содержимое блоков точно такое же.

Antonio Carlos Amaral 01.04.2021 21:03

К сожалению, без репродукции это трудно отладить. Этого не должно происходить, но в противном случае я могу только догадываться, и это никуда не денется. Что-то, что вы можете попробовать: добавьте простой плагин, который просто реализует ловушку moduleParsed, и проверьте, идентичны ли свойства code модулей между запусками.

lukastaegert 01.04.2021 21:11

Другая возможность состоит в том, что плагин неоптимально использует ловушку augmentChunkHash.

lukastaegert 02.04.2021 13:21

Другие вопросы по теме