Flutter 的 pubspec.yaml 是什麼?介紹其意義和寫法!!

本文將詳細介紹 pubspec.yaml 的作用及其使用方法,這是一個用於管理包版本的文件。

yaml 是什麼?

YAML 是 “YAML Ain’t Markup Language” 的縮寫,
是一種簡潔的數據序列化語言,用於表示數據。
常用於配置文件(如 Config 文件)和數據文件(如 JSON)。

YAML 的特點是使用縮進來表示層次結構,類似於 Python。

flutter 的 pubspec.yaml 是什麼?

“pubspec.yaml” 是 Flutter 項目的配置文件,
管理應用程式的名稱、描述、版本信息以及項目所依賴的包信息、
這些包的版本等。

pubspec.yaml 的結構

“pubspec.yaml” 的基本結構如下:

  • “name”:
      應用程式的名稱。
  • “description”:
      應用程式的簡單描述。
  • “version”:
      應用程式的版本。
  • “environment”:
      指定該項目依賴的 Flutter SDK 版本。
  • “dependencies”:
      指定該項目依賴的外部包。
  • “dev_dependencies”:
      指定僅在開發期間使用的包(如測試框架)。
      buildrunner 和 riverpod_generator 等在開發期間運行的包定義在此。

實際寫法如下:

name: check
description: A new Flutter project.
version: 1.0.0+1
environment:
  sdk: ">=2.17.6 <3.18.2"

dependencies:
  cupertino_icons: 1.0.2
  flutter:
    sdk: flutter
  flutter_localizations: 
    sdk: flutter
  flutter_riverpod:

dev_dependencies:
  build_runner: ^2.4.0
  dart_code_metrics: ^5.7.0
  flutter_test:
    sdk: flutter

pubspec.yaml 的版本意義

包的版本號以 “主.次.修補” 的格式表示。
各數字的含義如下:

  • “主版本”:在進行不兼容的大變更時增加。
  • “次版本”:在不影響現有功能的前提下添加功能時增加。
  • “修補”:在修復錯誤或進行小變更時增加。

例如,指定 [包名: 3.12.4],則主版本為 3,次版本為 12,修補為 4。

pubspec.yaml 的版本指定

pubspec.yaml 的版本指定可以如下書寫:

包名:[空白]
 不指定版本。自動選擇最新版本。
 由於某些破壞性變更(如現有代碼無法運行等),
 建議對重要包指定具體版本。

包名: 1.0.0
 指定版本。選擇記載的版本。

包名: “>=1.0.0 <2.0.0”
 指定版本範圍。在範圍內選擇版本。

包名: ^1.0.0
 在指定版本以上,且主版本相同的範圍內自動選擇版本。這與 “>=1.0.0 <2.0.0” 同義。

不指定版本時,自動選擇最新版本。為避免預期外問題,建議對重要包指定具體版本。

pubspec.lock 是什麼?

“pubspec.lock” 文件記錄使用的各包的具體版本。
當包版本指定為範圍時,可在此確認實際選擇的版本。

版本更新命令

僅編輯 pubspec.yaml 不會自動更新版本。請參考以下命令:

  • 安裝: “flutter pub get”
     安裝 pubspec.yaml 記載的包。
     若已安裝,則更新至最新版本。
     
  • 升級: “flutter pub upgrade”
     更新包至最新版本。
     若為範圍指定,則更新至範圍內的最新版本。
     
  • 降級: “flutter pub downgrade”
     更新包至最早版本。
     若為範圍指定,則更新至範圍內的最早版本。
     
  • 版本依賴關係確認: “flutter pub deps”
     可確認包之間的版本依賴關係。
     顯示項目依賴樹,參照包之間的依賴關係。
     
  • 版本依賴關係確認: “flutter pub deps”
     可確認包之間的版本依賴關係。
     顯示項目依賴樹,參照包之間的依賴關係。
     
  • 版本確認: “flutter pub outdated”
     可確認以下項目的版本信息。
     Current:當前版本
     Upgradable:pubspec.yaml 文件允許的最新版本
     Resolvable:依賴關係的其他包可用的版本
     Latest:可用包的最新版本
     
  • 主版本升級: flutter pub upgrade –major-versions
    更新 pubspec.yaml 列出的包至可能的最新版本。
     
     
  • 個別更新: “flutter pub [命令] [包名]
     在上述命令後指定包名,可僅更新該包。
     例如)安裝 “freezed”:flutter pub get freezed

總結

“pubspec.yaml” 在 Flutter 項目中主要用於包管理,
還可管理項目的元數據定義、外部包的依賴關係、資源指定等。

使用 pubspec.yaml 進行版本管理在 Flutter 應用開發中非常重要。
我經常因版本管理失敗而無法構建,或無法運行 buildrunner。

希望這篇文章能幫助到同樣在 pubspec.yaml 設計上遇到困難的人。

标题和URL已复制