@atlassian/webresource-webpack-plugin

中文文档
7.2.2发布于 2026/10/23Apache-2.0TypeScriptCommonJS近 30 天下载 3764

从您的网络包装代码自动生成网络资源定义, 用于Atlassian产品或插件.

中文使用文档
文档目录41 节
  1. 为什么?
  2. 这有什么用?
  3. 如何使用插件
  4. 基本设置
  5. 演示 P2 插件用途
  6. 特征
  7. 代码分割
  8. 灵活生成 web-resource 定义
  9. 模块映射到 web-resource 编号
  10. 遗产 web-resource 包含
  11. 遗产运行时间 resource 包含
  12. 配置插件
  13. pluginKey (须)
  14. xmlDescriptors (须)
  15. addEntrypointNameAsContext (备选)
  16. addAsyncNameAsContext (备选)
  17. contextMap (备选)
  18. conditionMap (备选)
  19. dataProvidersMap (备选)
  20. deprecatedEntrypoints (备选)
  21. transformationMap (备选)
  22. webresourceKeyMap (备选)
  23. providedDependencies (备选)
  24. wrmManifestPath (备选)
  25. resourceParamMap (备选)
  26. locationPrefix (备选)
  27. devAssetsHash (备选)
  28. watch 财务报告和审定财务报表 watchPrepare (备选)
  29. useDocumentWriteInWatchMode (备选)
  30. noWRM (备选)
  31. singleRuntimeWebResourceKey (备选)
  32. chunkLoadingGlobal (备选)
  33. verbose (备选)
  34. 最低要求
  35. 建议使用网页包5
  36. 升级指南
  37. 解决问题和已知问题
  38. 自动排除出故障的工具
  39. 运行时间问题
  40. 一个页面上的多应用程序(chunk/模块ID冲突)
  41. 其他问题

注: @atlassian/webresources-webpack-plugin (中文(简体) ) 替换旧的 地图集-网络包装-网络资源-插图 软件包,现在已贬值.

阿特拉斯网络资源网络包插件

node npm webpack

从您的网络包装代码自动生成网络资源定义, 以供使用 在Atlassian产品或插件中.

为什么?

Atlassian P2 插件系统 2008年运出. 当时,扶养管理 p2系统 网络资源管理器,或 WRM -是管理成长的神的终点 前端资源的复杂性。 它除其他外提出:

  • 指定相关资源捆绑的能力,称为"网络资源".
  • 确定网络资源相互依存性的能力,以便
  • 在生产过程中可实现对必要编码的剪接,以及
  • 可以维持源顺序.

快进至2017年,前端开发与当时大相径庭. JavaScript 模块系统和 Webpack 解决了WRM最初设定的许多问题 出来.

不幸的是,Atlassian的插件系统不会说网页包. 幸好我们可以教书 (原始内容存档于2018-10-21). Webpack to speak Atlassian-Plugin. 这个插件就是这样做的.

这有什么用?

当您将这个插件添加到您的 Webpack 配置时, 它会生成 XML 文件 和各种WRM配置 使您的代码运行在Atlassian产品.

您可以使用任何 JavaScript 模块系统来写入您的插件的前端代码 . 此插件将想方设法将全部内容都转换为正确 <web-resource> 声明, 与适当 <dependency> 声明使您的代码最终加载 在产品运行时间的正确顺序.

此插件支持并生成以下 Webpack 行为的正确WRM输出 :

  • (单位:千美元) <web-resource> 每个网页包装入口
  • 对 <web-resource>s 用于代码分割/ 装入同步块
  • 装入非JavaScript资源(通过 ExtractTextPlugin (见a/cn.9/wg.iii/wp.83,第6段).

如何使用插件

基本设置

将此插件添加到您的网络包配置 。 每个入口的网络包装, 适当 <web-resource> 定义将在 XML 文件中为您生成, 然后可以捆绑到您的 Atlassian 产品或插件中, 准备服务 到产品运行时间的浏览器.

考虑到这个网络包配置:

const WrmPlugin = require('@atlassian/webresource-webpack-plugin');

module.exports = {
  entry: {
    'my-feature': path.join(FRONTEND_SRC_DIR, 'simple.js'),
  },
  plugins: [
    new WrmPlugin({
      pluginKey: 'my.full.plugin.artifact-id',
      contextMap: {
        'my-feature': ['atl.general'],
      },
      xmlDescriptors: path.resolve(OUTPUT_DIR, 'META-INF', 'plugin-descriptors', 'wr-defs.xml'),
    }),
  ],
  output: {
    filename: 'bundled.[name].js',
    path: path.resolve(OUTPUT_DIR),
  },
};

输出会去 <OUTPUT_DIR>/META-INF/plugin-descriptors/wr-defs.xml,看起来是这样的:

<bundles>

        <web-resource key="entrypoint-my-feature">
            <transformation extension="js">
                <transformer key="jsI18n"/>
            </transformation>
            <context>atl.general</context>
            <resource name="bundled.my-feature.js" type="download" location="bundled.my-feature.js" />
        </web-resource>

</bundles>

还有.., <OUTPUT_DIR>/META-INF/fe-manifest-associations/ 将包含此 webpack 构建创建的资源列表 以及AMPs资源协会功能的国家预防机制软件包名称.

软件包名称可以通过通过指定 packageName 字段直接取入WrmPlugin,否则取出 自动从 Webpack 最近的父软件包.json context 目录.

关联在 P2 插件中被 AMP 自动检测出, 并预计将在 target/classes/META-INF/fe-manifest-associations 用于构建插件.

在您的 P2 插件中完成输出

在您的 P2 插件工程中 pom.xml 文件,添加 META-INF/plugin-descriptors 目录作为一个 <Atlassian-Scan-Folders> 标签 输入 <instruction> 用于 AMPS 插件的构建配置.

<build>
  <plugins>
    <plugin>
      <!-- START of a bunch of stuff that is probably different for your plugin, but is outside
           the scope of this demonstration -->
      <groupId>com.atlassian.maven.plugins</groupId>
      <artifactId>maven-amps-plugin</artifactId>
      <version>6.2.11</version>
      <!-- END differences with your plugin -->
      <configuration>
        <instructions>
          <Atlassian-Scan-Folders>META-INF/plugin-descriptors</Atlassian-Scan-Folders>
        </instructions>
      </configuration>
    </plugin>
  </plugins>
</build>

演示 P2 插件用途

您可以在此看到使用 Webpack 插件的演示 P2 插件 : {\fn华文楷体\fs20\bord1\shad1\1che0e0e0\2ch000000}相克出道出道了到底出道了

特征

代码分割

如果你使用任何网络包装的代码分割技术,例如调用 require.ensure, (中文(简体) ), 此插件将自动生成 <web-resource> 定义,以及 自动将其翻译为适当的呼叫,以便在Atlassian同步加载 产品运行时间.

换句话说,你实际上没有努力 使你的关键路径小:

灵活生成 web-resource 定义

默认情况下,生成的网络资源将具有:

  • 基于您网络包装条目名称的密钥,以及
  • 将列入 <context> 以输入点命名.

例如,一个被命名为"我的地物"的入口将产生这样的网络资源:

<web-resource key="entrypoint-my-feature">
  <context>my-feature</context>
  <!-- the resources for your entry-point -->
</web-resource>

对于新代码,这应该足够让你的特性加载到你想要的位置 插件或产品 - 假设服务器端的调用包含您的网络资源 .

有时,为了确保你的代码负载 当它被预期,你需要 覆盖 为您生成的值。 在定义 WrmPlugin配置,可以提供:

  • A 类 webresourceKeyMap 将网络资源的密钥或名称更改为您需要的,或者
  • A 类 contextMap 将网络资源包含在您期望它加载的任意数量的网络资源上.

很可能你想要为一个网络资源指定额外的上下文来加载到. 何时 您所有的网络资源都是通过上下文自动生成和加载的,不需要知道它的密钥. 你个 通常会在将旧代码重构到网络包装时提供自己的网页资源密钥,以保留 任何先前存在的代码中的依赖关系.

模块映射到 web-resource编号

如果使用普通库或模块——例如:"jquery"或"backbone"——你知道 此模块由产品运行时的 P2 插件提供, 您可以绘制您的用法 模块 web-resource 这提供了它.

你只需要宣布适当的网页包装 external 模块,并添加条目 用于外部 providedDependencies 此插件的配置 。 当你的代码是 编译,此插件将自动添加一个合适的 web-resource 依赖关系 将保证您的代码负载在它的受抚养人之后, 并会防止您的捆绑变得太大.

详细情况请检查 providedDependencies 区域.

遗产 web-resource 包含

90%的时间, 您的 JavaScript 代码应该声明对其它模块的明确依赖 . 在剩下的10%的情况下,您可能需要在运行时依赖WRM,以确保您的代码负载进入 正确的顺序。 9%的时间,模块映射功能 应该足够你。 其余部分 1%,你可能只需要添加一个 web-resource 依赖强制命令.

您可以在代码中添加导入语句,以添加一个 <dependency> 到您生成的网络资源 .

包括 web-resources 从导出 这个 插件, 您可以使用短标记, 如 :

// in AMD syntax
define(function (require) {
  require('wr-dependency!my-webresource');
  console.log('my-webresource will have been loaded synchronously with the page');
});

// in ES6
import 'wr-dependency!my-webresource';

console.log('my-webresource will have been loaded synchronously with the page');

包括出口资源 其他项目 插件, 提供完整的插件密钥 :

// in AMD syntax
define(function (require) {
  require('wr-dependency!com.atlassian.auiplugin:dialog2');
  console.log('webresource will have been loaded synchronously with the page');
});

// in ES6 syntax
import 'wr-dependency!com.atlassian.auiplugin:dialog2';

console.log('webresource will have been loaded synchronously with the page');

遗产运行时间 resource 包含

95%的时间, 您应用程序的非 JavaScript 资源-- CSS, 图像, 模板等.. 可以通过网包装入器捆绑和装入。 有时候,虽然,你会有 只在Atlassian产品运行期间工作的资源 -- -- 认为事情是这样的 阿特拉斯语 豆类模板和产品 Less文件 用于外观和外观样式——和 无法在超前编译期间 让他们工作.

在这种情况下,您可以在代码中添加导入语句,以添加一个 <resource> 给您的 生成的网络资源 :

// in AMD syntax
define(function (require) {
  require('wr-resource!my-runtime-styles.css!path/to/the/styles.less');
  require('wr-resource!my-compiled-templates.js!path/to/the/templates.soy');

  console.log('these styles and templates will be transformed to CSS and JS at product runtime.');
});

// in ES6 syntax
import 'wr-resource!my-runtime-styles.css!path/to/the/styles.less';
import 'wr-resource!my-compiled-templates.js!path/to/the/templates.soy';

console.log('these styles and templates will be transformed to CSS and JS at product runtime.');

配置插件

Atlassian Web-Resource网络包插件具有一些配置选项.

pluginKey (须)

您的 P2 插件的完全合格组名和 artechId 。 由于WRM的工作方式,这个 值对于支持同步块的装入以及任意性 (非JavaScript)资源.

xmlDescriptors (须)

一个绝对文件路径, 输出生成的 XML 到哪里 。 这应该是指子目录 马文项目 ${project.build.outputDirectory} (评价为: target/classes 在一个 标准马文项目).

此配置值的子目录部分需要在工程中配置 pom.xml,作为 以上基本使用部分所示.

addEntrypointNameAsContext (备选)

默认是 false。 。 。 .

设定为 true,所有生成的网络资源都将添加到 a 上下文与出入口同名.

切入点名称中任何打破批次 URL 的字符都被替换为 -,以及任何线索 - 已删除 : 切入点 feature/nested/app 成为上下文 feature-nested-app。使用“contextMap”选项手动设置名称.

addAsyncNameAsContext (备选)

默认是 false。 。 。 .

设定为 true,所有生成的用于有名称(通过 webpackChunkName 将添加到 名称“ async- chunk- ” 的上下文, 字符替换相同 作为 addEntrypointNameAsContext。 。 。 .

contextMap (备选)

一组键值对,允许您指定哪些网络包条目点 应在Atlassian产品运行时间的网络资源背景下出现.

您可以提供单个的网络资源上下文作为字符串,也可以提供一系列上下文字符串.

这些名称作为书面使用, 所以一个打破批量 URL 失败构建的名称: 上下文可能不包含 /, (中文(简体) ), ?, (中文(简体) ), +, (中文(简体) ), ,, (中文(简体) ), #, (中文(简体) ), %, (中文(简体) ), &,白色空间或可打印的 ASCII 外部的任何东西,并且可能不会从 -。价值 不是一个非空字符串被忽略.

conditionMap (备选)

指定对某一入境点适用何种条件的对象. 简单示例 :

conditionMap: {
  "my-first-entry-point": {
    "class": "foo.bar"
  },
}

将产生 :

<condition class="foo.bar" />

配有参数的复杂嵌入实例:

conditionMap: {
  "my-first-entry-point": {
    "type": "AND",
    "conditions": [
      {
        "type": "OR",
        "conditions": [
          {
            "class": "foo.bar.baz",
            "invert": true,
            "params": [
              {
                "attributes": {
                  "name": "permission"
                },
                "value": "admin"
              }
            ]
          },
          {
            "class": "foo.bar.baz2",
            "params": [
              {
                "attributes": {
                  "name": "permission"
                },
                "value": "project"
              }
            ]
          }
        ]
      },
      {
        "class": "foo.bar.baz3",
        "params": [
          {
            "attributes": {
              "name": "permission"
            },
            "value": "admin"
          }
        ]
      }
    ]
  }
}

将产生 :

<conditions type="AND">
  <conditions type="OR">
    <condition class="foo.bar.baz" invert="true">
      <param name="permission">admin</param>
    </condition>
    <condition class="foo.bar.baz2" >
      <param name="permission">project</param>
    </condition>
  </conditions>
  <condition class="foo.bar.baz3" >
    <param name="permission">admin</param>
  </condition>
</conditions>

dataProvidersMap (备选)

这个 dataProvidersMap 选项允许在输入点和数据提供者列表之间配置关联.

数据提供者可用于提供从服务器端到前端的数据,并声称使用 WRM.data.claim API (英语). 欲了解更多数据提供者,请参考: 正式文件。 。 。 .

要将条目与数据提供者列表相连接,您可以配置以下的 Webpack 配置 :

module.exports = {
  entrypoints: {
    'my-first-entry-point': './first-entry-point.js',
    'my-second-entry-point': './first-entry-point.js',
  },

  plugins: [
    WrmPlugin({
      pluginKey: 'my.full.plugin.artifact-id',
      dataProvidersMap: {
        'my-first-entry-point': [
          {
            key: 'my-foo-data-provider',
            class: 'com.example.myplugin.FooDataProvider',
          },
        ],

        'my-second-entry-point': [
          {
            key: 'my-bar-data-provider',
            class: 'com.example.myplugin.BarDataProvider',
          },

          {
            key: 'my-bizbaz-data-provider',
            class: 'com.example.myplugin.BizBazDataProvider',
          },
        ],
      },
    }),
  ],
};

将产生 :

<atlassian-plugin>
    <web-resource key="<<key-of-my-first-entry-point>>">
        <resource  />
        <resource  />

        <data key="my-foo-data-provider" class="com.example.myplugin.FooDataProvider" />
    </web-resource>

    <web-resource key="<<key-of-my-first-entry-point>>">
        <resource  />
        <resource  />

        <data key="my-bar-data-provider" class="com.example.myplugin.BarDataProvider" />
        <data key="my-bizbaz-data-provider" class="com.example.myplugin.BizBazDataProvider" />
    </web-resource>
</atlassian-plugin>

deprecatedEntrypoints (备选)

指定哪些切入点应标为已贬值的对象.

A 类 true 可使用数值来简单地标出一个切入点被贬值,而不提供任何补充资料.

否则,可以使用一个对象来提供附加上下文,说明何时和为什么切入点贬值。 给 alternative 键, 数值应当为: plugin-key:web-resource,或者作为同一插件中另一个切入点的参考.

module.exports = {
  entrypoints: {
    'my-first-entry-point': './first-entry-point.js',
    'my-second-entry-point': './second-entry-point.js',
    'my-third-entry-point': './third-entry-point.js',
  },

  plugins: [
    WrmPlugin({
      pluginKey: 'my.full.plugin.artifact-id',
      deprecatedEntrypoints: {
        'my-first-entry-point': true,
        'my-second-entry-point': {
          sinceVersion: '3.0',
          removeInVersion: '4.0',
          // alternative could also reference another entrypoint i.e. 'my-third-entry-point'
          alternative: 'some.other.plugin:replacement-resource',
          extraInfo: 'We moved all functionality to some.other.plugin',
        },
      },
    }),
  ],
};

将产生 :

<atlassian-plugin>
    <web-resource key="entrypoint-my-first-entry-point">
        <!-- ... rest of definition ... -->
        <deprecated />
    </web-resource>
    <web-resource key="entrypoint-my-second-entry-point">
        <!-- ... rest of definition ... -->
        <deprecated since="3.0"
                    remove="4.0"
                    alternative="some.other.plugin:replacement-resource"
        >
            We moved all functionality to some.other.plugin
        </deprecated>
    </web-resource>
</atlassian-plugin>

transformationMap (备选)

指定要应用到文件类型的对象. 默认转换为:

  • *.js 备忘 jsI18n
  • *.soy 备忘 soyTransformer, (中文(简体) ), jsI18n

自定义转换的示例配置 :

{
  "transformationMap": {
    "js": ["myOwnJsTransformer"],
    "sass": ["myOwnSassTransformer"]
  }
}

这将为每个生成的网络资源设定以下转型:

<web-resource key="...">
    <transformation extension="js">
      <transformer key="myOwnJsTransformer"/>
    </transformation>
    <transformation extension="sass">
      <transformer key="myOwnSassTransformer"/>
    </transformation>
</web-resource>

如果您想要延长默认变换, 您可以使用内置 extendTransformations 函数由插件提供. 它会将默认的转换与您的自定义配置合并 :

const WrmPlugin = require('@atlassian/webresource-webpack-plugin');

new WrmPlugin({
  pluginKey: 'my.full.plugin.artifact-id',
  transformationMap: WrmPlugin.extendTransformations({
    js: ['myOwnJsTransformer'],
    sass: ['myOwnSassTransformer'],
  }),
});

您也可以通过路过完全禁用转换 false 插件配置值 :

{
  "transformationMap": false
}

webresourceKeyMap (备选)

允许您更改给定的 Web 包条目点生成的 Web 资源的名称 .

当您期望其他插件需要直接依赖您自动生成的网络资源时, 这样做是有用的, 例如 当您重构一个通过 web 软件包生成的已有特性( 及其网络资源) 时.

此参数可以选择 string 或者说 object 有属性 key, (中文(简体) ), name 财务报告和审定财务报表 state 对应 key, (中文(简体) ), name 财务报告和审定财务报表 state 属性 web-resource XML 元素 . name 财务报告和审定财务报表 state 属性是可选的.

绘图如下:

{
  "webresourceKeyMap": {
    "firstWebResource": "first-web-resource",
    "secondWebResource": {
      "key": "second-web-resource",
      "name": "Second WebResource",
      "state": "disabled"
    }
  }
}

将产生下列网络资源:

<atlassian-plugin>
<web-resource key="first-web-resource" name="" state="enabled">
  <!-- your resources definitions -->
</web-resource>
<web-resource key="second-web-resource" name="Second WebResource" state="disabled">
  <!-- your resources definitions -->
</web-resource>
</atlassian-plugin>

providedDependencies (备选)

一个对象的地图,让你联想到什么网络资源 包含特定的外部JS依赖.

外部依赖性绘图的格式如下:

{
  'dependency-name': {
    dependency: 'atlassian.plugin.key:webresource-key',
    import: {
      // externals configuration
    },
  },
}

当您的代码通过网络包编译时, 任意发生 dependency-name 在模块导入中找到 语句将在 web 软件包输出中替换,并使用适当的网页资源 <dependency> 将会是 添加到生成的网络资源中 .

这个 import 属性是一个字符串或对象,指定如何在代码中导入依赖.

提供的对象是紧随 网络包外部格式。 。 。 .

如果你没有设置 externalsType 或者说 library.type 在配置中,然后使用的默认属性是 var。另一个流行的选择是 amd 由于大多数Atlassian产品都使用AMD来装入模块(但随后是 externalsType 也应予以确定).

wrmManifestPath (备选)

用于存储对象映射的 WRM 显示文件的路径 . 在 providedDependencies 属性是一个依赖性的地图,包括生成的网络资源密钥. 此映射是完全相同的格式 providedDependencies 以上选项, 因此,人们可以用这张地图作为源 providedDependencies 在另一个建筑中:

{
  "providedDependencies": {
    "dependency-name": {
      "dependency": "atlassian.plugin.key:webresource-key",
      "import": {
        "var": "require('dependency-amd-module-name')",
        "amd": "dependency-amd-module-name"
      }
    }
  }
}

说明和限制

  • 两者 output.library 财务报告和审定财务报表 output.libraryTarget 必须设置用于创建 WRM 显示文件.
  • output.library 不得含有[通 或[通 ,但允许使用[名]
  • output.libraryTarget 必须设置为 amd
  • 未来 WRM 清单文件中可能添加更多属性

示例配置

{
  "output": {
    "library": "[name]",
    "libraryTarget": "amd"
  }
}

resourceParamMap (备选)

指定额外参数的对象( E)<param/>用于 resource编号.

例如,要指定内容类型,服务器应该对某一资产文件类型(例如图像/字体)作出回应:

{
  "resourceParamMap": {
    "svg": [
      {
        "name": "content-type",
        "value": "image/svg+xml"
      }
    ]
  }
}

某些Atlassian产品可能需要根据装入的文件类型设置具体内容类型. 默认情况下包含 svg 作为“ 图像/ svg+xml” 的内容类型

locationPrefix (备选)

添加给前缀值到 location 属性 resource 节点. 当您的 Webpack 输出被放置在插件最终根文件夹的子目录中时使用此选项 .

devAssetsHash (备选)

用户在网络资源名称中提供了包含开发模式所需要全部资产的值(而不是DEV PSEUDO HASH).

watch 财务报告和审定财务报表 watchPrepare (备选)

激活"监视-模式". 这必须与一个webpack-dev-server同时运行.

watchPrepare

在 XML 描述符中创建"代理"资源并引用它们. 这些代理资源将重定向到一个也必须运行的webpack-dev-server. 为使这项工作正常进行,确保webpack-配置"options.output.publicPath"指向webpack-dev-server - 包括其端口. (例如:http://localhost:9000)

watch (备选)

使用 Webpack-dev-server 运行进程时使用.

useDocumentWriteInWatchMode (备选)

设定为 true,生成的监视模式模块将同步将脚本标记添加到文档中 document.write 当文档正在装入时,而不是总是依赖同步附加的脚本标记(默认行为).

当捆绑有望提前在页面上提供时,例如当模板中的代码依赖于javascript来被屏蔽地加载时,此功能是有用的.

noWRM (备选)

将不会在 Webpack 运行时间中添加任何 WRM 特性, 或尝试在仍然处理请求时重定向 async- chunk 请求到 wr-dependency 财务报告和审定财务报表 wr-resource。 。 。 . 这对于在提供WRM功能的运行中产品之外开发前端可能有用.

singleRuntimeWebResourceKey (备选)

使用 Webpack 选项时为 Webpack 运行时间设置一个特定的 Web 资源密钥 optimization.runtimeChunk 改为 single (见 运行时间Chunk 文档) (中文(简体) ). 默认是 common-runtime。 。 。 .

chunkLoadingGlobal (备选)

覆盖用于 output.chunkLoadingGlobal 当插件自动设置时。 在Webpack 5和Rspack中, chunkLoadingGlobal 是用于装入块的全局变量。 何时 多个应用程序 在同一个页面上使用此插件负载,每个应用程序必须有一个不同的 chunkLoadingGlobal 因此块/模块ID不相冲突。 如果您没有设置 output.chunkLoadingGlobal 在您的配置中,插件从 pluginKey (或如果提供的话,来自本选项). 如果你已经设置 output.chunkLoadingGlobal 在您的 webpack/ rspack 配置中,该值保持不变.

verbose (备选)

显示日志输出的动词。 默认是 false。 。 。 .

最低要求

此插件的构建是为了与以下版本的外部构建工具相配合:

这个插件通过webpack 5.0+和rspack 1.5+测试.

  • 要编译 CSS, 使用 css-loader >= 5 和 mini-css-extract-plugin >= 2。 。 。 .
  • 使用时 mini-css-extract-plugin 运行时间选项需要设置为错误 。 这样可以防止 mini-css-extract-plugin 由WRM完成.

升级指南

解决问题和已知问题

自动排除出故障的工具

我们提供了一个工具,帮助排除网络包和Atlassian P2项目的配置出问题.

要检查您的工程是否正确配置, 请打开终端并导航到您的工程的根目录 。 下, 运行故障排除命令 :

npx @atlassian/wrm-troubleshooting

该工具会问你几个问题, 并指引您是否发现您的项目配置有问题 .

你可以读到更多关于 清除故障的工具 国家预防机制网页 @atlassian/wrm-troubleshooting 软件包。 。 。 .

运行时间问题

e.O is not a function

OR( 当最小化: 虚假)

__webpack_require__.O is not a function

如果您使用外部插件提供的捆绑的网络资源 optimization.runtimeChunk: 'single' 财务报告和审定财务报表 optimization.splitChunks.chunks: 'all' 您可能需要配置您的插件来同时使用 runtime: 'single' 这样,在加载块时共享的 webpack 运行时对象具有相同的签名.

一个页面上的多应用程序(chunk/模块ID冲突)

当使用此插件构建的多个应用程序被加载在同一页上(例如不同的P2插件或出入口)时,每个应用程序的运行时间必须被隔离. 否则,它们可以共享相同的块负载全局和数字块/模块ID可以指每个app中不同的代码.

解决方案 : 每个建筑必须有一个独特的 output.chunkLoadingGlobal (Webpack 5 / Rspack) (中文(简体) ). 插件为您这样做: 如果 output.chunkLoadingGlobal 不是在您的配置中设定的 而是从您的配置中设定的 pluginKey (因此每个插件都得到一个独特的运行时间). 您可以用插件选项覆盖生成的值 chunkLoadingGlobal,或设置 output.chunkLoadingGlobal 直接在您的 Webpack/ rspack 配置中 。 每个应用程序使用不同的配置时不需要额外的每个应用程序配置 pluginKey。 。 。 .

其他问题

请检查您的构建和捆绑是否如您预期的那样有效, 没有启用此插件 。 您可以禁用WRM Webpack插件,并捆绑代码,以验证webpack输出中没有出错或警告.

这个插件对Webpack最终输出的修改很少. 如果你的包有内容错误, 这可能是由于网页包与您构建配置中的加载器插件的版本不兼容.

此插件的已知问题列表于 阿特拉斯生态系统问题跟踪仪。 。 。 . 我们的发展团队每月审查所有未决问题和分类.

版本与发布记录

@atlassian/webresource-webpack-plugin 共发布 32 个版本,首次发布于 2025/05/29;过去 12 个月发布了 19 个版本。

版本发布日期距今
7.2.2latest2026/10/2315 天前
7.2.1-6c1fc7ehash-release2026/10/1919 天前
7.2.1-202301d2026/08/242 个月前
7.2.12026/08/242 个月前
7.2.02026/08/192 个月前
7.1.9-4e673662026/08/192 个月前

其他发布通道:test → 7.0.2-DCA11Y-1773.1,test-4 → 4.10.2-64a2ef2,hash-release → 7.2.1-6c1fc7e。

关于 @atlassian/webresource-webpack-plugin 的常见问题

@atlassian/webresource-webpack-plugin 是什么?

从您的网络包装代码自动生成网络资源定义, 用于Atlassian产品或插件.

如何安装 @atlassian/webresource-webpack-plugin?

在项目目录运行 npm install @atlassian/webresource-webpack-plugin,或使用 pnpm add / yarn add / bun add。

@atlassian/webresource-webpack-plugin 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@atlassian/webresource-webpack-plugin 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@atlassian/webresource-webpack-plugin 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=12。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@atlassian/webresource-webpack-plugin 可以商用吗?

@atlassian/webresource-webpack-plugin 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@atlassian/webresource-webpack-plugin 的下载量有多少?

根据 npm 官方下载统计,@atlassian/webresource-webpack-plugin 在 2026/10/07 – 2026/11/05 这 30 天内被下载 3,764 次,日均约 125 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@atlassian/webresource-webpack-plugin 还在维护吗?

最新版本 7.2.2 发布于 2026/10/23(15 天前);至今共发布 32 个版本,其中过去 12 个月发布了 19 个;首次发布于 2025/05/29。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。