Как отделить webpack-dev-server от моих splitChunks в Webpack?

Я пытаюсь заставить несколько точек входа работать с webpackDevServer.

Для одной точки входа требуется вся моя папка node_modules. Для другого требуется только один файл с одним файлом console.log (файл точки входа).

По какой-то причине мой единственный файл с одним console.log не запускается. См. этот вопрос как хорошо.

Я тестировал эту настройку в WebpackDevServer, поэтому я подозревал, что для работы всех файлов, возможно, требуется как минимум WebpackDevServer. Итак, я изменил свой optimization.splitChunks, чтобы он выглядел так: на основе примера из документов webpack:

optimization: {
    splitChunks: {
        cacheGroups: {
            commons: {
                test: /[\\/]node_modules[\\/]/,
                name: 'vendor',
                chunks: 'all'
            },
            vendor: {
                test: /[\\/]node_modules[\\/](webpack|webpack-dev-server)[\\/]/,
                name: 'webpack',
                chunks: 'all',
            }
        }
    },
},

Я ожидаю, что будет пакет «поставщик» и пакет «веб-пакет». Есть только "вендор" (и мои точки входа):

                                         app.js   6.92 MiB            app  [emitted]  app
                               resetPassword.js   35.2 KiB  resetPassword  [emitted]  resetPassword
                                      vendor.js   14.4 MiB         vendor  [emitted]  vendor

Как я могу получить webpack-dev-server в его собственном комплекте, который затем я могу включить в HtmlWebpackPlugin, чтобы проверить, нужны ли этот (или другие node_modules) для запуска моего console.log?

Конфигурация веб-пакета

module.exports = {
    entry: {
        app: './public/js/ide.js',
        resetPassword: './public/js/reset_password.js'
    },
    output: {
        path: path.resolve(__dirname, '../build'),
        filename: '[name].js',
        publicPath: '/'
    },
    ...
optimization: {
    splitChunks: {
        cacheGroups: {
            commons: {
                test: /[\\/]node_modules[\\/]/,
                name: 'vendor',
                chunks: 'all'
            },
            vendor: {
                test: /[\\/]node_modules[\\/](webpack|webpack-dev-server)[\\/]/,
                name: 'webpack',
                chunks: 'all',
            }
        }
    },
},
    plugins: [
        new HtmlWebpackPlugin({
            filename: 'index.html',
            template: 'public/html/ide.html',
            inject: true,
            chunks: ['app', 'vendor']
        }),
        new HtmlWebpackPlugin({
            filename: 'reset_password.html',
            template: 'public/html/reset_password.html',
            inject: true,
            chunks: ['resetPassword'] // this does not work
            //chunks: ['resetPassword', 'vendor'] //this works
        }),
    ],
}

reset_password.js

console.log('hello') 

Конфигурация сервера разработки Webpack

devServer: {
    clientLogLevel: 'warning',
    historyApiFallback: true,
    hot: true,
    compress: true,
    host: HOST,
    port: PORT,
    open: config.dev.autoOpenBrowser,
    overlay: false,
    publicPath: '/',
    contentBase: [
        path.join(__dirname, "../../public"), 
        path.join(__dirname, "../../public/js")],
    watchOptions: {
        poll: config.dev.poll,
    },
    disableHostCheck: true,
    https: true,
    noInfo: false,
},

person Caleb Jay    schedule 24.09.2018    source источник


Ответы (1)


Добавьте атрибут приоритета к каждому фрагменту. Из документов.

splitChunks.cacheGroups.priority

количество

Модуль может принадлежать нескольким группам кэша. Оптимизация отдаст предпочтение группе кеша с более высоким приоритетом. Группы по умолчанию имеют отрицательный приоритет, чтобы позволить настраиваемым группам иметь более высокий приоритет (значение по умолчанию — 0 для настраиваемых групп).

Таким образом, ваш код будет примерно таким. Обратите внимание, что приоритетом является наивысшее числовое значение, а не значение ранга.

optimization: {
  splitChunks: {
    cacheGroups: {
      commons: {
        test: /[\\/]node_modules[\\/]/,
        name: 'vendor',
        chunks: 'all',
        priority: 1
      },
      vendor: {
        test: /[\\/]node_modules[\\/](webpack|webpack-dev-server)[\\/]/,
        name: 'webpack',
        chunks: 'all',
        priority: 2
      }
    }
  },
},
person Brian Blain    schedule 25.02.2019