Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>EFE前端脚手架工具New to Visual Studio Code? Get it now.
EFE前端脚手架工具

EFE前端脚手架工具

efun

|
3 installs
| (0) | Free
在 VS Code 中创建活动项目、处理图片、上传资源、管理 Jenkins Job 和发布 npm 包版本。
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

EFE前端脚手架工具

将 efe、jenkins 和 efe-release 接入 VS Code:从侧边栏或命令面板启动常用操作,在任务终端继续交互并查看日志。

安装和首次使用

  1. 准备 VS Code 1.91 或更高版本,以及 Node.js 18.17 或更高版本。
  2. 在 VS Code 扩展面板的 … 菜单中选择 从 VSIX 安装,选择与你的系统匹配的 VSIX(文件名含平台,如 efe-activity-vscode-darwin-arm64-<版本>.vsix)。
  3. 打开活动项目,信任工作区后,点击左侧 EFE 图标,运行 检查 CLI 环境,确认输出里的来源显示 (插件内置),再按需运行 初始化账号配置。

不需要安装 CLI,也不需要配置 npm 源或凭据。 efe-activity-cli 及其全部依赖已随 VSIX 一起分发,扩展会直接使用它。只有在你想改用自己构建或全局安装的版本时,才需要设置 efe.cliPackagePath 或安装全局包 —— 此时内置副本会让位:查找顺序是 efe.cliPackagePath → 项目 node_modules → PATH → 扩展内置副本 → 扩展自管副本 → npm root -g。

因为内置 CLI 含按平台编译的原生二进制(sharp、cjpeg、pngquant),VSIX 分平台发布:装错平台的包时图片相关命令会失败,重装对应平台的包即可。

插件会在每次启动 CLI 任务时读取已有的 ~/.efe/account.json,并将其中非空账号字段作为该次任务的优先运行时凭据,因此 Git 克隆或全局 npm 安装的既有用户不需要重新配置。文件内容不会写入工作区、输出面板或扩展设置,也不会复制到钥匙串。点击 初始化账号配置 后填写的新账号凭据和 FTP 连接仍保存到 VS Code SecretStorage,由 macOS 钥匙串、Windows Credential Manager 或 Linux 的密钥服务保护。账号配置状态只显示来源和是否填写,不展示 Token、密码或验证服务连接。

每次执行 CLI 时,插件仅向该任务的子进程传入运行时环境变量,凭据不会出现在命令行参数、工作区设置、项目文件、任务定义、输出面板或终端日志中。直接在终端运行 CLI 仍兼容旧版 ~/.efe/account.json;CLI 下次写入时会将目录和文件分别设为 0700、0600。

侧边栏 设置 视图标题栏的 ⬇ 图标是 安装或更新 EFE CLI(备用):它从 efe.cliRegistry(默认 https://npm.efun.com,需要本机已登录该私库)装一份副本到扩展目录,仅在安装包损坏或平台不匹配时用来恢复。日常命令不会走这条路径。旧版 CLI 将图片压缩的 --source / --destination 声明为布尔开关,无法接受目录参数;内置副本已包含修复版本。

功能

入口 行为
AI 生成合并提交信息 在源代码管理面板点击 ✨;已有暂存改动时只分析暂存内容,否则自动暂存全部改动;按主题生成多组说明并合并为一条信息填入输入框。点击 Commit 后只创建一个 Git 提交
检查 CLI 环境 检查 Node、CLI 安装目录、三个命令入口和版本
初始化账号配置 将账号或 FTP 凭据保存到操作系统钥匙串,不创建账号 JSON 文件
查看账号配置状态 只显示钥匙串中各项是否填写,不输出凭据内容
创建活动项目 选择 Vue / jQuery 模板和父目录,在终端填写项目名称及其他参数
添加 / 查看 / 删除项目模板 在终端维护 EFE 本地模板列表;删除前会在终端再次选择具体模板
复制目录 选择源目录与目标目录,确认后复制;同名文件可能被覆盖
交互式项目命令 运行 CLI 的 efe start,在终端选择开发、构建、部署等项目脚本
压缩图片目录 JPG / PNG 压缩到源目录旁的 <目录名>-optimized,保留源文件
目录图片转 WebP / AVIF 在源目录及其子目录生成对应格式文件;已有同名输出按 CLI 行为处理
目录 PNG 转 JPG 输出到源目录旁的 <目录名>-jpg;默认跳过带透明像素的图片
上传目录到 CDN 选择目录和目标路径,留空目标则使用项目配置,确认后执行
上传目录到 FTP 填写配置名、选择区域和上传模式,确认后执行
并行上传目录到 FTP 填写多个 FTP 配置名后并行上传同一目录
Jenkins 构建与日志 保存常用 Pipeline / Job 并快速触发,也可搜索任务、选择预设任务或查看日志
生成并上传官网模板 按项目官网模板配置生成 FTL 并上传到 GitLab 模板仓库
批量升级项目依赖 选择多个子项目的父目录,在终端选择升级项;可能执行 Git 与安装操作
创建并自动合并 GitLab MR 拉取目标分支、创建 MR 并在可合并时自动合并,执行前需确认
发布 npm 包版本 选择版本类型、确认项目,再进入现有发布流程
发布 VS Code 扩展 选择版本类型,走 efe-release vsix 升版并打包 .vsix(不改动 Git),完成后提示到 Marketplace 网页手动上传
检查 util 版本 对所选项目执行 efe check-util,可能安装或更新依赖

命令行 efe commit 仍会按分组创建多个独立提交;插件只生成一条合并信息。

首次使用 AI 生成 Git 提交信息时,插件会弹出密码掩码输入框要求填写个人 API Key。按回车后,Key 保存在本机统一配置 ~/.efe/account.json 的 aiCommit.apiKey 字段(文件权限 0600,新建目录权限 0700);后续直接读取。也可以在侧边栏 设置 → AI 大模型配置 → LLM API Key 中配置或更换,设置视图只显示配置状态,不显示 Key。服务地址为 https://one-api-litellm.efun.com。Git 差异会发送到团队服务;不会在日志、工作区设置或版本库中保存 Key。

模型、兜底模型与超时同在 设置 → AI 大模型配置 中修改,分别写入 ~/.efe/account.json 的 aiCommit.model、aiCommit.fallbackModel、aiCommit.timeoutMs,也可直接手改该文件(与 jenkinsHost、gitlabBranch 等非敏感字段一致)。默认主模型 deepseek-flash、兜底模型 gemini-3.5-flash-lite、单次请求超时 30000 毫秒(可填 5000~600000)。主模型超时、网络中断、返回 5xx/429 或返回 200 但内容为空时,会自动改用兜底模型重试一次,并在进度提示里说明;认证与权限类错误不会重试。恢复默认 会把该键从 account.json 里删掉,而不是写入默认值。

资源管理器中右键单个目录 → EFE 工具,可以直接进行图片处理或资源上传。命令面板搜索 EFE 可访问所有功能。

「发布 VS Code 扩展」通过 efe-release vsix 升版并打包,需要包含该子命令的 CLI:源码方式请先在仓库根执行 pnpm build(并把 efe.cliPackagePath 指向该仓库);全局安装方式请在团队发布新版本后更新。该命令会把工作目录当作 efe-activity-cli 仓库根来发布其中的 extensions/vscode,请在仓库根目录执行。它不改动 Git:extensions/vscode/package.json、package-lock.json 的新版本号和 CHANGELOG.md 新条目留在工作区,由你自行 git add + git commit。完成后终端会显示 VSIX 路径,并提示使用 efunitweb@gmail.com 登录 发布者管理页,在插件名旁点击更多图标(…)→ Update,从 extensions/vscode 目录上传对应版本的 VSIX;不需要 Azure DevOps PAT。

侧边栏标题右侧的放大镜可搜索全部工具,选择后直接进入对应操作;筛选图标可勾选需要显示的工具。隐藏的工具仍可通过搜索工具和命令面板调用,随时可重新勾选显示。

在 Jenkins 构建与日志 → 管理常用 Job 中,首次配置会直接进入两步输入:先填写只供扩展列表显示的快捷名称,例如“活动预发布”;再填写 Jenkins 的实际 Pipeline / Job 完整名称。若 Jenkins URL 是 …/job/frontend/job/activity-pre-release/,应填写 frontend/activity-pre-release。已有常用项时,先在列表选择“新增常用 Jenkins Job”或某个已有 Job;列表顶端输入框只用于筛选,不用于填写配置。随后在 快速触发常用 Job 中选择即可运行 jenkins run <Job 名称>。这些常用项仅保存在当前 VS Code 用户的扩展本地状态中,不包含 Jenkins 用户名或 Token。Jenkins 入口需要 efe-activity-cli 1.0.17 或更高版本;源码方式运行请重新执行 pnpm build,全局安装方式请在团队发布 1.0.17 后重新安装该版本。

工作目录和执行方式

  • 单项目使用项目根目录;多项目工作区先选择项目,右键操作优先使用目录所属项目。
  • 上传目录必须位于所选项目内。插件传递相对路径,兼容 CLI 的目录拼接规则,并保留项目配置读取位置。
  • 图片源目录传递绝对路径。受 CLI 的逗号分隔规则限制,暂不支持包含逗号的图片路径。
  • 每个任务用独立 Node.js 进程运行,通过 VS Code ProcessExecution 传递参数,不拼接 shell 命令。终端交互、颜色和执行日志由 CLI 提供。
  • 同一项目同时只启动一个 EFE 任务。在命令面板运行 任务: 终止任务 可以停止任务;发布、上传已产生的外部变更不会回滚。
  • 任务详细日志在终端,启动记录、退出码和环境检查在 输出 → EFE。退出码由 CLI 决定;仍应留意 CLI 输出中的单文件处理错误。
  • FTP 连接信息只从安全配置的系统钥匙串中读取。FTP 目标路径可以继续保存在项目 efe-config.cjs;如需完全脱离项目配置,可由管理员设置 EFE_FTP_TARGETS JSON 映射。CLI 不再接受源码中的默认 FTP 凭据,也不会输出 FTP 协议认证详情。
  • 从 Git 仓库或全局 npm 包直接运行 CLI 时,既有 ~/.efe/account.json 账号配置仍然兼容,并会被扩展优先用于每次 CLI 任务;FTP 可通过 efe config:ftp 保存到仅当前用户可读的 ~/.efe/ftp.json。扩展不会读取命令行的 FTP 凭据文件。
  • 首版面向桌面 VS Code 的文件系统工作区,不支持 vscode.dev 或虚拟工作区。Remote SSH / WSL / Dev Containers 尚未验证。

安全发布清单

发布到 Marketplace 前,必须先轮换曾经出现在历史版本中的 FTP 密码。移除源码不会使旧提交、旧 npm 包或旧 VSIX 中的密码失效。

  1. 在 FTP 服务端撤销旧账号或改密,并检查该账号的访问日志。
  2. 将新版 CLI 与扩展发布给团队,要求成员通过 初始化账号配置 → 配置 FTP 连接 重新保存凭据。
  3. 评估是否需要清理 Git 历史和已发布的旧 npm 版本;这会影响其他开发者的 clone 与分支,需要由仓库管理员协调执行。
  4. 使用 .gitleaks.toml 在发布 CI 中扫描待发布的提交和 VSIX。不要把真实 Token、密码、私钥或内部连接 JSON 写入测试、文档或示例。
  5. FTP 服务支持时,选择 FTPS;普通 FTP 会明文传输认证信息,只应作为兼容旧服务器的临时方案。

设置

侧边栏的 设置 视图回显以下全部配置,点击任意一项即可就地修改并保存;也可从命令面板打开 VS Code 设置页。

配置 默认值 说明
efe.cliPackagePath 空 CLI npm 包或已构建源码仓库的绝对路径;明确设置但无效时直接报错;留空则用随 VSIX 分发的内置副本
efe.nodePath node Node 可执行文件名或绝对路径,不包含参数
efe.cliRegistry https://npm.efun.com 仅「安装或更新 EFE CLI(备用)」使用的 npm 源;普通命令不访问

CLI 自动查找顺序:项目及父目录的 node_modules/efe-activity-cli → PATH 中的 npm/pnpm 链接或 npm 安装目录 → 扩展自动安装的副本 → npm root -g。若 VS Code 没有继承终端中的 nvm / Volta / pnpm 环境,请显式设置上述路径。

找不到 CLI 时扩展会弹窗询问是否自动安装,装到扩展目录后继续执行当前命令,因此只安装扩展也能直接使用。设置 视图标题栏的 ⬇ 图标可随时安装或更新。

设置 视图同时回显并管理账号凭据(一般存入系统钥匙串;均只显示来源不回显明文)、AI 大模型配置(LLM API Key 为兼容 CLI 存入 ~/.efe/account.json;模型、兜底模型与超时写入同一文件的 aiCommit 字段)与 CLI 配置(写入 ~/.efe/account.json 的非敏感字段,保留文件中已有的凭据)。扩展只在该命令确实会用到某项凭据时才弹出输入框(密码掩码,按子操作分别判断),保存后继续执行;命令自身报出凭据缺失或认证失败时,错误提示会多给一个 打开设置面板 按钮。

创建并自动合并 GitLab MR 的源分支默认选中当前分支,目标分支可选任意分支或「使用 CLI 默认分支」。

开发和打包

新增或修改用户配置时,请按源码仓库根目录的 docs/configuration-checklist.md 同步检查 CLI、插件设置视图、存储、测试和文档。

CLI 仓库根目录:

pnpm build
npm run vscode:install
npm run vscode:test
npm run vscode:package

插件依赖和锁文件独立于 CLI。vscode:install 使用插件目录的 package-lock.json;构建和打包无需改动 CLI 的依赖。

vscode:package 会先把 CLI 及其生产依赖树生成到 extensions/vscode/vendor/efe-cli(约 50MB,不入库),再按平台打包。因此:

  • 默认只打当前平台的包;一次打齐用 npm run vsix:package:all,或 npm run vscode:package -- --target win32-x64。
  • 打包前会自动重建根 CLI(npm run build:cli),避免把旧的 dist 打进 VSIX;已有 vendor 树且版本一致时会复用。
  • 打包前会跑一遍安全校验,命中凭据、.npmrc、account.json、测试目录或体积超预算都会中止。细节见 CLI 仓库根目录的 docs/vsix-vendor.md(该文件不随插件分发,只能在这里指路)。

产物文件名由 package.json 的版本和平台决定,例如 extensions/vscode/efe-activity-vscode-darwin-arm64-0.1.2.vsix。本地安装也可使用:

code --install-extension extensions/vscode/efe-activity-vscode-darwin-arm64-0.1.2.vsix

开发调试时,在 VS Code 中单独打开 extensions/vscode,按 F5 启动扩展开发宿主;在新窗口打开一个活动项目。默认会用随扩展分发的内置副本(开发宿主里指向源码目录下的 vendor/efe-cli),要改用本仓库构建的 CLI 就设置 efe.cliPackagePath。

tests/smoke.cjs 里还导出 runBundled,在真实开发宿主里验证内置副本能被解析、能加载 sharp 原生模块并真的完成一次 WebP 转换 —— 这是单元测试覆盖不到的一层。

publisher: efunitweb 是扩展标识的一部分;改动它会让 VS Code 视为另一个扩展,与已安装版本并存并抢同一组 efe.* 命令。

验证

npm test 在插件目录运行类型检查及 Node.js 自动化测试,覆盖安装探测、路径传递、工作区选择、取消、发布确认、任务生命周期和凭据隐藏。

tests/smoke.cjs 可在真实 VS Code 中验证扩展激活和任务进程。它只在临时工作区生成模拟 CLI,不调用真实上传、发布或账号配置:

# 在插件目录运行;code 命令需已加入 PATH
EFE_SMOKE_DIR=$(mktemp -d)
mkdir -p "$EFE_SMOKE_DIR/workspace"
EFE_TEST_NODE=$(node -p 'process.execPath') code \
  --user-data-dir="$EFE_SMOKE_DIR/user-data" \
  --extensions-dir="$EFE_SMOKE_DIR/extensions" \
  --disable-extensions --disable-workspace-trust \
  --skip-welcome --skip-release-notes \
  --extensionDevelopmentPath="$PWD" \
  --extensionTestsPath="$PWD/tests/smoke.cjs" \
  "$EFE_SMOKE_DIR/workspace"

VS Code 接入使用官方 Extension API,打包使用 vsce。

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft