Какую стратегию хеширования ассетов выбрать в Webpack?
Несколько месяцев назад проходил мимо Storybook и заметил, что в нём для хеширования ассетов используется
Справедливости ради, в рамках сторибука это особо не важно, т.к. в большинстве случаев это инструмент для внутреннего использования. Но неопытные разработчики могут посмотреть на сторибук и сделать так же.
Что же до выбора стратегии, то всё очень просто — используйте
Кстати, оказалось, что по пути я исправил и утечку памяти. Дело в том, что при использовании Webpack Dev Server ассеты пишутся не на диск, а в оперативную память с помощью memfs, т.к. это быстрее и экономит ресурс SSD. В таком случае на каждое изменение появлялись новые ассеты, а старые оставались в оперативной памяти. Именно по этой причине не нужно использовать хеширование в development режиме. Хотя давным-давно я думал, что это просто из-за того, что операция хеширования существенно замедляет рекомпиляцию.
Ну а поглядеть какие ещё бывают виды хешей можно вот здесь.
Несколько месяцев назад проходил мимо Storybook и заметил, что в нём для хеширования ассетов используется
[hash]
(он же [fullhash]
). Это хеш всей компиляции. Таким образом каждую компиляцию все ассеты получали новый хеш, даже если их контент не поменялся.Справедливости ради, в рамках сторибука это особо не важно, т.к. в большинстве случаев это инструмент для внутреннего использования. Но неопытные разработчики могут посмотреть на сторибук и сделать так же.
Что же до выбора стратегии, то всё очень просто — используйте
[contenthash]
. Этот хеш зависит именно от содержимого каждого конкретного чанка. Вот мой пул реквест.Кстати, оказалось, что по пути я исправил и утечку памяти. Дело в том, что при использовании Webpack Dev Server ассеты пишутся не на диск, а в оперативную память с помощью memfs, т.к. это быстрее и экономит ресурс SSD. В таком случае на каждое изменение появлялись новые ассеты, а старые оставались в оперативной памяти. Именно по этой причине не нужно использовать хеширование в development режиме. Хотя давным-давно я думал, что это просто из-за того, что операция хеширования существенно замедляет рекомпиляцию.
Ну а поглядеть какие ещё бывают виды хешей можно вот здесь.