У меня есть несколько интерфейсных библиотек JS, которые зависят друг от друга. Дерево выглядит примерно так:
A
/ \
| B
| /
C
Поэтому, когда я собираю B с помощью веб-пакета, моя конфигурация веб-пакета выглядит следующим образом:
module.exports = {
entry: {
'B': [__dirname + '/js/exports.js']
},
output: {
path: __dirname + '/dist',
filename: '[name].js',
// `library` determines the name of the global variable
library: '[name]',
libraryTarget: 'umd'
},
externals: [
/^(jquery|\$)$/i
]
};
Мой конфиг веб-пакета для C выглядит идентично (запись просто называется 'C').
Когда B строится, он связывает в него C.
A и B оба используют экспортированный констант из C под названием Manifest. Manifest.js выглядит (несколько упрощенно):
class _Manifest {
init(id) {
this.id = id;
}
getManifest() {
return this.id;
}
}
export const Manifest = new _Manifest();
Сначала A вызывает Manifest.init, затем B вызывает getManifest (). Однако внутри B getManifest () возвращает undefined. Я полагаю, это потому, что B связывает C (и, следовательно, связывает Manifest), и A также заканчивает тем, что тянет C в node_modules, потому что C указан как зависимость B в package.json B.
Так что, когда я делаю
import {Manifest} from "C" from inside of A
возвращает объект Manifest, отличный от того, что я делаю
import {Manifest} from "C" from inside of B
Я прошу прощения за очень длинный вопрос, и прошу прощения, если это не имеет смысла. Пытался объяснить, что мог.