6.3. 配置默认扩展


默认扩展是一组预安装的扩展,通过将扩展二进制 .vsix 文件路径放在 DEFAULT_EXTENSIONS 环境变量来指定。

启动后,编辑器会检查此环境变量,如果指定了,则提取到扩展的路径,并将其安装到后台,而不会干扰用户。

配置默认扩展对于从编辑器级别安装 .vsix 扩展非常有用。

注意

如果要指定多个扩展,以分号分隔它们。

  DEFAULT_EXTENSIONS='/projects/extension-1.vsix;/projects/extension-2.vsix'
Copy to Clipboard Toggle word wrap

阅读内容,了解如何定义 DEFAULT_EXTENSIONS 环境变量,包括将 .vsix 文件添加到工作区的多个示例。

将默认 .vsix 扩展嵌入到工作区中有三种不同的方法:

  • 将扩展二进制文件放在源存储库中。
  • 使用 devfile postStart 事件从网络获取扩展二进制文件。
  • che-code 镜像中包括扩展的 .vsix 二进制文件。

将扩展二进制文件放在源存储库中

将扩展二进制文件放入 Git 存储库并在 devfile 中定义环境变量是向工作区添加默认扩展的最简单方法。如果存储库 root 中存在 extension.vsix 文件,您可以为工具容器设置 DEFAULT_EXTENSIONS

步骤

  • .devfile.yaml 中指定 DEFAULT_EXTENSIONS,如下例所示:

    schemaVersion: 2.3.0
    metadata:
      generateName: example-project
    components:
      - name: tools
        container:
          image: quay.io/devfile/universal-developer-image:ubi8-latest
          env:
            - name: 'DEFAULT_EXTENSIONS'
              value: '/projects/example-project/extension.vsix'
    Copy to Clipboard Toggle word wrap

使用 devfile postStart 事件从网络获取扩展二进制文件

您可以使用 cURL 或 GNU Wget 将扩展下载到您的工作区。为此,您需要:

  • 指定 devfile 命令,将扩展下载到您的工作中
  • 添加 postStart 事件,以在工作空间启动时运行命令
  • 在 devfile 中定义 DEFAULT_EXTENSIONS 环境变量

步骤

  • 将以下示例中显示的值添加到 devfile 中:

    schemaVersion: 2.3.0
    metadata:
      generateName: example-project
    components:
      - name: tools
        container:
          image: quay.io/devfile/universal-developer-image:ubi8-latest
          env:
            - name: DEFAULT_EXTENSIONS
              value: '/tmp/extension-1.vsix;/tmp/extension-2.vsix'
    
    commands:
      - id: add-default-extensions
        exec:
          # name of the tooling container
          component: tools
          # download several extensions using curl
          commandLine: |
            curl https://.../extension-1.vsix --location -o /tmp/extension-1.vsix
            curl https://.../extension-2.vsix --location -o /tmp/extension-2.vsix
    
    events:
      postStart:
        - add-default-extensions
    Copy to Clipboard Toggle word wrap
    警告

    在某些情况下,curl 可能会下载 .gzip 压缩文件。这可能会使安装扩展不可能。要修复尝试将文件保存为 .vsix.gz 文件,然后使用 gunzip 解压缩该文件。这会将 .vsix.gz 文件替换为解压缩的 .vsix 文件。

    curl https://some-extension-url --location -o /tmp/extension.vsix.gz
    gunzip /tmp/extension.vsix.gz
    Copy to Clipboard Toggle word wrap

che-code 镜像中包括扩展 .vsix 二进制文件。

使用编辑器镜像中捆绑的默认扩展,以及 ConfigMap 中定义的 DEFAULT_EXTENSIONS 环境变量,您可以在不更改 devfile 的情况下应用默认扩展。

按照以下步骤为编辑器镜像添加所需的扩展。

步骤

  • 创建一个目录,并将您选择的 .vsix 扩展放在这个目录中。
  • 使用以下内容创建 Dockerfile:

    # inherit che-incubator/che-code:latest
    FROM quay.io/che-incubator/che-code:latest
    USER 0
    
    # copy all .vsix files to /default-extensions directory
    RUN mkdir --mode=775 /default-extensions
    COPY --chmod=755 *.vsix /default-extensions/
    
    # add instruction to the script to copy default extensions to the working container
    RUN echo "cp -r /default-extensions /checode/" >> /entrypoint-init-container.sh
    Copy to Clipboard Toggle word wrap
  • 构建镜像并将其推送到 registry:

    $ docker build -t yourname/che-code:next .
    $ docker push yourname/che-code:next
    Copy to Clipboard Toggle word wrap
  • 将新 ConfigMap 添加到用户的项目中,定义 DEFAULT_EXTENSIONS 环境变量,并指定扩展的绝对路径。此 ConfigMap 将环境变量设置为用户项目中的所有工作区。

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: vscode-default-extensions
      labels:
        controller.devfile.io/mount-to-devworkspace: 'true'
        controller.devfile.io/watch-configmap: 'true'
      annotations:
        controller.devfile.io/mount-as: env
    data:
      DEFAULT_EXTENSIONS: '/checode/default-extensions/extension1.vsix;/checode/default-extensions/extension2.vsix'
    Copy to Clipboard Toggle word wrap
  • 使用 yourname/che-code:next 镜像创建工作区。首先,打开仪表板并导航到左侧的 Create Workspace 选项卡。

    1. Editor Selector 部分中,展开 使用 Editor Definition 下拉菜单,并将编辑器 URI 设置为 Editor Image
    2. 点任何示例或使用 Git 存储库 URL 创建工作区。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat