В webpack 4 должны записи и чанки иметь имя, содержащее чанхэш? - PullRequest
0 голосов
/ 02 июля 2019

Из-за широко распространенной поддержки HTTP2 (в современных браузерах), в настоящее время можно иметь много файлов на хост без добавления задержки, и если кто-либо изменяет приложение, пользователю требуется загрузить только небольшой файл.Именно поэтому веб-пакет позволяет строить из нескольких блоков.При настройке чанков веб-пакета требуется опция all.

optimization: {
     splitChunks: {
       chunks: 'all'
     }
   }

В основном это 2 варианта настройки выходных имен с помощью webpack 4. Один из них - имя файла.Другой - это chunkfileName.Мне нравится иметь хэш, потому что тогда внешний веб-кеш в веб-браузере разумно знать, является ли файл новым или нет.И мне нравится иметь chunkhash вместо случайного хэша сборки, потому что, если содержимое не изменилось, нет веской причины для изменения имени файла.

Однако, когда я читаю документ, он говорит, что пакетможет быть признан недействительнымПоэтому я спрашиваю здесь, приемлемо ли мое решение.

Вот документация для output.chunkFilename.Если вы ищете, есть определения chunkhash и filname.

Я очень озадачен тем, что он говорит, что пакет может быть признан недействительным.

См. Ниже часть документа, в которой говорится, что пакет можетбыть признанным недействительным с использованием chunkhash.Я прочитал это много раз.И я не очень понимаю.Так что спасибо за помощь.

https://webpack.js.org/configuration/output/
"output.chunkFilename

string

This option determines the name of non-entry chunk files. See output.filename option for details on the possible values.

Note that these filenames need to be generated at runtime to send the requests for chunks. Because of this, placeholders like [name] and [chunkhash] need to add a mapping from chunk id to placeholder value to the output bundle with the webpack runtime. This increases the size and may invalidate the bundle when placeholder value for any chunk changes.

By default [id].js is used or a value inferred from output.filename ([name] is replaced with [id] or [id]. is prepended)."

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

У меня есть 3 записи.приложение, поставщик, полифилы.Это вызывает 3 имени файла и еще несколько файлов чанка (файлы без записи).

У меня нет окончательного пакета.У меня просто много файлов.И это меня устраивает.

У меня сложилось впечатление, что это связано с динамической загрузкой.Во избежание отключения всего приложения или его памяти при запуске.И это то, что подразумевается под финальной связкой.Но хотя мне интересно понимать динамическую загрузку, я пока не планирую ее использовать.

Так что мой вопрос больше, мое решение приемлемо без динамической загрузки?

Webpack не выдалошибка.

Когда он говорит, что может сделать пакет недействительным, возможно, это означает, что ему нужно все пересобрать, и это добавляет время к сборке.

Мне нравится использовать приведенное ниже решение, как я объяснилвыше.Chunkhahsis основан на содержании файла.А хеш позволяет интеллектуальное кэширование в веб-браузере загружать только если файл новый.И лучший способ узнать, является ли файл новым, - это новый URL, который получается из нового имени файла.

В конфигурации веб-пакета:

output: {
    path: "./build",
    publicPath: "/build/",
    chunkFilename: "[name].[chunkhash].js",
    filename: "[name].[chunkhash].js"
  },

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

Я думаю, лучший ответ для любопытных людей лежит в исходном коде.Не в док.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...