我需要创建__WEBPACK_MODULES__中键的原始import语句的Map

px9o7tmv  于 2023-10-19  发布在  Webpack
关注(0)|答案(1)|浏览(147)

我使用一个联邦模块库,它使用AMD实现在运行时创建库。此库将在与Webpack捆绑的应用程序中运行。
但是,为了处理外部依赖项,我必须从Webpack的Angular 确定模块的名称。
要下载的示例库:

  1. define('myFederatedLib', ['react', 'lodash'], (react, _) => {
  2. var react = react["default"]
  3. ...
  4. }

AMD实施:

  1. // will be [react, lodash]
  2. statics.map((id) => {
  3. // Will happen at runtime
  4. return import(id)
  5. })

问题是“id”将是“react”,但webpack_require(id)将无法找到模块,因为Webpack重命名了它。
我试着写了一个Webpack插件,它可以在compilation钩子中的很多地方使用。我找到了所有导入都被称为parser.import.tap(...)的地方,这样我就可以得到库的列表。我找不到Webpack将其转换为__WEBPACK_MODULES__条目的位置。

6mw9ycah

6mw9ycah1#

Webpack的ProvidePlugin将模块名称指定为AMD模块可以访问的全局变量。这可能会有帮助。给予一个尝试

  1. // webpack.config.js
  2. plugins: [
  3. new webpack.ProvidePlugin({
  4. react: 'React',
  5. lodash: '_',
  6. }),
  7. ],

在AMD中的使用:

  1. // myFederatedLib.js
  2. define('myFederatedLib', ['react', 'lodash'], (react, _) => {
  3. // Use react and lodash as global variables
  4. });

相关问题