Flutter插件unpubd的使用_unpubd 是一个用于运行本地 Dart 包存储库的 Docker 容器和管理工具

发布于 1周前 作者 yibo5220 最后一次编辑是 5天前 来自 Flutter

Flutter插件unpubd的使用_unpubd 是一个用于运行本地 Dart 包存储库的 Docker 容器和管理工具

Flutter可能存在的未知功能插件unpubd的探索

unpubd简介

unpubd 是一个用于运行本地 Dart 包存储库的 Docker 容器和管理工具。unpubd 实质上是 unpub 包的安装程序。

安装时会创建两个 Docker 容器:mongo 和 unpubd。其中,mongo 提供了包的数据库,而 unpubd 则提供了 Web 界面和 API,供 Dart 的 pub 命令使用。一旦安装并配置完毕,你就可以将包发布到本地存储库。此外,unpubd 还可以作为 pub.dev 的本地代理。

要使用 unpubd,你可以通过替换 dart pub 使用 unpub 命令,或者设置环境变量 PUB_HOSTED_URL 来让 dart pub 使用你的本地存储库。

安装

前提条件
  • Docker
  • docker-compose
安装步骤

首先,安装上述前提条件:

# 安装 Docker 和 docker-compose

然后运行以下命令来安装 unpubd

dart pub global activate unpubd
unpubd install

安装过程中,unpubd 会询问你要暴露的端口号,默认为 4000。你可以选择任何介于 1025 到 65000 之间的端口。确保该端口未被其他应用占用。

启动unpubd

要在前台启动 unpubd,运行:

unpubd up

要在后台启动 unpubd,运行:

unpub up --detach

停止unpubd

如果在前台使用 unpubd,只需按下 Ctrl+C 即可终止应用。

如果 unpubd 在后台运行,则运行:

unpubd stop

使用unpubd

pub get/outdated/upgrade/publish 命令都与 pub.dev 交互。注意,flutter pubdart pub 都遵循相同的更改说明。

有两种方法可以将 pub 命令重定向到使用本地包存储库:

方法一:设置 PUB_HOSTED_URL 环境变量

如果你设置了 PUB_HOSTED_URL 环境变量指向你的本地存储库,那么 dart pubflutter pub 都会使用你的本地存储库。

在 Linux 上设置环境变量:

export PUB_HOSTED_URL=http://localhost:4000

在 Windows 上设置环境变量:

# 添加相同的 URL 到你的 PATH 中

在 MacOS 上设置环境变量:

# 如果你知道详细信息,请告诉我
方法二:使用 unpub

unpub 命令(与我们在安装过程中使用的 unpubd 不同)是一个简单的传递机制,它动态设置 PUB_HOSTED_URL,然后调用 dart pub 并传递相同的参数。

对于 Dart SDK 用户:

unpub

对于 Flutter SDK 用户:

funpub
``

这种方法的优点在于,如果你需要恢复使用 `pub.dev`,只需恢复使用 `dart pub/flutter pub` 而不必创建任何环境变量。

#### 发布到unpubd

要将你的包发布到 `unpubd`(而不是 `pub.dev`),你需要在你的包的 `pubspec.yaml` 文件中添加一个 `publish_to` 键:

```yaml
name: dcli
description: Dart console SDK
version: 1.0.0
repository: https://github.com/noojee/dcli
homepage: dcli.noojee.dev

publish_to: http://your-unpubd-server.com

现在当你运行 pub publish 时,你的包将会发布到你的 unpubd 服务器。

添加依赖

如果你使用 PUB_HOSTED_URLunpub 运行 dart pub,则 pub 会自动尝试从 unpubd 拉取依赖。

但是,你也可以通过修改 pubspec.yaml 文件中的依赖项为托管依赖项,以确保你的包依赖项始终从 unpubd 拉取:

dependencies:
  dcli:
    hosted:
      url: http://your-unpubd-server.com
      version: ˆ1.0.0

这种技术在为公共包准备 PR 时也很有用。你可以在内部测试后将其发布到你的 unpubd 服务器,然后再推送 PR。

unpubd命令

unpubd 支持多个命令:

unpubd install

安装 unpubd 和 Docker 容器。

unpubd reset

删除 Docker 容器和卷。注意:这将删除所有本地包。

WARNING: 所有本地包都将被删除。
unpub up

启动 unpubd 和 MongoDB Docker 容器。

unpub down

关闭 unpubd 和 MongoDB 容器。

构建

这部分内容适用于 unpubd 的开发者。

前提条件
  • Docker
  • docker-compose
  • dcli (通过 pub global activate dcli 安装)
  • pub_release (通过 pub global activate pub_release 安装)
  • critical_test (通过 pub global activate critical_test 安装)
发布

要创建 unpubd 的发布版本:

dcli pack
tool/build.dart
pub_release

发布过程会构建并发布 Docker 镜像到 Noojee 仓库(你需要是 Docker Hub Noojee 仓库的管理员),同时发布包到 pub.dev

快速 Docker 构建

当你需要重新构建 Docker 镜像时,可以使用 --clone 开关:

tool\build.dart --clone

这条命令只会重新克隆源代码,并只重建所需的 Docker 步骤。

如果需要强制完全重建 Docker 容器,使用:

tool\build.dart --clean

更多关于Flutter插件unpubd的使用_unpubd 是一个用于运行本地 Dart 包存储库的 Docker 容器和管理工具的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter插件unpubd的使用_unpubd 是一个用于运行本地 Dart 包存储库的 Docker 容器和管理工具的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


虽然unpubd这个插件名称看起来像是虚构的或者是一个打字错误(可能是指pub.dev上的某个插件但名字记错了),但我们可以基于Flutter插件开发的一般流程来模拟一个假设的插件介绍和示例代码。请注意,以下内容是基于一个假设的插件功能来编写的,并非真实存在的unpubd插件。

假设插件功能:hypothetical_plugin

假设hypothetical_plugin是一个Flutter插件,它提供了与硬件传感器(比如加速度计)的高级交互功能,并能够实时处理和显示传感器数据。

1. 插件配置

首先,你需要在pubspec.yaml文件中添加这个假设的插件依赖(请注意,这里的依赖名是假的,实际使用时需要替换为真实存在的插件名):

dependencies:
  flutter:
    sdk: flutter
  hypothetical_plugin: ^0.1.0  # 假设的版本号

然后运行flutter pub get来安装依赖。

2. 插件使用示例

以下是一个简单的Flutter应用示例,展示如何使用hypothetical_plugin来获取并显示加速度计数据:

import 'package:flutter/material.dart';
import 'package:hypothetical_plugin/hypothetical_plugin.dart';  // 假设的插件导入

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Hypothetical Plugin Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String _accelerationData = 'No Data';

  @override
  void initState() {
    super.initState();
    _startListeningToAcceleration();
  }

  void _startListeningToAcceleration() {
    // 假设插件提供了一个监听加速度计数据的方法
    HypotheticalPlugin.listenToAcceleration((AccelerationData data) {
      setState(() {
        _accelerationData = 'X: ${data.x}, Y: ${data.y}, Z: ${data.z}';
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Hypothetical Plugin Demo'),
      ),
      body: Center(
        child: Text(
          _accelerationData,
          style: TextStyle(fontSize: 24),
        ),
      ),
    );
  }
}

// 假设的加速度计数据模型
class AccelerationData {
  double x;
  double y;
  double z;

  AccelerationData({required this.x, required this.y, required this.z});
}

请注意,上述代码中的HypotheticalPlugin类及其listenToAcceleration方法是完全假设的,实际使用时需要根据真实插件的API文档进行调整。

3. 插件开发注意事项

如果你打算自己开发一个Flutter插件,以下是一些基本的步骤和注意事项:

  • 创建插件项目:使用flutter create --template=plugin your_plugin_name命令来创建一个新的Flutter插件项目。
  • 实现平台特定代码:在androidios文件夹下分别实现Android和iOS平台的特定功能。
  • 更新pubspec.yaml:确保在插件项目的pubspec.yaml文件中正确声明了依赖项和平台特定代码的路径。
  • 编写文档和示例:为你的插件编写清晰的文档和示例代码,帮助其他开发者理解和使用你的插件。

由于unpubd这个插件名称不存在于官方仓库中,因此以上内容是基于一个假设的插件功能来编写的。如果你确实在寻找一个具有特定功能的Flutter插件,建议访问pub.dev并搜索相关的关键词来找到合适的插件。

回到顶部