Webpack-Dev-Middleware, Express и Webpack генерируют представления. Как это должно работать? - PullRequest
0 голосов
/ 13 апреля 2019
  • publicPath в конфигурации Webpack установлен на /contents/dist/assets/
  • просмотр файла в Express использует handlebars
  • в конфигурации Webpack, шаблон handlebars настроен для вывода правильных тегов скрипта / таблицы стилей ссылки.

    new HtmlWebpackPlugin({
      template: 'views/index.handlebars',
      filename: 'views/index.handlebars',
    }),
    

    Так что это также выводит /contents/dist/assets/ в папке views. Таким образом, /contents/dist/assets/views - это место, где оно будет выведено.

  • и в Express для этого файла настроен маршрут.
    route.get ('*', (req, res) => {
    res.render ('index' .....)

И ...
- Я настроил webpack-dev-middleware для обслуживания активов

  const webpack = require('webpack');
  const webpackDevMiddleware = require('webpack-dev-middleware');
  const config = require('../../webpack.config');
  const compiler = webpack(config);

  const app = express();

  app.use(webpackDevMiddleware(compiler, config.devServer));

  • Я установил плагин new CleanWebpackPlugin() для удаления содержимого папки dist перед каждой сборкой, чтобы он начинался с новой пустой папки.

Как это должно работать на самом деле?

Экспресс ищет вид, где я сказал, чтобы посмотреть.

const viewsDir = resolve(__dirname, '../../client/views');
app.set('views', viewsDir);

Когда я запускаю webpack, он удаляет содержимое папки dist, чтобы его там не было. НО, не webpack-dev-middleware предположим , чтобы обслуживать все эти активы (HTML, Handlebars и т. Д.) Через память? Не файловая система? Когда Экспресс попадает на маршрут /, нет представления для обслуживания.

Как все это предполагается соединить и работать?

...