npm package: @midi-dev/ts-compiler
Description: Kiểm tra lỗi biên dịch TypeScript trước khi build
Author: HEMIDI Development Team
Latest version: 0.0.11
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @hemidi/ts-compiler

> Gói kiểm tra lỗi biên dịch TypeScript trước khi build.

## Giới thiệu

`@hemidi/ts-compiler` là một gói TypeScript compiler được tối ưu hóa để kiểm tra lỗi biên dịch một cách nhanh chóng và hiệu quả

### Tính năng chính

- **Hiệu suất cao**: Sử dụng incremental compilation và caching
- **Tối ưu CI/CD**: Được thiết kế đặc biệt cho môi trường CI
- **Watch mode**: Tự động kiểm tra khi file thay đổi
- **JSON output**: Hỗ trợ output structured cho log collectors
- **Tự động phát hiện**: Tìm kiếm tsconfig.json tự động

## Cài đặt

```bash
npm i -D @hemidi/ts-compiler
```

## Bắt đầu nhanh

### Bước 1: Khởi tạo trong dự án

```bash
npx midi-tsc --init
```

Lệnh này sẽ thêm scripts vào package.json:

```json
{
  "scripts": {
    "typecheck": "midi-tsc --check",
    "typecheck:watch": "midi-tsc --check --watch",
    "typecheck:ci": "midi-tsc --ci --json"
  }
}
```

### Bước 2: Chạy type checking

```bash
npm run typecheck             # Kiểm tra type một lần
npm run typecheck:watch  # Tự động kiểm tra khi file thay đổi
npm run typecheck:ci        # Chế độ CI với JSON output
```

## Tham chiếu Scripts

### Scripts cơ bản

| Script            | Mô tả                                  | Mục đích              |
| ----------------- | -------------------------------------- | --------------------- |
| `typecheck`       | Kiểm tra type một lần (noEmit)         | Development hàng ngày |
| `typecheck:watch` | Tự động kiểm tra khi file thay đổi     | Development           |
| `typecheck:ci`    | Chế độ CI với JSON output và exit code | CI/CD pipeline        |

## Tham số dòng lệnh

### Tùy chọn cơ bản

| Option    | Mô tả                            | Ví dụ                      |
| --------- | -------------------------------- | -------------------------- |
| `--init`  | Khởi tạo ts-compiler trong dự án | `midi-tsc --init`          |
| `--check` | Chạy type check một lần (noEmit) | `midi-tsc --check`         |
| `--watch` | Chế độ watch, tự động kiểm tra   | `midi-tsc --check --watch` |

### Tùy chọn CI/CD

| Option        | Mô tả                               | Ví dụ                     |
| ------------- | ----------------------------------- | ------------------------- |
| `--ci`        | Chế độ CI (bao gồm --check, --json) | `midi-tsc --ci`           |
| `--json`      | Output kết quả dạng JSON            | `midi-tsc --check --json` |
| `--quiet, -q` | Giảm thiểu output console           | `midi-tsc --check -q`     |

### Tùy chọn hiệu suất

| Option            | Mô tả                  | Ví dụ                     |
| ----------------- | ---------------------- | ------------------------- |
| `--maxErrors <n>` | Dừng sau khi gặp n lỗi | `midi-tsc --maxErrors=10` |

## Tối ưu hóa hiệu suất

### Incremental Compilation

- **Tự động cache**: Sử dụng `.tsbuildinfo` để tăng tốc độ build tiếp theo
- **Program caching**: Cache TypeScript program trong memory
- **CI optimization**: Tối ưu đặc biệt cho môi trường CI

### Cache Strategy

| Môi trường | Cache Location       | Mô tả                            |
| ---------- | -------------------- | -------------------------------- |
| **Local**  | `~/.cache/midi-tsc/` | Cache persistent cho development |
| **CI**     | `/tmp/.tsc-cache/`   | Cache tạm thời cho CI builds     |

### Performance Features

| Tính năng                 | Mô tả                                     | Lợi ích                      |
| ------------------------- | ----------------------------------------- | ---------------------------- |
| **Program reuse**         | Tái sử dụng TypeScript program đã compile | Giảm 50-80% thời gian        |
| **Incremental builds**    | Chỉ kiểm tra file đã thay đổi             | Tăng tốc độ watch mode       |
| **Selective diagnostics** | Giới hạn số lỗi báo cáo                   | Giảm noise, tập trung vấn đề |

## Hướng dẫn sử dụng theo tình huống

### Development hàng ngày

```bash
# Kiểm tra nhanh
npm run typecheck

# Chế độ watch cho development
npm run typecheck:watch
```

### Trước khi commit

```bash
# Kiểm tra một lần với quiet mode
midi-tsc --check --quiet
```

### Dự án lớn với nhiều tsconfig

```bash
# Kiểm tra config cụ thể
midi-tsc --check --project tsconfig.build.json

# Giới hạn số lỗi để tập trung vào vấn đề chính
midi-tsc --check --maxErrors=5
```

## Tích hợp với các công cụ khác

### Husky Git Hooks

```json
{
  "husky": {
    "hooks": {
      "pre-commit": "midi-tsc --check --quiet"
    }
  }
}
```

## So sánh với tsc nguyên bản

| Tính năng              | `tsc`         | `midi-tsc` | Lợi ích                     |
| ---------------------- | ------------- | ---------- | --------------------------- |
| **Incremental builds** | Cần cấu hình  | Mặc định   | Tự động tối ưu              |
| **Program caching**    | Không         | Có         | Tăng tốc 50-80%             |
| **CI optimization**    | Cần tùy chỉnh | Tự động    | Sẵn sàng cho production     |
| **JSON output**        | Cần wrapper   | Built-in   | Dễ tích hợp với tools       |
| **Watch performance**  | Chậm          | Nhanh      | Better developer experience |

## Options tham số nâng cao

### Performance Tuning

```bash
# Tối ưu cho dự án lớn
midi-tsc --check --maxErrors=3 --quiet

# CI mode với full diagnostics
midi-tsc --ci --json --project tsconfig.prod.json
```

### Debug và Troubleshooting

```bash
# Xem chi tiết quá trình
midi-tsc --check --project tsconfig.json

# Test với config khác nhau
midi-tsc --check --project tsconfig.strict.json
```

## Các bước tiếp theo

### 1. Thiết lập cơ bản

```bash
# Sau khi cài đặt, khởi tạo trong dự án
npx midi-tsc --init
```

### 2. Tích hợp CI/CD

```bash
# Thêm vào pipeline
npm run typecheck:ci
```

### 3. Tối ưu hóa workflow

```bash
# Development
npm run typecheck:watch

# Pre-commit
midi-tsc --check --quiet --maxErrors=1
```

### 4. Monitoring và Alerts

```bash
# Với structured logging
midi-tsc --ci --json | jq '.diagnostics | length'
```

## Kết quả mẫu

### Khi không có lỗi

```
[midi-tsc] ✅ Type check passed (noEmit).
```

### Khi phát hiện lỗi

```
src/main.ts:15:7 - error TS2322: Type 'string' is not assignable to type 'number'.

15   let x: number = "hello";
         ~

[midi-tsc] ❌ Type check failed with 1 error(s).
```

## Quy trình đóng gói

### B1: Vào thư mục ts-compiler, cài đặt dependencies và kiểm tra authentication với npm registry

```bash
cd packages/ci/ts-compiler && npm install
npm whoami
# Nếu chưa đăng nhập, chạy lệnh:
npm login
```

### B2: Cần thay đổi các thông tin cần thiết trong file package.json nếu cần

```json
{
  "name": "@hemidi/ts-compiler", // <- Thay đổi tên package nếu cần(trùng org, scope)
  "version": "1.0.0", // <- Thay đổi version
  "description": "HEMIDI CI TypeScript Compiler package" // <- Thay đổi mô tả
}
```

### B3: Quản lý version của package

```bash
# example
npm version patch # 1.0.1
npm version minor # 1.1.0
npm version major # 2.0.0
```

### B4: Build package

```bash
npm run build
```

### B5: Đóng gói và publish

```bash
# Đóng gói package publish
npm publish --access public

#  Đóng gói package private
npm publish --access restricted
```