Использование Webpack HtmlWebpackPlugin

Я очень новичок в веб-пакете и прочем, мне нужно решение для разделения base href для index.html и src для bundle.js, для разработки и производство, поскольку оба разные.

Для разработки

базовый href = локальный хост

источник = /bundle.js

Для производства

base href = URL-адрес сервера

источник = /dist/bundle.js

Чтобы решить вышеуказанную проблему, я пытаюсь использовать HtmlWebpackPlugin, ниже приведена настройка webpack.config.js.

var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
  entry: [
    './src/index.js'
  ],
  output: {
    path: __dirname + "/dist",
    publicPath: '/',
    filename: 'bundle.js'
  },
  module: {
    rules: [
    {
     exclude: /node_modules/,
     use:[
      {
      loader: 'babel-loader',
      options:{
          presets: ['react', 'es2015', 'stage-1']
       }
      },
     ]
  },
  plugins: [
        new webpack.ProvidePlugin({
           $: "jquery",
           jQuery: "jquery"
       }),
       new HtmlWebpackPlugin({
          template:'index.html',
          inject:'head',
          hash: true,
          baseHref: 'http://localhost:8030/'
      })
  ]
};

и вот как я пытаюсь использовать baseHref в index.html

<html>
  <head>
    <% if (htmlWebpackPlugin.options.baseHref) { %>
      <base href="<%= htmlWebpackPlugin.options.baseHref %>">
    <% } %>

    /*
       Several css are defined with relative path here
    */
  </head>
  <body>
    <div class="container-fluid"></div>
  </body>
  <script src="/bundle.js"></script>
</html>

Я получаю следующую ошибку, используя вышеуказанные настройки

введите здесь описание изображения

Мне нужна помощь, чтобы узнать, что я делаю неправильно здесь?

Любая помощь будет высоко оценен.

Спасибо.


person iphonic    schedule 09.09.2017    source источник
comment
Установлен ли html-loader?   -  person Prakash Sharma    schedule 09.09.2017
comment
нет, он не установлен, есть ли разница @Prakashsharma?   -  person iphonic    schedule 09.09.2017
comment
Я бы сказал, вместо этого используйте шаблон ejs. Никакой загрузчик для этого не нужен. github.com/jantimon/html-webpack- плагин/блоб/мастер/документы/   -  person Prakash Sharma    schedule 09.09.2017
comment
Ссылка говорит, что если вы используете html-шаблон, то для этого вам нужен html-loader.   -  person Prakash Sharma    schedule 09.09.2017
comment
Я исправил, проблема отсутствовала test: /\.js$/, для babel-loader работало для html, правда сейчас перешел на ejs. Спасибо за помощь.   -  person iphonic    schedule 09.09.2017


Ответы (2)



Основная цель HtmlWebpackPlugin — распознать ваши входные файлы и поместить их в соответствующее место (dist/index.html). Так что вам не нужно это вручную.

Если у вас нет HtmlWebpackPlugin, вам следует запомнить каждый файл, который вы используете в приложении, и вручную добавить их в index.html.

person Predrag Davidovic    schedule 21.09.2020