HomeOur Team
Dart command-line tools có thể bạn chưa biết (P2)

Dart command-line tools có thể bạn chưa biết (P2)

By hai.nguyen1
Published in Tips / Tricks
November 15, 2022
4 min read

Ở phần trước mình đã nói về một số dart command-line tool, bạn có thể xem lại ở link dưới đây: Dart command-line tools có thể bạn chưa biết (P1) Để tiếp nối cho phần 1 còn dang dở đó, mình sẽ trình bày nốt về dart compiledart pub.


dart compile

  • Sử dụng dart compile để biên dịch chương trình Dart sang nền tảng đích. Đầu ra mà bạn chỉ định với một lệnh con (subcommand) riêng biệt có thể bao gồm Dart runtime hoặc là một module.
  • Một số subcommand: dart_compile.png
Self-contained executables (exe)

dart_compile_exe.png

  • Tạo ra một file thực thi độc lập cho các hệ điều hành như Windows, Linux, macOS bằng subcommand exe. File thực thi này được biên dịch từ file Dart mà bạn đã chỉ định cũng như các thành phần con của nó, dùng để chạy file Dart đó bằng file exe thay vì phải sử dụng dòng lệnh.
  • Bạn có thể chạy file được sinh ra giống như bất cứ file thực thi nào khác.
  • Biên dịch và xác định vị trí của file được sinh ra, ví dụ ở đây là biên dịch file myapp.dart ra file myapp.exe bên trong thư mục tmp.
AOT modules (aot-snapshot)

dart_compile_aot.png

  • Sử dụng AOT modules để giảm yêu cầu của bộ nhớ khi phân phối nhiều ứng dụng dòng lệnh. Subcommand aot-snapshot tạo ra một file dành riêng cho kiến trúc hiện tại mà bạn đang biên dịch cho ứng dụng của mình.
  • Ví dụ như khi bạn sử dụng hệ điều hành macOS để tạo ra file .aot, thì file đó chỉ có thể chạy trên hệ điều hành này (đối với hệ điều hành khác cũng như vậy).
  • Dart hỗ trợ AOT modules trên Windows, Linux và macOS.
JIT modules (jit-snapshot)

dart_compile_jit.png

  • Bao gồm tất cả các class được phân tích và mã được biên dịch trong quá trình khởi tạo chương trình.
  • Khi chạy chương trình từ một module ứng dụng, Dart VM không cần phải phân tích hay biên dịch các class và hàm đã được sử dụng trong quá trình khởi tạo. Vì vậy giúp cho Dart VM chạy mã người dùng một cách sớm hơn.
Portable modules (kernel)

dart_compile_kernel.png

  • Sử dụng subcommand kernel để đóng gói ứng dụng thành một tệp di động mà có thể chạy được trên tất cả các hệ điều hành và các kiến trúc CPU khác nhau.
  • Mặc dù module kernel đã giảm thời gian khởi động so với code Dart, nhưng chúng có thể vẫn khởi động chậm hơn nhiều so với file được tạo ra ở định dạng AOT.
JavaScript (js)
  • Subcommand js biên dịch code Dart thành dạng JavaScript mà có thể triển khai được.

dart pub

  • Pub là kho lưu trữ chính thức cho các package Flutter và Dart có sẵn tại pub.dev và cũng là giao diện dòng lệnh của bạn để truy cập và lấy dữ liệu từ kho đó.
  • Ở đây có rất nhiều câu lệnh khác nhau nên mình sẽ chỉ nói đến một vài câu lệnh chính mà thường được sử dụng hiện nay.
dart pub add
  • Thêm các package vào pubspec dưới dạng dependency.

  • Lệnh dưới đây tương đương với việc chỉnh sửa file pubpsec.yaml để thêm package http và sau đó gọi đến dart pub get: dart_pub_add.png

  • Mặc định dart pub add sẽ thêm phiên bản mới nhất của package đang được sử dụng trên trang pub.dev. Ví dụ ở đây dart pub add http sẽ lấy phiên bản 0.13.5 của package http và thêm vào pubspec. Cách này sẽ nhanh hơn ở trường hợp bạn muốn sử dụng phiên bản mới nhất cho project, nếu muốn sử dụng phiên bản thấp hơn thì bạn phải lên trang web để lấy con số chính xác.

  • Còn nếu chỉ muốn thêm package vào project cho quá trình phát triển mà không muốn release thì bạn phải sử dụng thêm —dev: dart_pub_add_2.png

dart pub cache
  • Với lệnh này, bạn có thể làm việc với bộ nhớ đệm của hệ thống chỉ thông qua dòng lệnh, khá thú vị đấy chứ.

  • Bạn có thể thêm một package vào bộ nhớ đệm của hệ thống: dart_pub_cache.png

  • Bạn cũng có thể cài đặt lại toàn bộ package trong bộ nhớ đệm. Lệnh dưới đây có thể sẽ cực kỳ hữu dụng trong trường hợp các package bằng một cách nào đó bị thay đổi hoặc bị hỏng: dart_pub_cache_3.png

  • Cuối cùng, bạn có thể xoá toàn bộ dữ liệu trong bộ đệm để lấy lại dung lượng ổ đĩa hoặc xoá các package có vấn đề.

dart pub get

dart_pub_get.png

  • Lưu toàn bộ dependency cũng như các phần bổ trợ cho chúng mà bạn đã liệt kê ở file pubspec.yaml để bạn có thể sử dụng trong project.
  • Câu lệnh này cũng giúp xóa dependency bất kỳ mà bạn không còn sử dụng hoặc không còn tồn tại trong file pubspec.yaml nữa khỏi bộ nhớ hệ thống.
dart pub remove

dart_pub_remove.png

  • Xoá một package bất kỳ được bạn chỉ định bằng tên ở dependencies hoặc dev_dependencies của file pubspec.yaml; sau khi xoá thành công sẽ tự động chạy flutter pub get để cập nhật lại các dependency đang sử dụng trong project. Điều này giúp bạn không phải tốn công sức xoá và cập nhật các dependency bằng tay.
dart pub downgrade

dart_pub_downgrade.png

  • dart pub downgrade sẽ mặc định đưa tất cả những dependency (cũng như các phần bổ trợ cho chúng) mà bạn đang sử dụng trong file pubspec.yaml ở không gian làm việc hiện tại về version thấp nhất còn khả dụng.

  • Bên cạnh đó, bạn cũng có thể chỉ định một dependency bất kỳ xuống version thấp nhất bằng cách truyền tên của dependency đó khi gọi dart pub downgrade. Trong trường hợp này, pub sẽ cố gắng tìm kiếm version thấp nhất và phù hợp nhất của những dependency bổ trợ cho dependency mà bạn muốn giảm version. Ví dụ: dart_pub_downgrade_2.png

  • Và nếu một dependency bất kỳ bị xoá có nghĩa là nó không còn tồn tại hoặc không thích hợp để bạn sử dụng trong project nữa.

dart pub upgrade

dart_pub_upgrade.png

  • dart pub upgrade về cơ bản là ngược lại so với dart pub downgrade; nếu ở phía trên bạn thấy dart pub downgrade sẽ giảm các dependency hiện tại về version thấp nhất thì ở đây dart pub upgrade sẽ đưa các dependency lên version mới nhất mà project có thể sử dụng được.
  • dart pub upgrade có điểm tương đồng so với dart pub downgrade ở chỗ một dependency bất kỳ sẽ bị xóa nếu nó không còn khả dụng.

Như vậy là series “Dart command-line tools có thể bạn chưa biết” đã đi đến hồi kết. Hi vọng sau series này bạn có thể phần nào hiểu rõ hơn về các lợi ích hay sự tiện lợi khi sử dụng Dart command-line tools trong quá trình làm việc. Cảm ơn bạn vì đã dành thời gian theo dõi.

Tags

Dart command-line

Share

hai.nguyen1

hai.nguyen1

Developer

Expertise

Related Posts

Dart command-line tools có thể bạn chưa biết (P1)
Tips / Tricks
Dart command-line tools có thể bạn chưa biết (P1)
November 11, 2022
4 min
© 2023, All Rights Reserved.
Powered By

Quick Links

HomeOur Team

Social Media