несоответствия webpack-dev-server при переходе с версии v3 на версию 4

#javascript #webpack #migration #webpack-dev-server

#javascript #webpack #миграция #webpack-dev-server

Вопрос:

После обновления webpack-dev-server с версии v3 до версии 4 я обнаружил два странных несоответствия.

  1. webpack-dev-server publicPath больше не работает, без сопряжения его с новой статической опцией.
    • В прошлом этого было достаточно, чтобы все заработало:
     {
      // ...
      devServer: {
        publicPath: '/'
      }
    }
     
    • Но теперь это требуется вместо:
     {
      // ...
      devServer: {
        devMiddleware: {
          publicPath: '/'
        },
        static: [
          {
            directory: context.replace(///g, '\'),
            publicPath: '/'
          }
        ]
      }
    }
     
  2. Вторая проблема также видна в приведенном выше коде. В новой версии выше вы можете видеть, что у my context есть странный хак: я должен заменить прямые косые черты обратными косыми чертами в Windows — context.replace(///g, '\') . Если я этого не сделаю, я буду наказан неточным URL алгоритмом обнаружения. Поскольку прямые косые черты отлично работают в Windows, не следует жаловаться на то, что это не каталог. Все собственные инструменты Windows считают, что это каталог, но webpack-dev-server не:
     Error: Using a URL as static.directory is not supported
        at getStaticItem (c:thecodenode_moduleswebpack-dev-serverlibServer.js:557:15)
        at c:thecodenode_moduleswebpack-dev-serverlibServer.js:1046:16
        at Array.map (<anonymous>)
        at Server.normalizeOptions (c:thecodenode_moduleswebpack-dev-serverlibServer.js:1041:39)
        at Server.start (c:thecodenode_moduleswebpack-dev-serverlibServer.js:2252:16)
        at Command.<anonymous> (c:thecodenode_modules@webpack-cliservelibindex.js:242:38)
        at async Promise.all (index 1)
        at async Command.<anonymous> (c:thecodenode_moduleswebpack-clilibwebpack-cli.js:1672:7)
     

Моя настройка:

 webpack: 5
OS: Windows 10
Node: 16
 

Я что-то делаю не так? Это документированное / ожидаемое поведение? Или это то, что я должен подать на их странице проблем Github?

Обходной путь для (2): проблема с URL-адресом может быть устранена с помощью path.resolve . т.е.: . directory: path.resolve(context)