output.filename, на который влияет output.chunkFilename? - PullRequest
0 голосов
/ 29 июня 2018

Я настраиваю проект ASP.NET Core и хотел бы, чтобы в моих шаблонах Razor содержалась ссылка на мои блоки ввода, сгенерированные веб-пакетом.

Что я хочу:

Я хочу иметь возможность ссылаться на мои main.js и runtime.js из моих шаблонов Razor. Я пришел к выводу, что один из способов сделать это состоит в том, чтобы Webpack всегда генерировал одно и то же имя для этих файлов.

Что я сделал:

Читая документацию Webpack, можно прочитать это о настройке output.chunkFilename:

« Этот параметр определяет имена файлов чанков без записи. »

Исходя из этого предположения, что использование хэшей в chunkFilename не повлияет на мои входные файлы, я использовал эту конфигурацию:

output: {
  path: outDir,
  filename: '[name].js',
  chunkFilename: '[name].[chunkhash].js',
  publicPath: 'dist/',
},

Что случилось:

Хотя я получаю вот что:

wwwroot/dist
├───0.3b03e7acfc05abed54e5.js
├───1.3b03e7acfc05abed54e5.js
├───main.3b03e7acfc05abed54e5.js
└───runtime.js

Точка входа main получает хеш, несмотря на то, что говорится в документации. Я где-то пропустил шаг, неправильно прочитал документ, или есть какая-то проблема между filename и chunkFilename?

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

1 Ответ

0 голосов
/ 29 июня 2018

ОК, для дальнейшего использования опция optimization.runtimeChunk: 'single' испортит все, и каждый пакет точек входа будет следовать настройке output.chunkFilename.

Итак, имея эти правила:

optimization: {
  runtimeChunk: 'single',
},

output: {
  path: outDir,
  filename: '[name].js',
  chunkFilename: '[name].[contenthash].js',
  publicPath: 'dist/',
},

дает такую ​​структуру:

wwwroot/dist
├───0.3b03e7acfc05abed54e5.js
├───1.3b03e7acfc05abed54e5.js
├───main.3b03e7acfc05abed54e5.js
└───runtime.js

При удалении настройки optimization.runtimeChunk это значение равно:

wwwroot/dist
├───0.3b03e7acfc05abed54e5.js
├───1.3b03e7acfc05abed54e5.js
└───main.js

В ретроспективе, поскольку я не хочу, чтобы у моего main.js был хэш, бессмысленно выделять среду выполнения в отдельный файл (первоначальная причина в том, что код среды выполнения влияет на [contenthash] часть имени файла ), поэтому это может быть преднамеренное (хотя и странное) поведение.

PS: Нет, это не так. https://github.com/webpack/webpack/issues/6604

...