技能 编程开发 多环境备忘录配置管理

多环境备忘录配置管理

v20260423
apple-notes-multi-env-setup
本工具用于管理Apple Notes中的多环境数据隔离。它允许用户利用不同的账户(如iCloud、本地设备)来区分生产、预发布和开发环境的笔记。这确保了在复杂的开发和测试流程中,测试数据不会意外污染到实际的生产数据,极大地提高了开发和部署的准确性与可控性。
获取技能
70 次下载
概览

Apple Notes Multi-Environment Setup

Overview

Apple Notes supports multiple accounts simultaneously: iCloud (default), Gmail/Yahoo/AOL via IMAP, Exchange, and the local "On My Mac" account. Each account has isolated folders and notes, making accounts the natural boundary for environment separation. Use this to separate personal vs work notes, production vs development data, or synced vs local-only content. The "On My Mac" account is especially useful for development and testing because it never syncs to iCloud, so experiments stay local.

Account Discovery

# List all configured Notes accounts
osascript -l JavaScript -e '
  const Notes = Application("Notes");
  Notes.accounts().map(a =>
    a.name() + " — " + a.notes().length + " notes, " +
    a.folders().map(f => f.name()).join(", ")
  ).join("\n");
'

Environment-Based Configuration

// src/config/environments.ts
interface NotesEnvConfig {
  accountName: string;
  defaultFolder: string;
  autoSync: boolean;
  description: string;
}

const ENVIRONMENTS: Record<string, NotesEnvConfig> = {
  production: {
    accountName: "iCloud",
    defaultFolder: "Production",
    autoSync: true,
    description: "Live notes synced across all devices via iCloud",
  },
  staging: {
    accountName: "iCloud",
    defaultFolder: "Staging",
    autoSync: true,
    description: "Test notes visible on other devices for QA",
  },
  development: {
    accountName: "On My Mac",
    defaultFolder: "Dev",
    autoSync: false,
    description: "Local-only notes for development and testing",
  },
};

function getEnv(): string {
  return process.env.NOTES_ENV || "development";
}

Account-Scoped Operations

// JXA wrapper that enforces account isolation
const Notes = Application("Notes");

function getAccount(envName) {
  const config = {
    production: "iCloud",
    staging: "iCloud",
    development: "On My Mac",
  };
  const accountName = config[envName] || config.development;
  const account = Notes.accounts().find(a => a.name() === accountName);
  if (!account) throw new Error(`Account "${accountName}" not found. Enable it in Notes > Settings > Accounts.`);
  return account;
}

function getFolder(account, folderName) {
  let folder = account.folders().find(f => f.name() === folderName);
  if (!folder) {
    // Create folder if it does not exist
    folder = Notes.Folder({ name: folderName });
    account.folders.push(folder);
  }
  return folder;
}

function createNote(envName, folderName, title, body) {
  const account = getAccount(envName);
  const folder = getFolder(account, folderName);
  const note = Notes.Note({ name: title, body: body });
  folder.notes.push(note);
  return note.id();
}

Enable "On My Mac" Account

# "On My Mac" is disabled by default on newer macOS versions
# Enable via Notes preferences:
# Notes > Settings > check "Enable the On My Mac account"

# Verify it is available
osascript -l JavaScript -e '
  const Notes = Application("Notes");
  const local = Notes.accounts().find(a => a.name() === "On My Mac");
  local ? "On My Mac: enabled (" + local.notes().length + " notes)" : "On My Mac: DISABLED";
'

Error Handling

Issue Cause Solution
"On My Mac" account not found Disabled in Notes settings Notes > Settings > enable "On My Mac" account
Gmail account shows no notes IMAP notes not enabled System Settings > Internet Accounts > Gmail > enable Notes
Folder creation fails on Gmail IMAP accounts have read-only folder structure Use iCloud or "On My Mac" for custom folders
Notes appear in wrong account defaultAccount used instead of explicit account Always specify account by name; never rely on default
Sync conflict between environments Same iCloud account, different folders Use distinct folder names per environment (Prod/, Staging/)

Resources

Next Steps

For access control across accounts, see apple-notes-enterprise-rbac. For monitoring account health, see apple-notes-observability.

信息
Category 编程开发
Name apple-notes-multi-env-setup
版本 v20260423
大小 4.68KB
更新时间 2026-04-26
语言