【问题标题】:How do I install a Dart package globally?如何全局安装 Dart 包?
【发布时间】:2014-08-29 14:36:27
【问题描述】:

Pub 包管理器是否提供了一种全局安装包的方法?

我从事 node.js 开发已经有一段时间了,我想知道是否有 pub 等效于 npm install -g <package_name>

如果有办法全局安装包,有没有办法注册二进制脚本,可以像 shell 命令一样安装调用。

【问题讨论】:

    标签: dart dart-pub


    【解决方案1】:

    依赖项

    所有 pub 包都是全局安装的(对于每个包版本,Mac/Linux 下 ~/.pub-cache/ 下的唯一子目录 AppData\Roaming\Pub\Cache,对于每个包版本),然后仅链接到您在 pubspec.yaml 中添加依赖项的项目。

    实际上~/pub-cache 仅对用户是全局的,而不是对整个系统而言是全局的。我不太了解 npm,但我认为 npm install -g 将它全局安装到系统中。 Dart 中没有类似的东西,但无论如何你都不会在 Dart 中安装包。当您在不同包中使用相同版本的 Pub 包时,它只会在驱动器上保存一次。

    全局包可执行文件

    可以使用pub global activate ... 全局(每个用户)激活包含可执行脚本的包。如果您将~/.pub-cache/bin/ 目录添加到您的路径中,您可以仅通过它们的名称运行这些可执行的 Dart 脚本(例如 tuneup 包的 tuneup)或 pub global run packagename:scriptName(例如 pub global run tuneup:tuneup)如果脚本和包名称相同,您可以省略:scriptName 部分。

    本地包可执行文件

    您还可以使用 pub run packageName:scriptName 从当前项目的依赖项中运行脚本(例如 pub run test 用于运行单元测试)

    【讨论】:

    • 在支持二进制脚本的情况下全局安装包允许创作工具或实用程序(如代码生成、linter 等),并且仍然使用pub 的便利性和一致性。这是我非常喜欢的npm(甚至是rubygems)的功能之一。如果存在本地版本,Pub 仍然可以使用包的本地版本(应用程序的本地版本)而不是全局版本。
    • 我也相信,您所指的错误报告是 - Issue 7874
    • 太棒了,正是我想要的!非常感谢!
    猜你喜欢
    • 2021-04-13
    • 2012-06-04
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 2019-08-01
    • 2023-03-18
    相关资源
    最近更新 更多