Перед публикацией библиотеки на платформе npm необходимо убедиться,
что проект полностью готов к распространению. Основные шаги включают
настройку package.json, организацию исходного кода и
корректное управление зависимостями.
package.json должен содержать ключевые поля:
"name" — уникальное имя пакета. Рекомендуется
использовать формат с namespace для предотвращения конфликтов, например
@username/libname."version" — семантическая версия
(major.minor.patch). В SvelteKit-библиотеках это важно для
контроля совместимости."main" — путь к основному файлу библиотеки, который
будет импортироваться при установке через npm."module" — путь к ES-модулю для современных
сборщиков."types" — путь к TypeScript-типам, если библиотека их
предоставляет."files" — массив путей, которые должны попасть в пакет
при публикации, чтобы исключить лишние файлы, такие как тесты или
документация."scripts" — команды для сборки, тестирования и
подготовки к публикации (build, prepare,
prepublishOnly).Пример:
{
"name": "@myusername/sveltekit-ui",
"version": "1.0.0",
"main": "dist/index.js",
"module": "dist/index.mjs",
"types": "dist/index.d.ts",
"files": ["dist"],
"scripts": {
"build": "tsc && vite build",
"prepare": "npm run build",
"prepublishOnly": "npm test && npm run build"
},
"peerDependencies": {
"svelte": "^3.0.0"
}
}
Структура проекта играет ключевую роль для корректной публикации:
sveltekit-ui/
├─ src/
│ ├─ components/
│ ├─ stores/
│ └─ index.ts
├─ dist/
├─ package.json
├─ tsconfig.json
├─ README.md
main и module.При сборке рекомендуется использовать Vite с SvelteKit-плагином, чтобы корректно генерировались ES-модули и CommonJS-версии, а также TypeScript-типизации.
SvelteKit UI библиотеки часто используют комбинацию сборки в
ES-модули и CommonJS. Важно экспортировать все компоненты через единый
файл index.ts:
export { default as Button } from './components/Button.svelte';
export { default as Modal } from './components/Modal.svelte';
export { themeStore } from './stores/themeStore';
Для обеспечения Tree Shaking необходимо:
export default { ... }.dist/, чтобы сборщики
потребителей могли импортировать конкретные компоненты напрямую.Для библиотек SvelteKit рекомендуется выделять зависимости в три категории:
svelte и
svelte-kit), чтобы избежать дублирования.vite, typescript,
jest, svelte-preprocess).Пример правильной конфигурации:
"peerDependencies": {
"svelte": "^3.0.0",
"@sveltejs/kit": "^1.0.0"
},
"devDependencies": {
"typescript": "^5.0.0",
"vite": "^4.0.0",
"svelte-preprocess": "^5.0.0"
}
Перед публикацией необходимо убедиться, что пакет корректно собирается и работает в разных окружениях:
npm run build.npm pack и тестирование в
отдельном SvelteKit проекте.tsc --noEmit.npm login
npm run build
npm pack --dry-run
npm publish --access public
Для scoped-пакетов (@username/package) опция
--access public обязательна. После публикации новые версии
управляются через инкрементирование поля "version" в
package.json и повторную публикацию с помощью
npm publish.
major.minor.patch) для информирования потребителей о
совместимости.