Flutter版本管理辅助插件phntmxyz_bump_version_sidekick_plugin的使用

发布于 1周前 作者 vueper 来自 Flutter

Flutter版本管理辅助插件phntmxyz_bump_version_sidekick_plugin的使用

描述

phntmxyz_bump_version_sidekick_plugin 是一个用于 sidekick 命令行工具的插件,主要功能包括:

  • 升级包的版本(主版本、次版本、修订版本)
  • 可选地提交版本升级
  • 提供修改API来调整其他文件(例如 CHANGELOG.md

安装

先决条件
  1. 安装 sidekick
    dart pub global activate sidekick
    
  2. 生成自定义的 sidekick CLI:
    sidekick init
    

安装插件到自定义的 sidekick CLI 类似于使用 pub 工具安装包。

从 pub.dev 安装此插件
your_custom_sidekick_cli sidekick plugins install phntmxyz_bump_version_sidekick_plugin

使用方法

your_custom_sidekick_cli bump_version [package-path] [--minor|patch|major] --[no-]commit
  • package-path:包含 pubspec.yaml 文件的文件夹路径,该文件的版本将被升级。如果未提供此参数,默认为 mainProject,若未定义 mainProject,则默认为当前目录。
  • 必须指定 --minor--patch--major 之一,以控制如何升级版本。例如,当前版本为 1.2.3,选择 --minor 将更新为 1.3.0
  • 如果提供了 --commit 参数,版本升级将自动提交。

修改API

以下是一个示例,展示如何使用修改API来更新 README.md 文件中的版本号:

// 添加命令并注册修改函数
runner..addCommand(BumpVersionCommand()..addModification(bumpChangelog));

// 修改函数实现
Future<void> bumpChangelog(DartPackage package, Version oldVersion, Version newVersion) async {
  // 获取 README.md 文件
  final readme = package.root.file('README.md');
  
  // 读取文件内容
  final content = readme.readAsStringSync();
  
  // 定义正则表达式匹配版本号
  final versionRegex = RegExp(r'my_package: \^(.+)');
  
  // 替换版本号
  final update = content.replaceFirst(versionRegex, 'my_package: ^${newVersion.canonicalizedVersion}');
  
  // 写入更新后的内容
  readme.writeAsStringSync(update);
}

许可证

Copyright 2023 phntm GmbH

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

完整示例Demo

假设你已经安装了 sidekick 并生成了自定义的 sidekick CLI,以下是完整的使用步骤和示例代码。

  1. 安装插件

    your_custom_sidekick_cli sidekick plugins install phntmxyz_bump_version_sidekick_plugin
    
  2. 创建一个简单的Flutter项目

    flutter create my_project
    cd my_project
    
  3. 初始化 sidekick

    sidekick init
    
  4. 升级版本

    your_custom_sidekick_cli bump_version --minor --commit
    
  5. 查看 pubspec.yaml 文件 确认版本号已更新,例如从 1.0.0 更新为 1.1.0

  6. 使用修改API更新 README.mdsidekick_cli 项目的 lib/commands/bump_version_command.dart 文件中添加以下代码:

    import 'package:sidekick_core/sidekick_core.dart';
    import 'package:phntmxyz_bump_version_sidekick_plugin/phntmxyz_bump_version_sidekick_plugin.dart';
    
    class BumpVersionCommand extends Command {
      @override
      String get name => 'bump_version';
    
      @override
      String get description => 'Bumps the version of the package';
    
      BumpVersionCommand() {
        argParser.addFlag('commit', negatable: true, defaultsTo: false);
        argParser.addOption('level', allowed: ['major', 'minor', 'patch']);
      }
    
      @override
      Future<void> run() async {
        final level = argResults!['level'] as String;
        final commit = argResults!['commit'] as bool;
    
        runner..addCommand(BumpVersionCommand()..addModification(bumpChangelog));
    
        await runner.run(['bump_version', '.', '--$level', if (commit) '--commit']);
      }
    }
    
    Future<void> bumpChangelog(DartPackage package, Version oldVersion, Version newVersion) async {
      final readme = package.root.file('README.md');
      final content = readme.readAsStringSync();
    
      final versionRegex = RegExp(r'my_package: \^(.+)');
      final update = content.replaceFirst(versionRegex, 'my_package: ^${newVersion.canonicalizedVersion}');
      readme.writeAsStringSync(update);
    }
    
  7. 运行命令

    your_custom_sidekick_cli bump_version --minor --commit
    

更多关于Flutter版本管理辅助插件phntmxyz_bump_version_sidekick_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter版本管理辅助插件phntmxyz_bump_version_sidekick_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用phntmxyz_bump_version_sidekick_plugin插件进行版本管理的示例代码和步骤。请注意,此插件的具体实现和API可能因版本而异,因此以下代码仅供参考,实际使用时请参考插件的官方文档。

步骤一:添加插件依赖

首先,你需要在pubspec.yaml文件中添加phntmxyz_bump_version_sidekick_plugin作为依赖。

dependencies:
  flutter:
    sdk: flutter
  phntmxyz_bump_version_sidekick_plugin: ^x.y.z  # 替换为实际的版本号

然后运行以下命令以安装插件:

flutter pub get

步骤二:配置插件

在Flutter项目的根目录下,可能需要一些额外的配置来确保插件正常工作。不过,对于大多数插件来说,添加依赖后就已经完成了大部分配置工作。phntmxyz_bump_version_sidekick_plugin通常不需要额外的配置,但请确保你的项目结构符合插件的要求。

步骤三:使用插件进行版本管理

在你的Dart代码中,你可以通过以下方式使用phntmxyz_bump_version_sidekick_plugin来管理和更新你的Flutter应用的版本号。

示例代码

import 'package:flutter/material.dart';
import 'package:phntmxyz_bump_version_sidekick_plugin/phntmxyz_bump_version_sidekick_plugin.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Version Management'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              ElevatedButton(
                onPressed: () async {
                  // 假设你有一个方法来更新版本号
                  String currentVersion = await PhntmxyzBumpVersionSidekickPlugin.getCurrentVersion();
                  print("Current version: $currentVersion");

                  // 示例:将版本号的主要部分增加1(这只是一个示例,实际逻辑可能不同)
                  List<int> versionParts = currentVersion.split('.').map(int.parse).toList();
                  versionParts[0] += 1;  // 增加主要版本号
                  String newVersion = versionParts.join('.');

                  // 更新版本号
                  await PhntmxyzBumpVersionSidekickPlugin.bumpVersion(newVersion);
                  print("Version updated to: $newVersion");
                },
                child: Text('Bump Version'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

注意事项

  1. 插件权限:确保你的项目配置中包含了插件可能需要的任何权限。
  2. 插件API:由于插件的API可能会随着版本更新而变化,因此请务必参考插件的官方文档和示例代码。
  3. 错误处理:在实际应用中,添加适当的错误处理逻辑,以处理可能出现的异常情况,如版本格式错误、文件写入失败等。

官方文档

为了获取最新和最准确的插件使用信息,请查阅phntmxyz_bump_version_sidekick_plugin官方文档(假设插件在pub.dev上有官方文档)。

希望这些信息对你有所帮助!

回到顶部