Как определить, выполняется ли мой код как пакет Webpack

В настоящее время я экспериментирую со следующей стратегией для динамической загрузки файла json по пути относительно моего модуля:

  • Если мой код упакован как пакет Webpack, используйте import(filename.json)
  • В любом другом случае вернитесь к вызову AJAX с абсолютным путем

Кажется, работает следующее:

function parse (fileName, callback) {
  var path = "./relative/path/to/" + fileName + ".json";
  var cb = process.bind(this, fileName, callback);
  if (typeof webpackJsonp !== "undefined") { // <-- Test if run as Webpack bundle
    // Do dynamic import
  } else {
    // Do Ajax call
  }
}

Тем не менее, я не могу найти документацию по webpackJsonpоднако, я предполагаю, что это не является частью общедоступного API Webpack.

Я также заметил, что webpackJsonp это функция в 3.12 и Object (наследование от Array) в 4.28, указывая, насколько хрупким является полагаться на наличие, ценность или тип webpackJsonp,

Есть ли надежный способ (на будущее) проверить, выполняется ли мой код как пакет Webpack с использованием общедоступного API?

В основном, что я должен заменить typeof webpackJsonp !== "undefined" с, чтобы добиться того же эффекта, но с помощью публичного API?

Кроме того, у меня также есть некоторые проблемы с получением реального импорта для работы в Webpack 4.28. Для этого смотрите import() breaks в Angular 7.2.3 + Webpack 4.28.

0 ответов

Другие вопросы по тегам