Search code examples
gitgithubdartdart-pub

How to get pub from GitHub as a dependency


I'm learning Dart, but I found a problem:

I want to add the widget.dart package from its GitHub repository as a dependency for my project. But in pub.dartlang.org there is very old version, which requires the obsolete Web UI. Does anyone know, how to get the pub from GitHub repository (and install it like the one from the pub.dartlang.org)?

I'm using GitHub on Windows and Dart Editor.


Update: I tried to add it into a dependency and run 'pub get' in the classic way:

dependencies:
  widget:
    git: [email protected]:dart-lang/widget.dart.git

But it returns this error:

--- 30.1.2014 15:35:27 Running pub get ... ---
Pub get failed, [1] Resolving dependencies...
Cannot get widget from Git ([email protected]:dart-lang/widget.dart.git).
Please ensure Git is correctly installed.
e:\b\build\slave\dart-editor-win-stable\build\dart\sdk\lib\_internal\pub\lib\src\source\git.dart 42  GitSource.downloadToSystemCache.<fn>
dart:isolate                                                                                         _RawReceivePortImpl._handleMessage

This is an unexpected error. Please run

pub --trace 'get'

and include the results in a bug report on http://dartbug.com/new.

** Warning: Application may fail to run since packages did not get installed.Try running pub get again. **

Solution

  • Add the dependency in pubspec.yaml like

    Edit pubspec.yaml in text mode

    dependencies:
      widget:
        git: [email protected]:dart-lang/widget.dart.git
    

    Use the assistant

    if you open the pubspec.yaml file in DartEditor you get a nice assistant

    1. click Add...
    2. Enter name of package: 'widget'
    3. Change the lookup Source from hosted to git
    4. Set Git ref: to [email protected]:dart-lang/widget.dart.git

    Additional Info:

    • You can look up the dependency name in the file pubspec.yaml in the widget's GitHub repository under name: widget
    • You can copy the git path from the GitHub repository under SSH clone URL (above the 'Download ZIP` button)

    EDIT
    To make this work you need to have the git command line client installed on your local system.

    You can download the repository manually

    git clone [email protected]:dart-lang/widget.dart.git
    

    and add the following dependency

    dependencies:
      widget:
        git: ../widget.dart
        # path: ../widget.dart # would work too
    

    Alternatively you can download the repository from GitHub (Download as ZIP) extract it to your local drive and use a path: dependency like

    dependencies:
      widget:
        path: ../widget.dart
    

    provided you extracted the ZIP to a sibling folder of your package.

    See also https://www.dartlang.org/tools/pub/dependencies#git-packages