离线部署

概览

OpenSumi 天然支持离线部署场景,只需要将内部的一些网络资源如(icon、onig-wasm)等通过浏览器端的配置替换成内网的资源地址即可

需要修改的配置项

浏览器端的配置见文档 如何自定义浏览器端配置

然后在 new ClientAPP 时传入配置参数

// 导入本地 icon 资源, 不使用 cdn 版本, 导入后需要设置 useCdnIcon 为 false
import '@opensumi/ide-core-browser/lib/style/icon.less';

new ClientAPP({
  // other ...
  useCdnIcon: false, // 见上
  onigWasmUri: '', // onig wasm 文件
  extensionBrowserStyleSheet: {
    componentUri: '', // 配置插件 browser 层的 component 样式文件
    iconfontUri: '' // 配置插件 browser 层的 iconfont 样式文件
  }
});

可以从以下方式获取到所需的资源

将这些资源上传到内网环境,然后将内网资源地址填写到对应配置项即可

ide-startup-lite 插件本地化

插件资源

ide-startup-lite 内插件为 CDN 引用方式,所有插件资源 lite-worker-extensions 已打包输出

代码修改

需同步修改 Lite 内插件引入相关代码

export async function getExtension(extensionId: string, version: string): Promise<IExtensionMetaData | undefined> {
  const [, extName] = extensionId.split('.')
-  const extPath = `gw.alipayobjects.com/os/marketplace/extension/${extensionId}-${version}/`;
+  const extPath = `${your local path}`;
  const packageJSON = await fetch(`https://${extPath}package.json`)
    .then((res) => res.json());
  packageJSON.contributes = mergeContributes(
    packageJSON.kaitianContributes,
    packageJSON.contributes,
  );

...