@drizzle-lab/api

中文文档
0.30.2发布于 2025/01/26MITTypeScriptESM + CJS近 30 天下载 2322

Drizzle Lab API - Fork of Drizzle Kit API

原始使用文档
文档目录10 节
  1. Installation
  2. Features
  3. API Reference
  4. Extensions
  5. PostgreSQL API
  6. MySQL API
  7. SQLite API
  8. (Optional) Extended Config
  9. Environment Variables
  10. License

@drizzle-lab/api

Fork of Drizzle Kit API - Enhanced with features for schema documentation and visualization.

[!IMPORTANT] This package is a community project based on Drizzle Kit.

I recommend using Drizzle Kit as much as possible.

Installation

npm install @drizzle-lab/api

Features

  • 🔄 Import schema from files or database
  • 📝 Document your schema with JSDoc-like syntax
  • 📸 Generate snapshot from Drizzle objects
  • 🎨 Generate SQL from schema
  • 📊 Generate TypeScript from schema
  • 🎯 Support for PostgreSQL, MySQL and SQLite

API Reference

Extensions

Document your schema with the explain function.

Works for tables and views.

import { explain } from "@drizzle-lab/api/extensions";
import { pgTable, text, jsonb } from "drizzle-orm/pg-core";

export const users = pgTable("users", {
  id: text("id").primaryKey(),
  name: text("name").notNull(),
  metadata: jsonb("metadata").$type<{ role: string }>(),
});

explain(users, {
  description: "Users table storing core user information",
  columns: {
    id: "Unique identifier for the user",
    name: "User's full name",
    metadata: "Additional user metadata stored as JSON",
  },
  jsonShapes: {
    metadata: {
      role: "string",
    },
  },
});

PostgreSQL API

Import and transform PostgreSQL schemas:

import { importDrizzleConfig } from "@drizzle-lab/api/config/node";
import { importFromFiles } from "@drizzle-lab/api/pg/node";
import { 
  importFromDatabase, 
  schemaToSql, 
  snapshotToTypeScript,
  drizzleObjectsToSnapshot
} from "@drizzle-lab/api/pg";

// Import schema from config
const config = await importDrizzleConfig();
const drizzleObjects = await importFromFiles(config.schema);

// Import schema from database
const snapshot = drizzleObjectsToSnapshot(drizzleObjects, config);

// Generate SQL
const sql = schemaToSql(schema);

// Generate TypeScript
const ts = snapshotToTypeScript(snapshot, "preserve");

MySQL API

Import and transform MySQL schemas:

import { importDrizzleConfig } from "@drizzle-lab/api/config/node";
import { importFromFiles } from "@drizzle-lab/api/mysql/node";
import { 
  importFromDatabase, 
  schemaToSql, 
  snapshotToTypeScript,
  drizzleObjectsToSnapshot
} from "@drizzle-lab/api/mysql";

// Import schema from config
const config = await importDrizzleConfig();
const drizzleObjects = await importFromFiles(config.schema);

// Generate snapshot
const snapshot = drizzleObjectsToSnapshot(drizzleObjects, config);
    
// Generate SQL
const sql = schemaToSql(schema);

// Generate TypeScript
const ts = snapshotToTypeScript(snapshot, "preserve");

SQLite API

Import and transform SQLite schemas:

import { importDrizzleConfig } from "@drizzle-lab/api/config/node";
import { importFromFiles } from "@drizzle-lab/api/sqlite/node";
import { 
  importFromDatabase, 
  schemaToSql, 
  snapshotToTypeScript,
  drizzleObjectsToSnapshot
} from "@drizzle-lab/api/sqlite";

// Import schema from config
const config = await importDrizzleConfig();
const drizzleObjects = await importFromFiles(config.schema);

// Generate snapshot
const snapshot = drizzleObjectsToSnapshot(drizzleObjects, config);

// Generate SQL
const sql = schemaToSql(schema);

// Generate TypeScript
const ts = snapshotToTypeScript(snapshot, "preserve");

(Optional) Extended Config

export default defineConfig({
  // ...
  lab: {
    projectId: "drizzle-lab", // optional, defaults to "drizzle-lab". Used to identify the project in json output
  },
});

Environment Variables

They are all optional.

VariableDescriptionDefault
DRIZZLE_LAB_DEBUGEnable debug loggingfalse
DRIZZLE_LAB_CWDWorking directory""
DRIZZLE_LAB_CONFIG_PATHPath to config filedrizzle.config.ts
DRIZZLE_LAB_SAVE_DIRDirectory to save output./drizzle
DRIZZLE_LAB_PROJECT_IDProject ID to identify the project in json outputdrizzle-lab
TS_CONFIG_PATHPath to tsconfig.json./tsconfig.json
DRIZZLE_LAB_ENV_FILE_PATHPath to env fileundefined

License

MIT

版本与发布记录

@drizzle-lab/api 共发布 8 个版本,首次发布于 2024/11/17;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.30.2latest2025/01/261.8 年前
0.30.12025/01/251.8 年前
0.30.02025/01/251.8 年前
0.29.02024/11/292 年前
0.28.02024/11/182 年前
0.27.42024/11/172 年前

关于 @drizzle-lab/api 的常见问题

@drizzle-lab/api 是什么?

Drizzle Lab API - Fork of Drizzle Kit API

如何安装 @drizzle-lab/api?

在项目目录运行 npm install @drizzle-lab/api,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@electric-sql/pglite(>=0.2.0)、@libsql/client-wasm(>=0.9.0)、drizzle-kit(>=0.26)、drizzle-orm(>=0.36)、mysql2(>=3.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@drizzle-lab/api 支持 TypeScript 吗?

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

@drizzle-lab/api 支持 ESM 还是 CommonJS?

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

@drizzle-lab/api 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@drizzle-lab/api 可以商用吗?

@drizzle-lab/api 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@drizzle-lab/api 的下载量有多少?

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

@drizzle-lab/api 还在维护吗?

最新版本 0.30.2 发布于 2025/01/26(1.8 年前);至今共发布 8 个版本,其中过去 12 个月发布了 0 个;首次发布于 2024/11/17。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。