npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@itu_npm/sync-kit

v1.0.1

Published

CLI utility for transferring code changes between computers via text archives

Readme

sync-kit

CLI утилита для переноса изменений кода между компьютерами через текстовые архивы.

Решает проблему синхронизации кода когда нет доступа к git remote — упаковывает изменения в ZIP-архив с текстовыми файлами, который можно перенести любым способом.

Возможности

  • Экспорт только изменённых файлов или полного снапшота
  • Поддержка добавления, изменения, удаления и переименования файлов
  • Автоматический бэкап перед импортом
  • Определение и разрешение конфликтов
  • Интерактивный выбор файлов
  • Красивый терминальный интерфейс

Быстрый старт

Установка на основном компьютере

cd /path/to/sync-kit
npm install
npm run bundle

Перенос на другой компьютер

Скопируй один файл:

sync-kit/bundle/sync-kit.mjs  (2.6 MB)

На другом компьютере положи его куда удобно (например ~/bin/) и создай алиас:

# ~/.zshrc или ~/.bashrc
alias sk="node ~/bin/sync-kit.mjs"

Использование

Экспорт изменений

# Перейди в репозиторий
cd /path/to/my-project

# Интерактивный режим — покажет изменения и спросит что включить
sk export

# Быстрый экспорт без вопросов
sk q

# Полный снапшот всего проекта
sk export --full

# С описанием изменений
sk export -m "Фикс бага авторизации"

# Исключить файлы
sk export --exclude "*.test.ts" --exclude "docs/*"

# Указать путь для архива
sk export -o ./my-changes.zip

Результат: создаётся файл sync_YYYYMMDD-HHMMSS.zip

Импорт изменений

# Перейди в репозиторий на другом компьютере
cd /path/to/my-project

# Посмотреть что в архиве (без изменений)
sk preview ./sync_20260115.zip

# Предпросмотр — что будет сделано
sk import --dry-run ./sync_20260115.zip

# Применить изменения
sk import ./sync_20260115.zip

# Без создания бэкапа
sk import --no-backup ./sync_20260115.zip

# Принудительно без подтверждений
sk import --force ./sync_20260115.zip

История

# Показать историю синхронизаций
sk history

# Очистить историю
sk history --clear

Команды

| Команда | Описание | |---------|----------| | sk export | Экспорт изменений (интерактивно) | | sk q | Быстрый экспорт без вопросов | | sk export --full | Экспорт всего проекта | | sk import <file> | Импорт архива | | sk preview <file> | Просмотр содержимого архива | | sk history | История синхронизаций |

Флаги export

| Флаг | Описание | |------|----------| | -c, --changes | Только изменённые файлы (по умолчанию) | | -f, --full | Полный снапшот репозитория | | -q, --quick | Без интерактивных вопросов | | -o, --output <path> | Путь для архива | | -m, --message <text> | Описание изменений | | -e, --exclude <pattern> | Исключить файлы (можно несколько раз) | | -i, --include <pattern> | Включить только указанные файлы |

Флаги import

| Флаг | Описание | |------|----------| | -t, --target <dir> | Целевая директория | | -d, --dry-run | Показать что будет сделано | | -n, --no-backup | Не создавать бэкап | | -f, --force | Без подтверждений |


Структура архива

sync_20260115-143022.zip
├── manifest.json           # Метаданные и список операций
├── meta/
│   └── info.txt           # Человекочитаемая сводка
└── files/
    ├── src/
    │   ├── App.tsx.txt
    │   └── components/
    │       └── Button.tsx.txt
    └── ...

Формат manifest.json

{
  "version": "1.0",
  "created": "2026-01-15T14:30:22.000Z",
  "source": {
    "repo": "my-project",
    "branch": "feature/new-widget",
    "commit": "abc123d",
    "dirty": true
  },
  "mode": "changes",
  "message": "Описание изменений",
  "stats": {
    "added": 2,
    "modified": 3,
    "deleted": 1,
    "renamed": 1,
    "totalSize": 12345
  },
  "operations": [
    { "type": "add", "path": "src/NewFile.ts", "size": 1234, "hash": "sha256:..." },
    { "type": "modify", "path": "src/App.tsx", "size": 5678, "hash": "sha256:..." },
    { "type": "delete", "path": "src/OldFile.ts" },
    { "type": "rename", "from": "src/foo.ts", "to": "src/bar.ts", "size": 890 }
  ]
}

Автоматически исключаемые файлы

  • node_modules/
  • .git/
  • dist/, build/, .next/, .nuxt/
  • coverage/
  • package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb
  • .env, .env.*
  • *.zip
  • .sync-backup/, .sync-history/

Типичные сценарии

Сценарий 1: Перенос текущих изменений

# На исходном компьютере
cd ~/projects/my-app
sk q
# Создан: sync_20260115-143022.zip

# Перенеси архив на другой компьютер

# На целевом компьютере
cd ~/projects/my-app
sk import ./sync_20260115-143022.zip

Сценарий 2: Полная синхронизация проекта

# На исходном компьютере
sk export --full -m "Полный снапшот проекта"

# На целевом компьютере
sk import --force ./snapshot_20260115.zip

Сценарий 3: Выборочный экспорт

# Только файлы из src/components
sk export --include "src/components/**"

# Всё кроме тестов
sk export --exclude "**/*.test.ts" --exclude "**/*.spec.ts"

Требования

  • Node.js 20+
  • Git (в репозитории)

Разработка

# Установка зависимостей
npm install

# Запуск в режиме разработки
npm run dev -- export

# Сборка TypeScript
npm run build

# Сборка в один файл
npm run bundle

Структура проекта

sync-kit/
├── bundle/
│   └── sync-kit.mjs      # Собранный бандл (один файл)
├── src/
│   ├── index.ts          # Entry point
│   ├── cli.ts            # CLI команды
│   ├── commands/         # Реализация команд
│   ├── core/             # Бизнес-логика
│   ├── ui/               # Терминальный интерфейс
│   ├── utils/            # Утилиты
│   └── types/            # TypeScript типы
├── bin/
│   └── sk                # Shell-скрипт для запуска
├── package.json
└── tsconfig.json

Лицензия

MIT