我正在尝试在我的webpack项目中包含模块化第三方库(PhysicsJS)。该库对AMD和CommonJS友好,并且具有我想要访问的格式良好的子模块。但它主要是通过require.config()
中的packages
定义规范为RequireJS构建的,因此入口点不是标准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')
是不是一个解决方案。