Як використовувати TypeScript у налаштуваннях Monorepo
Налаштування monorepo дозволяє вам керувати кількома пакетами або проектами в одному репозиторії. З TypeScript це налаштування особливо потужне для спільного використання типів, інтерфейсів і навіть утиліт у різних пакетах. Цей посібник допоможе вам налаштувати TypeScript у середовищі monorepo.
1. Налаштування Monorepo
Щоб налаштувати монорепо, ви можете використовувати такі інструменти, як npm робочі області або yarn робочі області. Ці інструменти дозволяють вам керувати декількома пакетами в одному репозиторії та спрощують обмін кодом між проектами.
1.1 Ініціалізація Monorepo
Спочатку створіть нову папку для свого monorepo та ініціалізуйте її npm або yarn.
mkdir my-monorepo
cd my-monorepo
npm init -yПотім налаштуйте робочі області у вашому package.json:
{
"name": "my-monorepo",
"version": "1.0.0",
"private": true,
"workspaces": [
"packages/*"
]
}Це налаштування повідомляє npm або yarn, що всі пакунки будуть зберігатися в папці packages.
2. Додавання пакетів до Monorepo
Створіть два пакети у своєму монорепо. Для цього прикладу ми створимо пакет shared для багаторазового коду та пакет web-app для зовнішньої програми.
mkdir -p packages/shared
mkdir -p packages/web-appУ кожному пакеті ініціалізуйте package.json:
cd packages/shared
npm init -y
cd ../web-app
npm init -y3. Додавання TypeScript до Monorepo
Далі ми налаштуємо TypeScript. Встановіть TypeScript і необхідні залежності в корені вашого monorepo:
npm install typescript --save-devСтворіть кореневий файл tsconfig.json, щоб визначити конфігурацію TypeScript для всього монорепо:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"*": ["packages/*/src"]
},
"composite": true,
"declaration": true,
"outDir": "dist",
"rootDir": ".",
"skipLibCheck": true,
"module": "ESNext",
"target": "ES6",
"moduleResolution": "node"
},
"include": ["packages/*"]
}Ключовим тут є параметр paths, який дозволяє TypeScript розуміти імпорт з різних пакунків у monorepo.
4. Налаштування TypeScript у кожному пакеті
Кожному пакету потрібен власний tsconfig.json для належної роботи в monorepo. Ось приклад конфігурації пакета shared:
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"rootDir": "src",
"outDir": "dist"
},
"include": ["src"]
}А для пакета web-app:
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"rootDir": "src",
"outDir": "dist"
},
"include": ["src"]
}Тепер TypeScript можна використовувати в кожному пакеті, а конфігурації надаються з кореневого каталогу tsconfig.json.
5. Додавання коду TypeScript до пакетів
Давайте додамо зразок коду TypeScript до обох пакетів. У пакеті shared створіть папку src і додайте файл TypeScript:
mkdir -p packages/shared/src
touch packages/shared/src/index.tsУ index.ts експортуйте просту функцію:
export const greet = (name: string): string => {
return `Hello, ${name}!`;
}У пакеті web-app створіть папку src і файл index.ts:
mkdir -p packages/web-app/src
touch packages/web-app/src/index.tsТепер імпортуйте спільну функцію:
import { greet } from 'shared';
console.log(greet('TypeScript Monorepo'));6. Будівництво Monorepo
Щоб скомпілювати весь код TypeScript у monorepo, нам потрібно використовувати компілятор TypeScript. У корені monorepo виконайте:
npx tsc --buildЦя команда скомпілює всі пакунки за відповідними файлами tsconfig.json.
Висновок
У цьому посібнику ми розповідали, як налаштувати та використовувати TypeScript у монорепо. Організувавши свій код у структурі монорепо, ви можете легко поділитися кодом між кількома пакетами, що зробить ваш процес розробки ефективнішим. Завдяки надійному набору тексту та посиланням на проект у TypeScript це налаштування ідеально підходить для великих програм або спільних бібліотек.