搭建Flutter本地私有库

一、下载mongodb

| 📌

需要下载6.x.x版本以下,否则会报错

历史版本下载链接:https://www.mongodb.com/try/download/community-edition/releases/archive

假设下载后放到:/usr/local/

二、配置环境变量

在~/.bash_profile和~/.zshrc中添加如下

bash 复制代码
# mongodb
export PATH="/usr/local/mongodb-macos-x86_64-5.0.31/bin:$PATH"

操作完记得sorce下

bash 复制代码
source ~/.bash_profile && source ~/.zshrc

三、启动mongodb服务

1. 创建目录

bash 复制代码
/usr/local/var/mongodb/、/usr/local/var/log/mongodb/

2. 开启服务

  1. 命令行输入mongod --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log
  2. 新开命令行输入:mongo

四、安装unpub

1. 下载unpub

bash 复制代码
flutter pub global activate unpub

2. 去掉unpub的google校验

需修改的文件路径:~/.pub-cache/hosted/pub.dev/unpub-2.1.0/lib/src/app.dart

需要将调用_getUploaderEmail的地方去掉,一共三处。

  1. L241修改成如下
dart 复制代码
  @Route.post('/api/packages/versions/newUpload')
  Future<shelf.Response> upload(shelf.Request req) async {
    try {
      // var uploader = await _getUploaderEmail(req);
      var uploader = "";
  1. L366修改成如下
dart 复制代码
  @Route.post('/api/packages/<name>/uploaders')
  Future<shelf.Response> addUploader(shelf.Request req, String name) async {
    var body = await req.readAsString();
    var email = Uri.splitQueryString(body)['email']!; // TODO: null
    // var operatorEmail = await _getUploaderEmail(req);
    // var package = await metaStore.queryPackage(name);

    // if (package?.uploaders?.contains(operatorEmail) == false) {
    //   return _badRequest('no permission', status: HttpStatus.forbidden);
    // }
    // if (package?.uploaders?.contains(email) == true) {
    //   return _badRequest('email already exists');
    // }

    await metaStore.addUploader(name, email);
    return _successMessage('uploader added');
  }
  1. L384修改成如下
dart 复制代码
  @Route.delete('/api/packages/<name>/uploaders/<email>')
  Future<shelf.Response> removeUploader(
      shelf.Request req, String name, String email) async {
    email = Uri.decodeComponent(email);
    // var operatorEmail = await _getUploaderEmail(req);
    // var package = await metaStore.queryPackage(name);

    // TODO: null
    // if (package?.uploaders?.contains(operatorEmail) == false) {
      return _badRequest('no permission', status: HttpStatus.forbidden);
    // }
    // if (package?.uploaders?.contains(email) == false) {
    //   return _badRequest('email not uploader');
    // }

    await metaStore.removeUploader(name, email);
    return _successMessage('uploader removed');
  }

3. 启动unpub

mongod --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log

只要有这个输出,则代表成功

bash 复制代码
Serving at http://0.0.0.0:4000

4. 访问

地址:http:localhost:4000
| 📌

最好用Chrome访问

五、推送本地插件到私有库

在pubspec.yaml中添加如下:

yaml 复制代码
publish_to: http://localhost:4000

六、使用私有库插件

yaml 复制代码
test_pub_plugin:
    hosted:
      name: test_pub_plugin
      url: http://localhost:4000
    version: ^0.0.1
相关推荐
恋猫de小郭21 小时前
Android CLI 支持 AI Agent 通过 Device Streaming 调试云真机
android·前端·flutter
m0_738185822 天前
Flutter 鸿蒙化实战:flutter_scankit 适配 OpenHarmony,华为 ScanKit 扫码
flutter·华为·harmonyos·鸿蒙
事圆则缓2 天前
Flutter 开发鸿蒙实战:从 OpenHarmony 适配版到 HAP 构建与插件接入
flutter·华为·harmonyos
天空之城--2 天前
Android一周动态:Android 18首次官宣、Compose Material3 1.4转正(5趋势+5资讯)
android·人工智能·flutter·架构·android jetpack
恋猫de小郭2 天前
Meta 分享怎么用 AI 迁移 Compose 项目不烧心
android·前端·flutter
EatFan2 天前
Flutter 鸿蒙适配实践 2026:从环境搭建、混合渲染到 OpenTelemetry 性能基建
flutter·华为·harmonyos·openharmony·opentelemetry·鸿蒙适配·impeller
m0_738185822 天前
Flutter 鸿蒙化实战:flutter_secure_storage 适配 OpenHarmony,敏感数据安全存储
安全·flutter·华为·harmonyos·鸿蒙
传奇开心果编程3 天前
【现代声明式UI学与练】第1课 从命令式UI到声明式UI
学习·flutter·ui·swiftui·react·android jetpack
m0_738185823 天前
Flutter 鸿蒙化实战:flutter_nfc_kit 适配 OpenHarmony,NFC 读写一步到位
flutter·华为·harmonyos·鸿蒙
恋猫de小郭3 天前
KMP 又改了编译流程, Separate Compilation 禁止了 `commonMain` 的依赖穿透
android·前端·flutter