Dart command-line tools có thể bạn chưa biết (P1)
November 11, 2022
4 min read
Là một lập trình viên Flutter, chắc hẳn bạn đã nghe qua thuật ngữ dart command-line tool và sử dụng chúng trong một số trường hợp nhất định mà bạn gặp phải khi làm dự án. Dù đã sử dụng nhiều lần nhưng bạn đã thật sự hiểu rõ về chúng hay chưa? Hãy cùng mình tìm hiểu ở series ”Dart command-line tools có thể bạn chưa biết” dưới đây nhé!
Dart command-line tool sử dụng giao diện dòng lệnh và là một công cụ hỗ trợ cho ngôn ngữ lập trình Dart thực hiện các tác vụ như: Tạo project, biên dịch,…
- Thực hiện phân tích tệp, thư mục bất kỳ
(dart analyze [<DIRECTORY> | <DART_FILE>])
hay toàn bộ project (dart analyze .)
phụ thuộc vào lựa chọn của bạn. - Hệ thống tìm kiếm lỗi hay các cảnh báo như: format code, những biến không sử dụng,… Và thông báo cho mọi người biết vị trí cụ thể của lỗi hay các cảnh báo đó để mọi người có thể sửa lại một cách dễ dàng.
- Thực thi câu lệnh
dart create
, thư mục chứa các tệp của project sẽ được khởi tạo; sau đó cài đặt các tài nguyên cần thiết hoặc không (nếu bạn sử dụng cờ —no-pub). - Một số mẫu project có thể được tạo ra từ
dart create
:
* **console**: Mặc định khi tạo ra một project sẽ là ứng dụng giao diện dòng lệnh.
* **package**: Nơi chứa các thư viện mà bạn muốn chia sẻ cho dự án bất kỳ.
* **server-shelf**: Server-side lập trình bằng ngôn ngữ Dart, sử dụng thư viện shelf.
* **web**: Ứng dụng web sử dụng thư viện của Dart làm nòng cốt.
- Nếu tại vị trí hiện tại đã tồn tại một thư mục trùng tên với project bạn muốn tạo, bạn có thể sử dụng cờ —force để tạo và ghi đè các file bên trong thư mục đó.
- Cá nhân mình thấy câu lệnh này khá thú vị, nó giúp bạn tạo ra được một thư mục là doc. Trong đó chứa các file html mô tả cụ thể từng thuộc tính, giá trị mà bạn sử dụng ở từng file. Từ đó các lập trình viên khác có thể hiểu rõ hơn về project thông qua thư mục này mà không cần phải đọc từng dòng code.
- Bạn cũng có thể thêm mô tả cho tài liệu bằng cách thêm các comment.
- Tài liệu sau khi được tạo ra từ
dart doc
:
- Thực hiện tìm và sửa hai loại vấn đề sau:
- Các cảnh báo mà
dart analyze
đã xác định. - Các API đã lỗi thời mà bạn sử dụng trong dự án khi cập nhật phiên bản mới cho Dart và Flutter SDK.
- Để xem trước các thay đổi được đề xuất mà không áp dụng chúng, sử dụng cờ —dry-run:
- Để áp dụng các thay đổi được đề xuất, sử dụng cờ —apply:
- Tuy nhiên,
dart fix
cũng chỉ có thể hoạt động ở một số trường hợp nhất định. Những vấn đề khác thì bạn phải cài đặt ở file analysis_options.yaml, Lints là một ví dụ.
- Đây cũng là một câu lệnh khá hay, giúp ta sửa lại định dạng code sao cho đúng với quy định và định dạng của Dart một cách nhanh chóng mà không cần phải vào từng file để thay đổi.
- Định dạng toàn bộ project:
- Trong trường hợp bạn muốn định dạng riêng lẻ từng file hoặc nhiều file thay vì toàn bộ project thì có thể trỏ đến trực tiếp những file đó và ngăn cách chúng bằng khoảng trắng, ví dụ:
- Mặc định thì
dart format
sẽ ghi đè file, nếu bạn không muốn chuyện đó xảy ra thì có thể sử dụng cờ —output hoặc -o. Sử dụng -o show hoặc -o json để xem nội dung của những file sẽ thay đổi; hoặc -o none nếu bạn chỉ muốn xem danh sách các file sẽ thay đổi.
- Cuối cùng, cờ
--set-exit-if-changed
thường được sử dụng cùng với continuous integration (CI) để chỉ ra việc kiểm tra sẽ không thành công.
- Mặc định câu lệnh sẽ trỏ đến thư mục bin của package, nhưng bạn cũng có thể chạy một chương trình bất kỳ nằm ngoài thư mục bin bằng cách trỏ đến đường dẫn của nó.
- Hỗ trợ khởi chạy chương trình Dart nằm trong một tệp, package hiện tại hoặc một trong những dependency của package hiện tại bằng dòng lệnh.
Trong package hiện tại
- Khi bạn ở trong thư mục cha của package sport, câu lệnh
dart run
sẽ mặc định chạy chương trình bin/sport.dart. - Trong trường hợp không tồn tại chương trình nào có tên giống với package, bạn có thể chạy chương trình bạn mong muốn bằng cách thêm mẫu sau :(program name)
Trong các dependency của package hiện tại
- Để chạy một chương trình bất kỳ, sử dụng
dart run (package name):(program name)
. Ví dụ bạn muốn chạy chương trình bin/football.dart ở trong package sport, sử dụng câu lệnh như sau:
- Nhưng nếu tên chương trình giống với tên package, bạn có thể rút ngắn câu lệnh bằng cách lược bỏ :(program name) ở câu lệnh trên:
Câu lệnh này sẽ chạy chương trình bin/sport.dart trong package sport.
dart test
chạy các thử nghiệm dựa trên thư viện test
và các file trong thư mục test của project. - Sử dụng lệnh
dart test
để chạy toàn bộ các thử nghiệm nằm trong thư mục test. Nếu bạn muốn chạy một thử nghiệm bất kỳ, hãy trỏ đến đường dẫn của chúng, ví dụ:
- Có một cách để chạy các thử nghiệm con ở bên trong file test, đó là sử dụng cờ —name (-n), —tags (-t) hoặc —exclude-tags (-x) kết hợp với một chuỗi bất kỳ sao cho khớp với đoạn mà bạn đang muốn chạy thử nghiệm. Và nếu bạn sử dụng các cờ này nhiều lần trên cùng một dòng lệnh, thì chỉ có các thử nghiệm phù hợp với tất cả điều kiện trên mới được khởi chạy. Dưới đây là một ví dụ, chỉ có 2 đoạn thử nghiệm được gọi ứng với String và print mà bạn định nghĩa ở trên dòng lệnh:
dart test
còn rất nhiều cờ thú vị khác khi khởi chạy thử nghiệm. Để có thể hiểu hơn về test trong project Dart, hãy truy cập test package để biết thêm chi tiết.