我使用一个联邦模块库,它使用AMD实现在运行时创建库。此库将在与Webpack捆绑的应用程序中运行。
但是,为了处理外部依赖项,我必须从Webpack的Angular 确定模块的名称。
要下载的示例库:
define('myFederatedLib', ['react', 'lodash'], (react, _) => {
var react = react["default"]
...
}
AMD实施:
// will be [react, lodash]
statics.map((id) => {
// Will happen at runtime
return import(id)
})
问题是“id”将是“react”,但webpack_require(id)将无法找到模块,因为Webpack重命名了它。
我试着写了一个Webpack插件,它可以在compilation
钩子中的很多地方使用。我找到了所有导入都被称为parser.import.tap(...)
的地方,这样我就可以得到库的列表。我找不到Webpack将其转换为__WEBPACK_MODULES__
条目的位置。
1条答案
按热度按时间6mw9ycah1#
Webpack的ProvidePlugin将模块名称指定为AMD模块可以访问的全局变量。这可能会有帮助。给予一个尝试
在AMD中的使用: