Я пытаюсь включить модульную стороннюю библиотеку (PhysicsJS) в свой проект веб-пакета. Эта библиотека совместима с AMD и CommonJS и имеет хорошо сформированные подмодули, к которым я хочу получить доступ. Однако он в основном структурирован для RequireJS через его спецификацию packages
в require.config()
, поэтому точка входа не является стандартом index.js
. Вместо этого точка входа - physicsjs.js
.Устранение внешних подмодульных зависимостей в webpack
Другими словами, я не могу понять, как настроить webpack для разрешения как основного файла библиотеки, так и ее подмодулей. Кажется, что если точка входа в библиотеку не index.js
, и у нее есть подмодули, вам не повезло, и я просто не могу поверить, что это правильно, поэтому я должен что-то упустить.
Итак, как можно сделать следующие заявления для разрешения?
require('physicsjs'); // entry point
require('physicsjs/bodies/rectangle'); // submodule
Я попытался изменения этого конфигурация:
resolve: {
modulesDirectories: [
'js/bower_components'
],
alias: {
'physicsjs': 'PhysicsJS/dist/',
// doesn't find physicsjs.js
'physicsjs': 'PhysicsJS/dist/physicsjs.js'
// doesn't find the submodules
}
},
Структура каталогов выглядит примерно так:
+ js
- main.js
+ bower_modules
+ PhysicsJS
+ dist
- physicsjs.js // module entry point
+ bodies
- rectangle.js // desired submodule
+ lib
- MyModule.js
Обратите внимание, что PhysicsJS действительно есть Минимизированные версии всей библиотеки, которые я буду использовать, если нет другой альтернативы, но я бы предпочел загрузить только то, что я на самом деле использую.
Кроме того, сами подмодули используют require('physicsjs')
, поэтому звонок require('physicsjs/physicsjs')
- - не решение.