Как определить, выполняется ли мой код как пакет 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.