odoo-addons-path tự nhận diện các cấu trúc dự án Odoo phổ biến và tạo addons_path theo đúng thứ tự, để lập trình viên không phải thiết lập thủ công.
Thiết lập addons_path
trong dự án Odoo trông có vẻ đơn giản, cho đến khi phải quản lý nhiều repository, submodule và nhiều thứ khác. Mỗi cấu trúc dự án sắp xếp addon theo cách riêng, và thứ tự các thư mục rất quan trọng: chỉ một thư mục đặt sai vị trí cũng có thể âm thầm ghi đè module hoặc nạp nhầm module tùy chỉnh.
odoo-addons-path
giúp gỡ bỏ gánh nặng đó. Công cụ tự nhận diện cấu trúc dự án và tạo addons_path cuối cùng theo đúng thứ tự, để lập trình viên không phải thiết lập thủ công và dễ mắc lỗi.
odoo-addons-path là gì?
odoo-addons-path là một công cụ dòng lệnh chỉ làm đúng một việc:
- Tự nhận diện các cấu trúc dự án Odoo phổ biến: Camptocamp, Doodba, Odoo.sh và Trobz
- Tạo
addons_pathchính xác, đúng thứ tự và sẵn sàng sử dụng - Áp dụng cùng một logic nhận diện cho mọi cấu trúc thông qua mẫu thiết kế Chain of Responsibility (tìm hiểu thêm về mẫu thiết kế này )
Công cụ tập trung vào một việc và làm tốt việc đó: tạo ra addons_path đáng tin cậy, dễ dự đoán cho mọi codebase Odoo.
Vì sao chúng tôi xây dựng công cụ này
Chưa có một cấu trúc chuẩn chung cho các dự án Odoo. Mỗi đội ngũ áp dụng một cấu trúc khác nhau, chẳng hạn:
Trobz
├── odoo/ # Odoo core
├── addons/ # Third-party repos
└── project/ # Custom modules
Doodba
odoo/custom/src/
├── odoo/ # Odoo core
├── private/ # Custom modules
└── submodule/ # Third-party repos
Odoo.sh
├── odoo/ # Odoo core
├── enterprise/
├── themes/
└── user/ # Submodules
Vì mỗi cấu trúc cần được xử lý theo cách khác nhau, việc tự tạo addons_path rất mất công và dễ sai. odoo-addons-path ra đời để chuẩn hóa quy trình này cho các cấu trúc phổ biến.
Cách sử dụng
Bắt đầu nhanh
Trong thư mục dự án Odoo, chạy:
odoo-addons-path
Công cụ sẽ xuất ra addons_path sẵn sàng sử dụng. Nếu dự án theo một trong các cấu trúc được hỗ trợ, việc nhận diện sẽ hoạt động ngay. Các cấu trúc được hỗ trợ sẵn:
- Camptocamp (cả cấu trúc cũ và mới)
- Doodba (phát triển dựa trên Docker)
- Odoo.sh (nền tảng hosting chính thức của Odoo)
- Trobz
Thêm --verbose để xem cách các thư mục được phân loại.
Đường dẫn tùy chỉnh
Có thể bỏ qua cơ chế nhận diện bằng --addons-dir. Tùy chọn này hỗ trợ nhiều đường dẫn và glob pattern.
Tìm addon theo phiên bản:
odoo-addons-path --addons-dir "./oca/*/18.0"
Nhiều thư mục repository:
odoo-addons-path --addons-dir "./oca/*/18.0,./custom"
Cũng có thể chỉ định đường dẫn codebase qua biến môi trường:
export CODEBASE=/path/to/project
odoo-addons-path
Thứ tự các thư mục có quan trọng không?
Có. Công cụ đảm bảo:
- Module gốc của Odoo luôn đứng đầu để không bị ghi đè nhầm.
odoo/addonsvàodoo/odoo/addonsluôn nằm ở đầu kết quả. - Các thư mục do người dùng chỉ định giữ nguyên thứ tự. Những đường dẫn truyền qua
--addons-dirgiữ đúng thứ tự đã nhập, nhờ đó có thể ưu tiên repository mong muốn. Điều này đặc biệt quan trọng khi một dự án cần ưu tiên một thư mục addon cụ thể. - Các thư mục tự nhận diện được sắp xếp theo thứ tự chữ cái, giúp kết quả nhất quán và dễ dự đoán.
Kết luận
odoo-addons-path loại bỏ phần việc thủ công, cùng những rủi ro tiềm ẩn, khi tạo addons_path cho Odoo. Dù dự án theo cấu trúc chuẩn hay cấu trúc riêng, công cụ đều nhận diện và sắp xếp đúng thứ tự các thư mục addon: module lõi của Odoo luôn được ưu tiên, và vẫn có thể ưu tiên từng repository khi cần.
Dùng thử:
uv tool install odoo-addons-path
odoo-addons-path /path/to/your/project