5

Я использую webpack и html-webpack-plugin для обновления моего файла index.html сгенерированным набором скриптов, например bundle.[hash].js.Как выводить .html на диск с помощью Webpack-dev-сервера и HTML-webpack-plugin

Затем мне нужно запустить webpack-dev-server, чтобы я мог загрузить этот комплект в память и воспользоваться возможностью замены Hot Mod.

Это делает код компиляцией дважды.

Однако то, что я хотел бы для webpack-dev-server также иметь возможность обновить файл index.html с новым bundle.[hash].js, потому что теперь я должен бежать webpack с последующим webpack-dev-sever. Кажется странным компилировать дважды.

Опять же, единственная причина, по которой я запустил webpack, - это получить файл index.html с новым хешем пакета. Если бы я смог получить webpack-dev-server для вывода обновленного index.html на диск, я мог бы вообще удалить команду webpack.

Возможно ли это? Если да, то как изменится конфигурация webpack? Моя конфигурация webpack очень длинная, поэтому я не думал, что это поможет опубликовать ее здесь.

+0

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

+0

Да, он скомпилируется дважды, потому что предполагается, что 'webpack' будет скомпилирован, и 'webpack-dev-server' будет компилироваться. Я закончил тем, что не использовал 'webpack' для обновления файла index.html и использовал только' webpack-dev-server' во время разработки, и только 'webpack' во время сборки сборки. Вам нужно будет поместить некоторые исключения в одну из них, чтобы предотвратить ее компиляцию. – TetraDev

ответ

1

webpack-dev-server будет хранить скомпилированный пакет в памяти, а не писать узелок Ouput каталога, так что я думаю, что вам не нужно, чтобы добавить [hash] в расслоении имени при использовании webpack-dev-server,

вы могли бы иметь три файлы конфигурации webpack, скажем webpack.common.js, webpack.dev.js и webpack.prod.js.

webpack.common.js содержит общие конфигурации, которые могут быть объединены с другими конфигурациями с помощью webpack-merge

webpack.dev.js используется для webpack-dev-server и выходной файл должен быть bundle.js

webpack.prod.js используется для производства, а выходное имя файла должно быть bundle.[hash].js

, то вы можете просто запустить webpack-dev-server webpack.dev.js

+0

Я использую 3 разных конфигурации, например, от Angular2-webpack-starter. Но чтобы получить страницу .NET-сервера '_Layout.cshtml' (которая является основным видом для приложения для одной страницы) для загрузки пакета webpack,' _Layout.cshtml' должен быть написан webpack с именем расслоение.Поэтому webpack-dev-сервер не может обновить представление с новым хэшем пакета, и я должен использовать «webpack» для записи имени пакета, а затем «webpack-dev-server» для обслуживания пакета. – TetraDev

+0

На самом деле я просто понял, что он не может загружать старый хэш из webpack-dev-сервера, потому что нет кеша, он загружается в память и очищается в любое время, когда сервер-сервер останавливается. Поэтому вы правы, что я могу удалить хэш из пакета dev. – TetraDev

+1

Новая идея: есть ли способ заставить 'webpack-dev-server' выводить активы в wwwroot во время сборки? Или может только «webpack» выводить активы на диск? – TetraDev

1

Я думаю, что это именно то, что вам нужно: https://github.com/jantimon/html-webpack-harddisk-plugin

webpack-dev-server сохраняет обновленный HTML в памяти. С помощью этого плагина он также будет записывать его в файловую систему.