Skip to content

Локальная разработка

Хотите дорабатывать сам effector-refetch (а не просто его использовать)? Вот как поднять репозиторий.

Требования

  • Node ≥ 22.13 (требование закреплённого pnpm).
  • pnpm 11.5.1 — версия закреплена через packageManager. Проще всего через Corepack:
bash
corepack enable

Клонирование и установка

bash
git clone https://github.com/Olovyannikov/effector-refetch.git
cd effector-refetch
pnpm install

Скрипты

скриптчто делает
pnpm buildСборка библиотеки (dist/) — все точки входа + .d.ts
pnpm typechecktsc --noEmit
pnpm lintESLint (вкл. eslint-plugin-effector)
pnpm formatPrettier (запись; format:check — только проверка)
pnpm testПрогон тестов Vitest (test:watch — в watch-режиме)
pnpm test:coverageТесты с покрытием v8 (пороги обязательны)
pnpm sizeПроверка бюджета бандла (size-limit)
pnpm attwСборка + проверка публикуемых типов (@arethetypeswrong/cli)
pnpm docs:devЗапуск этой документации локально
pnpm docs:buildСборка доки (заодно проверка битых ссылок)
pnpm changesetЗапись changeset для изменения (управляет релизами)

Как внести изменение

  1. Ветка от main.
  2. Изменение с тестом (набор гоняется под fork/allSettled ради scope-безопасности).
  3. Прогоните гейт: pnpm typecheck && pnpm lint && pnpm format:check && pnpm test:coverage && pnpm build && pnpm attw && pnpm size.
  4. Добавьте changeset: pnpm changeset (выберите patch/minor/major и напишите строку — она попадёт в changelog).
  5. Откройте PR. При мерже в main CI открывает PR «Version Packages»; его мерж публикует в npm.

Git-хуки

pnpm install ставит хуки lefthook (через скрипт prepare) — они гоняют те же проверки, что и CI, ещё до отправки в remote:

хукчто запускает
pre-commitPrettier (автофикс и ре-стейдж staged-файлов), ESLint, tsc --noEmit
commit-msgcommitlintConventional Commits
pre-pushpnpm test:coverage (полный набор + пороги покрытия)

Сообщения коммитов — type(scope): subject (feat / fix / docs / style / refactor / perf / test / build / ci / chore). Обойти при необходимости — git commit --no-verify.

Проверка на приложении

Запускайте примеры прямо из исходников (без сборки) через tsx:

bash
npx tsx examples/graphql.ts

Либо pnpm build и pnpm pack — получите tarball, который можно pnpm add в другой проект.

PR-превью и канарейка

На каждый pull request автоматически поднимаются два стенда:

  • Превью доки — сайт собирается и грузится как скачиваемый артефакт воркфлоу (docs-preview-pr-<N>). (Прод-дока занимает единственный источник GitHub Pages, поэтому превью не живой URL; для живого — внешний хост, см. ниже.)
  • Канарейка пакетаpkg.pr.new публикует превью-сборку, которую можно поставить прямо из PR: npm i https://pkg.pr.new/Olovyannikov/effector-refetch@<sha> (без засорения npm). Бот комментирует точную команду.

Continuous integration (GitHub Actions)

Воркфлоу в .github/workflows/:

ВоркфлоуТриггерЧто делает
ci.ymlpush / PRtypecheck · lint · format:check · test (coverage) · build · attw · size-limit
release.ymlpush в mainchangesets: открывает PR «Version Packages»; при его мерже публикует в npm
docs.ymlpush в mainсобирает доку и деплоит на GitHub Pages (через Actions-артефакт)
pr-preview.ymlpull_requestсобирает доку PR и грузит её скачиваемым артефактом
pkg-pr-new.ymlpush / PRпубликует канарейку через pkg.pr.new
release-codemod.ymlручной запускпубликует пакет effector-refetch-codemod (из codemod/) в npm

Что нужно включить в репозитории один раз

Эти настройки включает мейнтейнер вручную (Actions сам их не настроит):

  1. Pages — Settings → Pages → Source: GitHub Actions. (docs.yml деплоит собранный сайт через Pages-артефакт.)
  2. Права воркфлоу — Settings → Actions → General → Read and write permissions и Allow GitHub Actions to create and approve pull requests (для PR «Version Packages»).
  3. Секрет NPM_TOKEN — классический Automation-токен (обходит 2FA) или Granular с правом read+write на пакеты. Управляет release.yml и release-codemod.yml.
  4. GitHub App pkg.pr.new — установите pkg-pr-new на репозиторий, чтобы канарейка публиковалась (до этого шаг — no-op / non-blocking).

Нужны живые URL превью на каждый PR? Направьте pr-preview.yml на внешний хост (Cloudflare Pages, Netlify, Vercel) — нужен аккаунт и токен-секрет, зато прод-деплой Pages не затрагивается.

Генераторы доки (scripts/gen-api.mjs, scripts/gen-llms.mjs) запускаются внутри docs:build, поэтому и docs.yml, и pr-preview.yml всегда отдают свежий API-референс и llms.txt.

Под лицензией MIT