Skip to content
On this page

electron-devtools-installer

一个用于在 Electron 应用程序中安装开发者工具扩展的工具

介绍

electron-devtools-installer 是一个简化在 Electron 应用中安装各种浏览器开发者工具扩展的工具包。它支持自动下载和安装常用的开发工具,如 Vue DevTools、React DevTools、Redux DevTools 等,使开发者能够在 Electron 应用中使用与浏览器相同的调试工具。

安装

bash
# 使用 npm
npm install --save-dev electron-devtools-installer

# 使用 yarn
yarn add --dev electron-devtools-installer

# 使用 pnpm
pnpm add -D electron-devtools-installer

基础配置

主进程配置

在 Electron 的主进程中配置开发者工具扩展:

ts
import { app, BrowserWindow } from 'electron'
import installExtension, { REACT_DEVELOPER_TOOLS, REDUX_DEVTOOLS, VUEJS_DEVTOOLS } from 'electron-devtools-installer'

/**
 * 在应用准备就绪后安装开发者工具扩展
 * 仅在开发环境下安装扩展,生产环境不需要
 */
app.whenReady().then(async () => {
  // 安装开发者工具扩展
  if (process.env.NODE_ENV === 'development') {
    try {
      // 安装 Vue Devtools
      // 用于调试 Vue 应用的状态、组件层次结构等
      await installExtension(VUEJS_DEVTOOLS)

      // 安装 React Devtools
      // 用于调试 React 组件树、props、state 等
      await installExtension(REACT_DEVELOPER_TOOLS)

      // 安装 Redux Devtools
      // 用于调试 Redux 状态管理、action 历史等
      await installExtension(REDUX_DEVTOOLS)

      console.log('已成功安装开发者工具扩展')
    } catch (e) {
      console.error('安装开发者工具扩展失败:', e)
    }
  }

  // 创建窗口
  const mainWindow = new BrowserWindow({
    width: 900,
    height: 670,
    webPreferences: {
      nodeIntegration: true,
      contextIsolation: false,
    },
  })
})

使用示例

安装自定义扩展

通过 Chrome 网上应用店 ID 安装自定义扩展:

ts
import installExtension from 'electron-devtools-installer'

/**
 * 通过 Chrome 网上应用店 ID 安装扩展
 * @param extensionId Chrome 扩展的唯一标识符
 * @returns 安装成功后返回扩展名称
 */
const installCustomExtension = async (extensionId) => {
  // React Devtools ID
  const extensionId = 'fmkadmapgofadopljbjfkapdkoienihi'

  try {
    // 安装扩展并获取扩展名称
    const name = await installExtension(extensionId)
    console.log(`已成功安装扩展: ${name}`)
    return name
  } catch (err) {
    console.log('安装扩展失败:', err)
    throw err
  }
}

app.whenReady().then(async () => {
  await installCustomExtension()
})

批量安装扩展

同时安装多个开发者工具扩展:

ts
import installExtension, {
  REACT_DEVELOPER_TOOLS,
  REDUX_DEVTOOLS,
  VUEJS_DEVTOOLS,
  APOLLO_DEVELOPER_TOOLS,
} from 'electron-devtools-installer'

/**
 * 批量安装多个开发者工具扩展
 * @returns 安装成功的扩展名称数组
 */
const installMultipleExtensions = async () => {
  // 定义需要安装的扩展列表
  const extensions = [REACT_DEVELOPER_TOOLS, REDUX_DEVTOOLS, VUEJS_DEVTOOLS, APOLLO_DEVELOPER_TOOLS]

  try {
    // 批量安装多个扩展
    const results = await Promise.all(extensions.map((ext) => installExtension(ext)))
    console.log('已安装的扩展:', results)
    return results
  } catch (err) {
    console.error('安装扩展失败:', err)
    throw err
  }
}

app.whenReady().then(async () => {
  await installMultipleExtensions()
})

高级配置

使用高级选项配置扩展安装:

ts
import { app } from 'electron'
import installExtension, { VUEJS_DEVTOOLS } from 'electron-devtools-installer'

/**
 * 使用高级选项安装开发者工具扩展
 * @param extensionReference 扩展引用或ID
 * @param options 安装选项
 */
const installWithAdvancedOptions = async (extensionReference, options = {}) => {
  try {
    // 使用高级配置选项安装扩展
    const result = await installExtension(VUEJS_DEVTOOLS, {
      // 加载本地扩展的选项
      loadExtensionOptions: {
        // 允许扩展访问本地文件
        allowFileAccess: true,
      },
      // 是否强制重新下载扩展,即使已经安装
      forceDownload: false,
      // 指定安装特定版本的扩展
      version: '6.0.0',
      // 自定义扩展下载地址,用于内网环境或自定义源
      baseUrl: 'https://your-custom-url.com/extensions/',
      ...options,
    })
    console.log('已安装扩展:', result)
    return result
  } catch (err) {
    console.error('安装扩展失败:', err)
    throw err
  }
}

app.whenReady().then(async () => {
  await installWithAdvancedOptions(VUEJS_DEVTOOLS)
})

常见问题

扩展安装失败

如果扩展安装失败,可能的原因包括:

  1. 网络连接问题 - 确保您的应用可以访问互联网
  2. 版本不兼容 - 检查扩展版本与您的 Electron 版本是否兼容
  3. 权限问题 - 确保应用有足够的权限下载和安装扩展

生产环境配置

在生产环境中,通常不需要安装开发者工具扩展。确保使用环境变量或配置文件来区分开发和生产环境:

ts
if (process.env.NODE_ENV === 'development') {
  // 仅在开发环境安装扩展
  await installExtension(VUEJS_DEVTOOLS)
}

参考资源

要保持清醒 永远不抱有意外的幻想 凭空的期待最要命