@atlaskit/atlassian-context

中文文档
2.0.0发布于 2026/09/24Apache-2.0TypeScriptESM + CJS近 30 天下载 559.7万

提供周边特有URL分辨率,并帮助识别产品运行在何种环境.

中文使用文档
文档目录18 节
  1. 所有权
  2. 安装
  3. 先决条件
  4. 设置
  5. 服务器生成的 HTML
  6. 无服务器
  7. API 密码
  8. 配置 ()
  9. 获取ATL 连接域( )
  10. 获取 ATL 康特文本Url ()
  11. 是FedRamp () (中文(简体) )
  12. 是Fedramp 模版( )
  13. 孤立的云( )
  14. 孤立的 Cloud 域( )
  15. 孤立 ContextId ()
  16. 获得Domain InContext( 子域, 环境)
  17. 获取 UrlForDomain 连接( 子域, 环境)
  18. 解析器

环境背景库

提供周边特有URL分辨率,并帮助识别产品运行在何种环境.

更多信息,请参见本文最初的考虑: https://hello.atlassian.net/wiki/spaces/FEDRAMP/pages/2561199256/UI+隔离

所有权

2025年,图书馆所有权被划入规范行业. 请联系#帮助-跨界的帮助.

安装

npm install @atlaskit/atlassian-context --save

先决条件

注: 如果在2025年5月以后首次登入图书馆,则跳过这些预先要求。 这些先决条件是原始的 configure(), (中文(简体) ), getATLContextDomain(), (中文(简体) ), getATLContextUrl(),以及 isFedRamp() 函数,将在近期内贬值.

为了 @atlaskit/atlassian-context 正确工作 window.ATL_CONTEXT_DOMAIN 必须是 设置在页面上。 产品必须在窗口上或者调用数据 configure(),在 呼叫任何接听*()电话。 否则 getATLContextDomain() 财务报告和审定财务报表 getATLContextUrl() 将使用 后退,并可能返回一个未经修正的反应.

如果使用已贬值的 isFedRamp() 方法,还 window.UNSAFE_ATL_CONTEXT_BOUNDARY = 'fedramp-moderate' | 'commercial' 必须设置在页面上. 否则,你可能会为环境服务 代码与它们无关.

设置

注: 如果在2025年5月以后首次登入库, 请跳过此设置 。 获取 window.ATL_CONTEXT_DOMAIN 财务报告和审定财务报表 window.UNSAFE_ATL_CONTEXT_BOUNDARY 仅用于 configure(), (中文(简体) ), getATLContextDomain(), (中文(简体) ), getATLContextUrl(),以及 isFedRamp() 函数,将在近期内贬值.

要返回正确的结果, 此图书馆必须关闭 。 它是如何被关闭的 取决于你的服务。 任何Micros服务都可以从 配置登记任何进一步的帮助, 联系到 # 帮助- 配置- 注射器。 。 。 .

QQ 警告 : window.MICROS_PERIMETER 将替换为 window.UNSAFE_ATL_CONTEXT_BOUNDARY 内 未来迭代 - 见 发生 - 发生 - 发生。 。 。 .

服务器生成的 HTML

建议

如果您的服务总是生成静态 HTML, 您可以利用窗口上下文来正确配置 这个图书馆 将这个速度模板片段视为一个实例:

<!-- Assuming your Java service has loaded the appropriate configuration into $domain_config -->

<script nonce="$nonce">
    window.ATL_CONTEXT_DOMAIN = $domain_config.stringify();
</script>

<!-- Assuming your Java service has loaded the micros perimeter into $micros_perimeter.
    NOTE: Only needed if your service uses the isFedRamp function
  -->
<script nonce="nonce">
    window.UNSAFE_ATL_CONTEXT_BOUNDARY = $micros_perimeter.stringify();
</script>

如果找到变量, 库将自动关闭此配置 。 如果 不可用配置, 它会使用回落并可能返回未校正的值 .

无服务器

挫折: 这将退缩您的应用性能 。 您的页面不再是没有服务器的,因为它 fedRAMP 配置的要求。 您应该移动到基于服务器的托管 .

在渲染前,您必须获取数据

import { configure } from '@atlaskit/atlassian-context';

function init(){
  // get the config from globaledge
  const data = await fetch('https://my.backend.api/_config/domains');

  // tell @atlaskit/atlassian-context about it
  configure(data)

  // and only then run other code / render your page
  ReactDOM.render(<YourApp />, element)
}

如果您的应用程序是通过 React SSR 实现的, 您应该确保您需要手动操作 援引 configure() 函数与提供的数据.

API 密码

配置 ()

免责声明: 这一点无需用于: isFedrampModerate(), (中文(简体) ), isIsolatedCloud(), (中文(简体) ), isolatedCloudDomain(), (中文(简体) ), isolationContextId(), (中文(简体) ), getDomainInContext(...),以及 getUrlForDomainInContext(...) 函数.

收集数据,并存储在 window.ATL_CONTEXT_DOMAIN 用于以后使用.

获取ATL 连接域( )

免责声明: 请使用 getDomainInContext(subdomain, environment) 而不是这一职能,因为这一职能的贬值过程将在近期内开始.

返回给定的Atlassian服务域 。 它依赖 window.ATL_CONTEXT_DOMAIN 为: 在页面上显示,以防万一 window.ATL_CONTEXT_DOMAIN 未定义 getATLContextDomain() 将 尝试从硬码域列表中获取该值, 无法更新 。 这个 倒计时依赖 window.UNSAFE_ATL_CONTEXT_BOUNDARY 如果未定义, 则在页面中显示 getATLContextDomain() 将回落到非痛苦(商业)值.

import { getATLContextDomain } from '@atlaskit/atlassian-context';

getATLContextDomain('jira'); // jira.atlassian.com OR jira.atlassian-fex.com depending based on environment
getATLContextDomain('confluence'); // confluence.atlassian.com
getATLContextDomain('admin'); // admin.atlassian.com OR admin.atlassian-fex.com

获取 ATL 康特文本Url ()

免责声明: 请使用 getUrlForDomainInContext(subdomain, environment) 而不是这一职能,因为这一职能的贬值过程将在近期内开始.

返回全部内容 url 提供阿特拉斯服务。 以为基础 getATLContextDomain,这个 依赖 window.ATL_CONTEXT_DOMAIN 在页上显示,否则 getATLContextDomain 将 尝试从硬码域列表中获取该值, 无法更新 可能回落到非犯罪(商业)价值.

getATLContextUrl() 检测浏览器协议(http/https)并将其应用到 domain。 。 。 .

import { getATLContextUrl } from '@atlaskit/atlassian-context';

getATLContextUrl('jira'); // https://jira.atlassian.com OR https://jira.atlassian-fex.com depending based on environment
getATLContextUrl('confluence'); // https://confluence.atlassian.com
getATLContextUrl('admin'); // https://admin.atlassian.com OR https://admin.atlassian-fex.com

是FedRamp () (中文(简体) )

免责声明: 请使用 isFedrampModerate() 而不是这一职能,因为这一职能的贬值过程将在近期内开始.

注意:考虑替代办法 不建议使用这一功能作为长期解决办法,因为 它创造了一个假设,除了FedRAMP Medrate之外,没有其他孤立的环境. 你个 鼓励考虑其他解决办法,例如Statsig或环境配置 不需要在您的代码特性和 FedRAMP 环境之间建立严格的依赖性 见 发生 - 发生 - 发生

返回服务是否部署在联邦RAMP边界. isFedRamp() 依赖 window.UNSAFE_ATL_CONTEXT_BOUNDARY 在页面上显示,以防 window.UNSAFE_ATL_CONTEXT_BOUNDARY 它将试图根据 网站域名,最终折回为假.

import { isFedRamp } from '@atlaskit/atlassian-context';

if (isFedRamp()) {
    // your specific logic here
}

是Fedramp 模版( )

如果当前周边位于 FedRAMP-Modelate 中, 返回真实性 .

孤立的云( )

如果当前周边处于孤立云中, 返回真实值 .

孤立的 Cloud 域( )

返回当前 ic_domain。如果目前的周边不是L2 IC(例如,目前的Federamp-moderate或正版商业),则返回未定义.

孤立 ContextId ()

返回当前孤立上下文标识符( ex: ic-123) (中文(简体) ). 如果目前的周界不是L2 IC(例如,周界是联邦制-中度或常规商业),则返回未定义.

获得Domain InContext( 子域, 环境)

返回给定的Atlassian服务或体验的完整域名(包括支持隔离云).

重要: 注意库目前不保证请求域存在! 据推测,当一个用户请求一个特定服务的全部域名时,他们已经知道域名的存在.

参数:

  • subdomain 是需要的参数。 这应该是要求获得全部域名的服务或Atlassian的经验.

  • environment 是需要的参数。 这应该是 dev, (中文(简体) ), staging,或 prod。 。 。 .

非孤云细说:

对于非孤立的云(如Federamp-moderate和正则商业),将使用周边和环境值来创建并返回预期域.

例外保存于 全域覆盖 定义。 如果您需要URL映射, 那么您应该添加一个条目到 domains.tsx。 。 。 .

实例: 当在联邦中调时:

import { getDomainInContext } from '@atlaskit/atlassian-context';

getDomainInContext('id', 'staging') // returns "id.stg.atlassian-us-gov-mod.com" (id has a full domain override)
getDomainInContext('analytics', 'staging') // returns "analytics.atlassian.com" because `analytics` is a non-varying global domain
getDomainInContext('nonexistent-service', 'staging') // returns "nonexistent-service.stg.atlassian-us-gov-mod.com"

(非同化)商业召见时:

import { getDomainInContext } from '@atlaskit/atlassian-context';

getDomainInContext('id', 'prod') // returns "id.atlassian.com"
getDomainInContext('analytics', 'prod') // returns "analytics.atlassian.com"

孤云细说:

对于绿洲,返回三个域类型之一:一个保留名域,一个命名空间子域名,或者一个Atlassian服务子域名(参见 RFC (RFC ) (法语)) (中文(简体) ).

保留的名称和命名空间子域正在临时配置 准备金 名称映射和地图 定义。 如果在其中一个类别下注册了一个新名称,请提出PR,以更新相关的映射.

优先级如下: 保留名称模式 > 命名空间模式 > 默认为服务模式.

示例 (同化)商业召见时:

import { getDomainInContext } from '@atlaskit/atlassian-context';

getDomainInContext('id') // returns "id.<icLabel>.<baseDomain>"
getDomainInContext('packages') // returns "packages.atl.<icLabel>.<baseDomain>"
getDomainInContext('new-service') // returns "new-service.services.<icLabel>.<baseDomain>"

获取 UrlForDomain 连接( 子域, 环境)

通过将当前 URL 方案附加到结果中来返回给定的 Atlassian 服务的全部 url(包括支持隔离云) getDomainInContext(subdomain, environment)。 。 。 .

import { getUrlForDomainInContext } from '@atlaskit/atlassian-context';

getUrlForDomainInContext('design', 'staging') // --> returns "https://design.atlassian.com"

解析器

鉴于用户提供的 URL 边界密钥地图, 返回与当前边界相关的 URL 。 与 getUrlForDomainInContext(subdomain, environment),它从已知的Atlassian子域图案构造一个URL, resolveProvidedUrlByBoundary 用于您拥有完全的,任意的URL,每个边界可能完全不同(例如第三方服务端点或自定义后端URL)的情况.

唯一的参数是 urls,用于 URL 对象。 这个 default 键为 所需经费 作为保证倒计时;所有特定边界的密钥都是可选的. 有效密钥为 'isolated-cloud' | 'fedramp-moderate' | 'commercial' | 'default' (必须)

分辨率命令 :

  1. 特定边界密钥( E)'isolated-cloud', (中文(简体) ), 'fedramp-moderate',或 'commercial'(中文(简体) )

  2. 'default'

过 null 用于明确返回的边界密钥 null 用于该边界(即选择不返回 URL).

说明: URL 值由调用者使用 new URL(...)。将无效的 URL 字符串传递到 new URL() 将丢出一个 TypeError 在此之前 resolveProvidedUrlByBoundary 被援引.

import { resolveProvidedUrlByBoundary } from '@atlaskit/atlassian-context/resolve-provided-url-by-boundary';

const url = resolveProvidedUrlByBoundary({
  'isolated-cloud':   new URL('https://ic.example.com'),  // returned in Isolated Cloud
  'fedramp-moderate': null,                                // explicitly no URL in FedRAMP to represent FedRAMP unavailability
  default:            new URL('https://example.com'),      // returned in all other boundaries
});

版本与发布记录

@atlaskit/atlassian-context 共发布 22 个版本,首次发布于 2024/06/12;过去 12 个月发布了 11 个版本。

版本发布日期距今
2.0.0latest2026/09/241 个月前
1.2.02026/09/151 个月前
1.1.12026/07/153 个月前
1.1.02026/07/143 个月前
1.0.02026/06/164 个月前
0.11.02026/06/124 个月前

关于 @atlaskit/atlassian-context 的常见问题

@atlaskit/atlassian-context 是什么?

提供周边特有URL分辨率,并帮助识别产品运行在何种环境.

如何安装 @atlaskit/atlassian-context?

在项目目录运行 npm install @atlaskit/atlassian-context,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^18.2.0 || ^19.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@atlaskit/atlassian-context 支持 TypeScript 吗?

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

@atlaskit/atlassian-context 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@atlaskit/atlassian-context 可以商用吗?

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

@atlaskit/atlassian-context 的下载量有多少?

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

@atlaskit/atlassian-context 还在维护吗?

最新版本 2.0.0 发布于 2026/09/24(1 个月前);至今共发布 22 个版本,其中过去 12 个月发布了 11 个;首次发布于 2024/06/12。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。