5

我使用webpackhtml-webpack-plugin来使用生成的脚本包(如bundle.[hash].js)更新我的index.html文件。如何使用Webpack-dev-server和HTML-webpack-plugin将.html输出到磁盘

然后,我必须运行webpack-dev-server,以便我可以将该软件包加载到内存中并利用热模块更换。

这使得代码编译两次。

不过,我想是webpack-dev-server也能够更新为新bundle.[hash].js index.html文件,因为现在我要运行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'。您需要在一个排除任何一个排除,以防止它compiling。 – TetraDev

回答

1

webpack-dev-server将存储在内存中的编译包,而不会写束输出中的目录,所以我想用webpack-dev-server当你不需要在包名称添加[hash]

,你可以有三个webpack配置文件,说webpack.common.js,webpack.dev.jswebpack.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-server无法使用新的捆绑包哈希更新View,我必须使用“webpack”编写捆绑软件名称,然后使用“webpack-dev-server”来为捆绑软件提供服务。 – TetraDev

+0

其实我只是意识到它无法从webpack-dev-server加载旧的哈希,因为没有缓存,它在内存中加载并在开发服务器停止时清除。所以你是正确的,我可以从开发包中删除散列。 – TetraDev

+1

新想法:有没有办法让'webpack-dev-server'在构建过程中将资产输出到wwwroot中?或者只能'webpack'输出资产到磁盘? – TetraDev