Сервер разработки Webpack наблюдает за Twig - PullRequest
0 голосов
/ 15 января 2019

Я использую Symfony 4 с Symfony Encore для обработки ресурсов и некоторых полезных функций, таких как HMR.

В настоящее время я могу работать с файлами Sass, CSS, JS и т. Д., И он отлично работает с HMR.

Теперь я хотел бы иметь возможность заставить сервер Weback dev отслеживать файлы * .twig на предмет изменений и запускать перезагрузку в режиме реального времени (поскольку горячая перезагрузка не подходит для шаблонов, отображаемых на сервере).

Я видел кое-что о --watchContentBase и contentBase опциях, но в моем случае это ничего не дает:

WDS CLI:

./node_modules/.bin/encore dev-server --hot --disable-host-check --watchContentBase --contentBase ./templates/ --reload

webpack.config.js:

const Encore = require('@symfony/webpack-encore');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

Encore
    .setOutputPath('public/build/')
    .setPublicPath('/build')
    .cleanupOutputBeforeBuild()
    .autoProvidejQuery()  
    .addPlugin(new MiniCssExtractPlugin('[name].css'))
    .enableSourceMaps(!Encore.isProduction())
    .addLoader({
        test: /\.(sc|sa|c)ss$/,
        use: ['css-hot-loader'].concat(
            MiniCssExtractPlugin.loader,
            {
                loader: 'css-loader'
            },
            {
                loader: 'postcss-loader'
            },
            // {
            //     loader: 'postcss-loader'
            // },
            {
                loader: 'sass-loader'
            }            
        ),
      },)
      .addLoader({
        test: /\.twig$/,
        loader: 'raw-loader'
      },)
    .enableVersioning(Encore.isProduction())
    .addEntry('autocall-main', './assets/js/index.js')
    // .addStyleEntry('autocall-main', ['./assets/scss/index.scss'])
    .splitEntryChunks()
    .enableSingleRuntimeChunk()
;
const config = Encore.getWebpackConfig();

module.exports = config;

Файлы / папки моего проекта соответствуют классической структуре Symfony 4: https://github.com/symfony/demo

Что мне там не хватает?

1 Ответ

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

Загрузчик должен также знать расположение файлов .twig, которые в Symfony 4 находятся в каталоге /templates. Учитывая структуру по умолчанию, это должно заставить вас работать:

  ...
  .addLoader({
    test: /\.twig$/,
    loader: 'raw-loader',
    include: [
      path.resolve(__dirname, "templates")
    ],
  },)
  ...
...