Как создать шаблон переменной в файле javascript с помощью веб-пакета 4 - PullRequest
0 голосов
/ 12 января 2019

В проекте, структурированном с помощью Webpack 4, один из моих источников javascript выглядит как

ReactDOM.render(
    <BrowserRouter basename='/tmsb/dist'>
      <Application />
    </BrowserRouter>,
  document.getElementById('app'));

Я хотел бы вставить в basename некоторое значение в зависимости от некоторых условий сборки (pro / dev).

Я могу использовать HtmlWebpackPlugin, чтобы сделать это в моем index.html, но как насчет файла javascript?

Должен ли я добавить новую запись HtmlWebpackPlugin для этого конкретного файла javascript или есть другой предпочтительный способ?

Похоже, что это не работа для HtmlWebpackPlugin, поскольку этот файл javascript должен оставаться в src/ и не копироваться в какую-либо папку build.

Может быть, я мог бы использовать для этого элемент html5 <base> (любой запрос его значение из javascript)?

1 Ответ

0 голосов
/ 12 января 2019

удалось передать переменные в реагирующий JavaScript с помощью веб-пакета DefinePlugin

      new webpack.DefinePlugin({
        'process.env': {
          'NODE_ENV': JSON.stringify(devMode()),
          'BASENAME': JSON.stringify(baseName())
        }
      }),

, что позволяет в javascript ссылаться на 'baseName' как

ReactDOM.render(
    <BrowserRouter basename={process.env.BASENAME}>
      <Application />
    </BrowserRouter>,
  document.getElementById('app'));

Вместо JSON.stringify кто-то может просто написать '"myvalue"' вместо JSON.stringify('myvalue').

...