Javascript 需要帮助将资产注入已编译的index.html文件吗

Javascript 需要帮助将资产注入已编译的index.html文件吗,javascript,webpack,Javascript,Webpack,我正试着用WebPAck来代替Gulp。我有这个网页包配置,它编译了一个Nunjucks模板,并捆绑了js代码和css代码 我尝试配置webpack,将供应商资产注入index.html头和正文,而不是绑定 我查看了一些网页包插件,但似乎没有一个工作正常。这就是我现在拥有的: Nunjuck编译中断,单个供应商资产不会被注入 const BrowserSyncPlugin = require('browser-sync-webpack-plugin'); const CleanWebpackPl

我正试着用WebPAck来代替Gulp。我有这个网页包配置,它编译了一个Nunjucks模板,并捆绑了js代码和css代码

我尝试配置webpack,将供应商资产注入index.html头和正文,而不是绑定

我查看了一些网页包插件,但似乎没有一个工作正常。这就是我现在拥有的:

Nunjuck编译中断,单个供应商资产不会被注入

const BrowserSyncPlugin = require('browser-sync-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const ExtraWatchWebpackPlugin = require('extra-watch-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const NunjucksWebpackPlugin = require('nunjucks-webpack-plugin');
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const StyleLintPlugin = require('stylelint-webpack-plugin');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const path = require('path');
const nunjuckspages = require('./nunjuckspages');
const HtmlWebpackExternalsPlugin = require('html-webpack-externals-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = env => {
  const devMode = !env || !env.production;

  return {
    mode: devMode ? 'development' : 'production',
    entry: {
      main: './src/index.js',
      typescript_demo: './src/typescript_demo.ts',
      vendor: './src/vendor.js'
    },
    output: {
      path: path.join(__dirname, 'dist'),
      filename: 'assets/js/[name].js',
      library: 'MainModule',
    },
    module: {
      rules: [
        {
          test: /\.(sa|sc|c)ss$/,
          use: [
            MiniCssExtractPlugin.loader,
            { loader: 'css-loader'},
            { loader: 'postcss-loader', options: { sourceMap: true } },
            'resolve-url-loader',
            { loader: 'sass-loader', options: { sourceMap: true } }

          ]
        },
        {
          test: /\.ts(x?)$/,
          enforce: 'pre',
          exclude: /node_modules/,
          use: [
            {
              loader: 'tslint-loader',
              options: { /* Loader options go here */ }
            }
          ]
        },
        {
          test: /\.ts(x?)$/,
          exclude: /node_modules/,
          use: [
            {
              loader: 'babel-loader',
              query: {
                presets: [
                  '@babel/preset-env'
                ]
              }
            },
            {
              loader: 'ts-loader'
            }
          ]
        },
        {
          enforce: 'pre',
          test: /\.js$/,
          exclude: /node_modules/,
          loader: 'eslint-loader'
        },
        {
          test: /\.js$/,
          loader: 'babel-loader',
          query: {
            presets: [
              '@babel/preset-env'
            ]
          }
        },
        {
          test: /\.(png|jpg|gif)$/i,
          use: [
            {
              loader: 'url-loader',
              options: {
                limit: 8192
              }
            }
          ]
        },
        {
          test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/,
          use: [{
            loader: 'file-loader',
            options: {
              name: '[name].[ext]',
              outputPath: '/assets/fonts/'
            }
          }]
        }
      ]
    },
    stats: {
      colors: true
    },
    devtool: 'source-map',
    plugins: [
      new NunjucksWebpackPlugin({
        templates: nunjuckspages
      }),

      new MiniCssExtractPlugin({
        filename: 'assets/css/[name].css'
      }),
     /// new StyleLintPlugin(),
      new BrowserSyncPlugin({
        host: 'localhost',
        port: 3000,
        server: { baseDir: ['dist'] }
      }),
      new ExtraWatchWebpackPlugin({
        dirs: ['templates']
      }),
      new CopyWebpackPlugin([
        // copyUmodified is true because of https://github.com/webpack-contrib/copy-webpack-plugin/pull/360
        { from: 'assets/**/*', to: '.' },
        { from: 'img/*', to: './img' },

      ], { copyUnmodified: true }),
      new CleanWebpackPlugin(),
      new HtmlWebpackPlugin({
        inject: true,
        hash: true,
        publicPath: '/',
        title: 'TEST1',
        template: 'templates/_layouts/layout.html',
        showErrors: true
      }),
    ]
  };
};