Skip to content

Tree-Shaking и оптимизация бандла

Пакет объявляет "sideEffects": false и поставляется по модулю на исходный файл, поэтому бандлер может выбросить всё, что вы не импортируете. Особенно важно для браузерных и Forge-сборок.

Цена фабрики

createCloudClient удобен и дорог: он поднимает все эндпоинты платформенной поверхности, так что импорт тянет их целиком. Если в бандле вызываются три эндпоинта, соберите клиент сами из плоских функций:

typescript
import { createClient } from 'jira.js/core';
import { getIssue, createIssue } from 'jira.js/cloud';

const client = createClient({
  host: 'https://your-domain.atlassian.net',
  auth: { type: 'basic', email, apiToken },
});

const issue = await getIssue(client, { issueIdOrKey: 'TEST-1' });

Каждая функция принимает клиент первым аргументом. Это тот же клиент, который строят фабрики, поэтому оба стиля свободно смешиваются: фабрика — там, где размер не важен, плоские функции — там, где важен.

Подпути

ИмпортЧто внутри
jira.jsДевять фабрик, типы ошибок и предикаты, помощники OAuth
jira.js/corecreateClient, транспорт, ошибки, OAuth, multipart
jira.js/cloudФункции платформенного API и типы ответов
jira.js/cloud/modelsТолько типы ответов платформенного API
jira.js/cloud/parametersТипы параметров запросов платформенного API
jira.js/agileФункции Agile API и типы ответов
jira.js/agile/modelsТолько типы ответов Agile API
jira.js/agile/parametersТипы параметров запросов Agile API
jira.js/serviceDeskФункции Service Management и типы ответов
jira.js/serviceDesk/modelsТолько типы ответов Service Management
jira.js/serviceDesk/parametersТипы параметров запросов Service Management
jira.js/serverФункции Data Center и типы ответов
jira.js/server/modelsТолько типы ответов Data Center
jira.js/server/parametersТипы параметров запросов Data Center
jira.js/assetsФункции Assets Cloud и типы ответов
jira.js/assets/modelsТолько типы ответов Assets Cloud
jira.js/assets/parametersТипы параметров запросов Assets Cloud
jira.js/teamsФункции Teams и типы ответов
jira.js/teams/modelsТолько типы ответов Teams
jira.js/teams/parametersТипы параметров запросов Teams
jira.js/adminФункции API организации и типы ответов
jira.js/admin/modelsТолько типы ответов API организации
jira.js/admin/parametersТипы параметров запросов API организации
jira.js/userManagementФункции управления пользователями и типы ответов
jira.js/userManagement/modelsТолько типы ответов управления пользователями
jira.js/userManagement/parametersТипы параметров запросов управления пользователями
jira.js/userProvisioningФункции SCIM-провижининга и типы ответов
jira.js/userProvisioning/modelsТолько типы ответов SCIM-провижининга
jira.js/userProvisioning/parametersТипы параметров запросов SCIM-провижининга
jira.js/webhooksСобытия, полезные нагрузки и заголовки, которые Jira шлёт вам, и проверка подписи
jira.js/browserГотовая браузерная сборка

Подпути поверхностей несут типы ответов вместе с функциями, поэтому импорт только типа ничего не стоит в рантайме. Типы параметров запросов лежат уровнем ниже, потому что параметр и модель иногда носят одно имя:

typescript
import type { Issue } from 'jira.js/cloud';
import type { GetIssue } from 'jira.js/cloud/parameters';

Девять поверхностей не реэкспортируются из корня, потому что сталкиваются на десятке имён — импортируйте из той, которую имеете в виду.

Глубоким импортам нужен резолвер, понимающий exports: moduleResolution: "bundler", "node16" или "nodenext". Легаси-резолвинг "node" их не видит и ESM-only пакет всё равно не загрузит.

Что именно уменьшается

Основной вес пакета — схемы: каждый тип ответа несёт zod-схему, по которой валидируется. Импорт одного эндпоинта тянет его схему и модели, на которые она ссылается, и больше ничего — так что выигрыш плоского стиля примерно пропорционален тому, какую долю API вы не используете.