【发布时间】:2019-01-05 17:49:51
【问题描述】:
我想使用 javascript 模板文字生成 html 内容,并在 Webpack 编译时输出静态 html 文件。我还需要一个具有热模块替换功能的开发服务器,可以处理 html、css 和 js 文件。
我需要 page1.js 在 HtmlWebpackPlugin 选项中:
new HtmlWebpackPlugin({
template: './html-template.ejs',
appMount: require('./src/views/page1')
})
然后我使用自定义的ejs模板html-template.ejs来导入生成的html内容:
<% if (htmlWebpackPlugin.options.appMount) { %>
<%= htmlWebpackPlugin.options.appMount %>
<% } %>
page1.js 看起来像这样:
const h1 = (text) => `<h1>${text}</h1>`;
module.exports = h1('Hello World');
请注意,page1.js未设置为入口点。唯一的入口点是 src/index.js(里面只有一个console.log 语句)。
当我运行webpack 时一切正常,dist/index.html 与 dist/main.js 一起生成。
如果我运行 webpack-dev-server 并尝试编辑 page1.js,浏览器会重新加载,但 html 内容不会更新。
关于如何使webpack-dev-server 和热模块替换适用于视图文件的任何想法?或者您有其他更好的解决方案来创建一个简单的静态站点生成器吗?
【问题讨论】:
-
也许只使用 Jekyll。或者你想具体实施?
-
而且听起来你的浏览器在 webpack 更新视图之前刷新了页面。好像你需要调用一些回调。
-
@DmitrySurin 我不想用 Jekyll,我想用 Webpack 创建一个静态站点生成器。现在唯一的问题是
devServer,对我来说它看起来像一个错误:page1.js 没有正确连接到 HMR。我也尝试过使用 mini-html-webpack-plugin 和 webpack-serve,但错误仍然存在。
标签: javascript webpack webpack-dev-server html-webpack-plugin static-site