@electric-sql/pglite-sync

中文文档
0.6.17发布于 2026/11/09Apache-2.0TypeScriptESM + CJS构建来源已验证近 30 天下载 10.8万

Postgres Sync for PGlite

原始使用文档

PGlite Postgres Sync Plugin

A sync plugin for PGlite using Electric. Full documentation is available at pglite.dev/docs/sync.

To install:

npm install @electric-sql/pglite-sync

Then add it to you PGlite instance and create any local tables needed:

import { electricSync } from '@electric-sql/pglite-sync'

const pg = await PGlite.create({
  extensions: {
    electric: electricSync(),
  },
})

await pg.exec(`
  CREATE TABLE IF NOT EXISTS todo (
    id SERIAL PRIMARY KEY,
    task TEXT,
    done BOOLEAN
  );
`)

You can sync data from Electric using either the single table or multi-table API:

Single Table Sync

Use syncShapeToTable to sync a single table:

const shape = await pg.electric.syncShapeToTable({
  shape: { url: 'http://localhost:3000/v1/shape', table: 'todo' },
  shapeKey: 'todo', // or null if the shape state does not need to be persisted
  table: 'todo',
  primaryKey: ['id'],
  onError: (error) => {
    console.error('Shape sync error', error)
  }
})

Multi-Table Sync

The multi-table API is useful when you need to sync related tables together, ensuring consistency across multiple tables by syncing updates that happened in as single transaction in Postgres within a single transaction in PGLite.

Use syncShapesToTables to sync multiple tables simultaneously:

const sync = await pg.electric.syncShapesToTables({
  shapes: {
    todos: {
      shape: { url: 'http://localhost:3000/v1/shape', table: 'todo' },
      table: 'todo',
      primaryKey: ['id'],
    },
    users: {
      shape: { url: 'http://localhost:3000/v1/shape', table: 'users' },
      table: 'users',
      primaryKey: ['id'],
    }
  },
  key: 'my-sync', // or null if the sync state does not need to be persisted
  onInitialSync: () => {
    console.log('Initial sync complete')
  },
  onError: (error) => {
    console.error('Sync error', error)
  }
})

// Unsubscribe when done
sync.unsubscribe()

版本与发布记录

@electric-sql/pglite-sync 共发布 68 个版本,首次发布于 2024/08/12;过去 12 个月发布了 27 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.6.17latest2026/11/094 天前
0.6.162026/11/0310 天前
0.6.152026/10/3113 天前
0.6.142026/10/2816 天前
0.6.132026/10/2618 天前
0.6.122026/10/2123 天前

其他发布通道:next → 1.0.0-next.1。

关于 @electric-sql/pglite-sync 的常见问题

@electric-sql/pglite-sync 是什么?

Postgres Sync for PGlite

如何安装 @electric-sql/pglite-sync?

在项目目录运行 npm install @electric-sql/pglite-sync,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@electric-sql/pglite(0.5.16)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@electric-sql/pglite-sync 支持 TypeScript 吗?

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

@electric-sql/pglite-sync 支持 ESM 还是 CommonJS?

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

@electric-sql/pglite-sync 可以商用吗?

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

@electric-sql/pglite-sync 的下载量有多少?

根据 npm 官方下载统计,@electric-sql/pglite-sync 在 2026/10/14 – 2026/11/12 这 30 天内被下载 107,945 次,日均约 3,598 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@electric-sql/pglite-sync 还在维护吗?

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