Я использую 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
).
Если я снова запустил сценарий сборки без изменений ни в одном файле проекта, все фрагменты будут сгенерированы с новыми хэшами, и такое поведение вредит клиенту долгосрочный кеш.
Как я могу изменить это поведение и предоставить один и тот же хэш для всех фрагментов, которые не изменяются?
Любая помощь будет приветствоваться.
Заранее спасибо.
Если хеши меняются, что-то в ваших источниках меняется. Скорее всего, плагин или баннер, содержащий метку времени или что-то в этом роде.
К сожалению, без репродукции это трудно отладить. Этого не должно происходить, но в противном случае я могу только догадываться, и это никуда не денется. Что-то, что вы можете попробовать: добавьте простой плагин, который просто реализует ловушку moduleParsed
, и проверьте, идентичны ли свойства code
модулей между запусками.
Другая возможность состоит в том, что плагин неоптимально использует ловушку augmentChunkHash
.
Большое спасибо за ваш ответ, Лукас, но я сделал программу, которая сравнивает строку с строкой одного из блоков, созданных в двух последовательных зданиях, без каких-либо изменений, и программа показывает, что содержимое блоков точно такое же.