Webpack html-webpack-plugin标题不起作用

时间:2016-11-04 10:57:13

标签: webpack html-webpack-plugin

我正在尝试将标题传递给html-webpack-plugin但它根本不会创建标题标记:(

有人可以告诉我问题出在哪里

webpack.js

var HtmlWebpackPlugin = require('html-webpack-plugin');
var webpack = require('webpack');

module.exports = {
    entry: ['./src/app/main.ts'],
    output: {
        filename: 'build.js',
        path: 'dist'
    },
    resolve: {
        root: __dirname,
        extensions: ['', '.ts', '.js', '.json']
    },
    resolveLoader: {
        modulesDirectories: ["node_modules"]
    },
    devtool: "source-map",
    plugins: [
        new HtmlWebpackPlugin({
            title : 'Hello',
            template: './src/index.html',
            inject: 'body',
            hash: true,
        })
    ],
    module: {
        loaders: loaders
    }
};

这是 index.html

<!doctype html>
<html lang="en">
<head>
    <noscript>
        <meta http-equiv="refresh" content="0; url=https://en.wikipedia.org/wiki/JavaScript">
    </noscript>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0">
</head>
<body>
    <ui-view></ui-view>
</body>
</html>

当我启动webpack服务器标题时没有注入?

5 个答案:

答案 0 :(得分:2)

在html文件中尝试此<title><%= htmlWebpackPlugin.options.title %></title>。作为参考,您可以在我的回购index.html中查看webpack-setup文件。

答案 1 :(得分:0)

此问题已在此处报告Title not working. #176

如果您想添加动态<title>标记,则应使用ejsjade等模板语言,...

答案 2 :(得分:0)

只需重命名index.html模板文件即可使用扩展名index.ejs

我尝试使用.html扩展名使其正常工作,但它总是吐出普通占位符 <%= title %>您可以尝试先使用 .html 扩展名使其工作!

title参数添加到templateParameters对象中,如下所示:

 plugins: [
        new HtmlWebpackPlugin({               
            template: './src/index.ejs',
            templateParameters: {
                'title': 'YourTitleGoesHere'
            }, 
           ...
           ..
        })
    ],

在您的index.ejs(以前为index.html)中,您可以这样指定参数:

<head>
 <title><%= title %></title>
...
..
.
<head>

就这样

经过测试 html-webpack-plugin v3.2 + webpack v4.x

答案 3 :(得分:0)

在Webpack中插入此配置

{
    test: /\.(index.html)$/,
    use: [
      {loader: "file-loader"},
      { loader: "extract-loader" },
      {
      loader: 'html-loader',
      options: {
        attrs: [':data-src']
      }
    }]
  }

确保此配置:

new HtmlWebpackPlugin({
  title: "My Page TItle",
  template: './index.html'
}),

答案 4 :(得分:-1)

您是否尝试过将标题标签插入模板html文件./src/index.html中?

<!doctype html>
<html lang="en">
<head>
    <noscript>
        <meta http-equiv="refresh" content="0; url=https://en.wikipedia.org/wiki/JavaScript">
    </noscript>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0">
    <title>Hello</title>
</head>
<body>
    <ui-view></ui-view>
</body>
</html>