gpt4 book ai didi

javascript - 将 <%=[variable]=> 语法与 htmlWebpackPlugin 和 html-loader 一起使用

转载 作者:行者123 更新时间:2023-12-03 17:18:30 24 4
gpt4 key购买 nike

使用 Webpack 4 和它的 HtmlWebpackPlugin 和 html-loader 一起,我试图:

  • 将其他 html 文件从目录
  • 加载到 index.html 中
  • 从 htmlWebpackPlugin
  • 将变量加载到 index.html 中

    但是,当 webpack.config.js 中存在 html-loader 时,这不起作用。
    如果我可以使用首选的相同语法,但我已经尝试使用 ${ }对于标题标签,但我得到一个构建错误, htmlWebpackPlugin undefined .

    索引.html

    <!doctype html>
    <html>
    <head>
    <title><%= htmlWebpackPlugin.options.title %></title> <!-- this doesn't work -->
    <!-- <title>${htmlWebpackPlugin.options.title}</title> //also doesn't work -->
    </head>
    <body>
    <section>${require("./path/to/other.html")}</section> <!-- this works fine -->
    </body>
    </html>

    webpack.config.js

    const path = require('path');
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    const UglifyJsPlugin = require('uglifyjs-webpack-plugin');

    module.exports = {
    entry: './src/main.js',
    devServer: {
    contentBase: './src',
    port: 4200,
    open: true
    },
    plugins: [
    new HtmlWebpackPlugin({
    hash: true,
    template: './src/index.html'},
    title: 'Index Page')
    ],
    module: {
    rules: [
    {
    test: /\.jsx?$/,
    include: /src/,
    exclude: /node_modules/
    },
    {
    test: /\.(html)$/,
    exclude: /node_modules/,
    use: {
    loader: 'html-loader',
    options: {
    attrs:[':data-src'],
    minimize: false,
    conservativeCollapse: false,
    interpolate: true
    }
    }
    },
    {
    test: /\.css$/,
    use: [
    { loader: 'style-loader' },
    {
    loader: 'css-loader',
    options: {
    modules: true,
    localIdentName: '[path][name]__[local]--[hash:base64:5]'
    }
    }
    ]
    }
    ]
    },
    output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
    }
    }

    最佳答案

    可以通过按顺序堆叠以下加载器来实现:

    {
    test: /\.html$/,
    use: [{
    loader: 'ejs-loader'
    }, {
    loader: 'extract-loader'
    }, {
    loader: 'html-loader',
    options: {
    interpolate: true
    }
    }
    html-loader首先替换插入的片段,然后我们需要提取结果 HTML - 这就是我们使用 extract-loader 的原因然后 ejs-loader然后可以替换 ejs碎片,它确实看到 htmlWebpackPlugin变量。

    关于javascript - 将 <%=[variable]=> 语法与 htmlWebpackPlugin 和 html-loader 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49888637/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com