如何使用我的 dart 包私有而不在 pub dart lang 上显示?

Posted

技术标签:

【中文标题】如何使用我的 dart 包私有而不在 pub dart lang 上显示?【英文标题】:How to use my dart packages private and not show on pub dart lang? 【发布时间】:2019-06-06 05:00:52 【问题描述】:

由于我的公司协议,我有不想发布到 pub 的 dart 包。如何仅将我的 dart 包用于我的公司而不在 pub dart lang 上显示?

我已查看此链接 https://github.com/dart-lang/pub/issues/1050,但仍需要有关此的更多信息。

【问题讨论】:

【参考方案1】:

如果您将包发布到https://pub.dartlang.org,它将显示出来。没有办法解决这个问题。

替代品。

你可以使用

例如存储在本地或网络驱动器上的包的路径依赖关系。 Git 对存储在 Git 存储库中的包的依赖关系 在本地或网络驱动器上 托管在 GitHub、GitLab 或任何其他 Git 服务器上 运行您自己的私人 Pub 服务器。

另见

https://www.dartlang.org/tools/pub/dependencies https://github.com/dart-lang/pub_server

【讨论】:

【参考方案2】:

Günter Zöchbauer 的答案是正确的,但他没有提供示例。

所以要使用 pub/package/lib 而不在 pub.dev 上发布:

1.本地 - 保存在某个本地文件夹中

dependencies:
  library_name:
   path: /path/to/library_name

2。托管 - 推送到 Github、Gitlab 等。

dependencies:
  library_name:
   git: https://github.com/username/library_name

或针对确切的分支

dependencies:
  library_name:
   git:
    url: https://github.com/username/library_name.git
    ref: dev    #branch name

或以精确提交为目标

dependencies:
  library_name:
   git:
    url: https://github.com/username/library_name.git
    ref: e234072340    #commit reference id

其中“library_name”必须与该 pub 的 pubspec.yaml 中声明的“name”相同。

【讨论】:

git 子模块是另一种可能性【参考方案3】:

本地:

为了处理这个问题,pub 支持路径依赖。

dependencies:
  transmogrify:
    path: /Users/me/transmogrify

这表示 transmogrify 的根目录是 /Users/me/transmogrify。

见: https://www.dartlang.org/tools/pub/dependencies

【讨论】:

【参考方案4】:

您还可以让其他人运行 pub 服务器(作为服务): https://cloudsmith.io/l/dart-repository/

虽然私有存储库是商业(付费),但公共和开源存储库是免费的。如果您正在寻找无服务器托管解决方案,这是唯一的选择(截至撰写本文时)。

【讨论】:

以上是关于如何使用我的 dart 包私有而不在 pub dart lang 上显示?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取音频文件的长度而不在 Flutter/Dart 中播放

Dart语言入门四

在企业(私有)环境中托管 dart/flutter 包的官方方式是啥?

Dart - 一个 dart 项目如何在不使用 pub 的情况下从另一个 dart 项目导入代码?

使用 baget 搭建 nuget 私有服务

如何在 Ubuntu 网络服务器上为 Dart 安装 pub(命令行使用)