Tắt định dạng import type trong Biome
Hướng dẫn 3 cách tắt tính năng tự động chuyển đổi import type trong Biome
Khi làm việc với Biome ↗, bạn có thể gặp tình huống linter tự động chuyển đổi các import thường thành import type. Mặc dù tính năng này giúp tối ưu hóa, nhưng đôi khi bạn muốn giữ nguyên cú pháp import hiện có. Bài viết này sẽ hướng dẫn 3 cách để tắt tính năng này.
Vấn đề#
Biome có quy tắc useImportType tự động chuyển đổi các import chỉ chứa type thành import type:
// Trước khi Biome format
import { Icons } from '../../libs/icons';
// Sau khi Biome format
import type { Icons } from '../../libs/icons';typescriptĐiều này có thể gây phiền toái khi:
- Bạn muốn giữ cú pháp import thường nhất quán
- Import này cũng chứa giá trị runtime (không chỉ type)
- Bạn đang chuyển đổi từ ESLint và muốn giữ nguyên code style
Giải pháp#
Cách 1: Tắt quy tắc toàn cục#
Cách đơn giản nhất là tắt quy tắc useImportType trong file biome.json:
{
"linter": {
"enabled": true,
"rules": {
"style": {
"useImportType": "off"
}
}
}
}json[!TIP] Sau khi sửa
biome.json, nhớ restart IDE hoặc extension Biome để thay đổi có hiệu lực.
Cách 2: Tắt cho một file cụ thể#
Nếu chỉ muốn tắt cho một file hoặc một dòng cụ thể, sử dụng comment suppress:
// biome-ignore lint/style/useImportType: giữ nguyên cú pháp import
import { Icons } from '../../libs/icons';typescriptHoặc đặt comment ở đầu file để áp dụng cho toàn bộ file:
// biome-ignore-file lint/style/useImportType
import { Icons } from '../../libs/icons';
import { OtherType } from './other';typescriptCách 3: Tắt tổ chức import hoàn toàn#
Nếu Biome đang di chuyển, sắp xếp, hoặc tái cấu trúc các type imports khi format, bạn có thể tắt hoàn toàn tính năng organizeImports:
{
"assist": {
"enabled": true,
"actions": {
"source": {
"organizeImports": {
"enabled": false
}
}
}
}
}json[!WARNING] Cách này sẽ tắt tất cả tính năng tổ chức import, không chỉ type imports. Hãy cân nhắc kỹ trước khi sử dụng.
Khi nào nên dùng cách nào?#
| Cách | Khi nào nên dùng | Ưu điểm | Nhược điểm |
|---|---|---|---|
| Toàn cục | Team muốn giữ import thường nhất quán | Áp dụng cho toàn dự án, dễ quản lý | Mất lợi ích tối ưu của import type |
| File cụ thể | Chỉ một vài file cần exception | Linh hoạt, không ảnh hưởng code khác | Cần thêm comment thủ công |
| Tắt organizeImports | Muốn kiểm soát hoàn toàn import organization | Tắt tất cả tự động hóa import | Mất nhiều tính năng hữu ích |
Ví dụ thực tế#
Giả sử bạn có component Astro sử dụng type import:
---
import type { Icons } from '../../libs/icons';
interface Props {
name: keyof typeof Icons;
}
---astroSau khi tắt useImportType, bạn có thể viết:
---
import { Icons } from '../../libs/icons';
interface Props {
name: keyof typeof Icons;
}
---astroBiome sẽ không tự động chuyển đổi lại thành import type.