This plugin resolves git-based dependencies in the package for Unity Package Manager.
You can use git repositories url as a package dependencies! :+1:
<< Description | Install | Usage | Development Note | Contributing | Change log >>
In Unity 2018.3, the Unity Package Manager (UPM) supported Git. :)
This update allows us to quickly install packages on code hosting services such as GitHub.
However, UPM does not support git-based dependencies in the package. :(
[ package-a/package.json ]
{
"name": "com.coffee.package-a",
"version": "0.1.0",
"dependencies": {
"com.coffee.core-a" : "https://github.com/mob-sakai/GitPackageTest#core-a-0.1.0"
}
}
When the above package is installed, the following error occur.
Git-based dependencies in packages feature is on the roadmap for 2020, but no specific ETA.
This plugin resolves git-based dependencies in the package.
You can use git repositories url as a package dependencies! :+1:
https://github.com/user/repo.git?path=/example/folder
https://github.com/user/repo.git?path=/example/folder#v1.2.3
From: https://forum.unity.com/threads/git-support-on-package-manager.573673/page-3#post-4552084
There is no conflict detection and/or resolution algorithm. The lastest package found with the same name is used. This is not how the package manager resolve dependency (See https://docs.unity3d.com/Manual/upm-conflicts-auto.html).
In Unity's algorithm, package conflicts are resolved by "dependency-level from root".
The all packages resolved by this plugin are "dependency-level=1".
Therefore, in some cases, the package of the intended version may not be installed.
For example, in the case of a project with a dependency graph like this:
project (root)
├ package A: 1.0.0
│ └ package X: 2.0.0
└ package B: 1.0.0
└ package C: 2.0.0
└ package X: 2.0.1
This plugin's algorithm
Install -> A: 1.0.0, B: 1.0.0, C: 2.0.0, X: 2.0.1
Unity's algorithm
Install -> A: 1.0.0, B: 1.0.0, C: 2.0.0, X: 2.0.0
This package is available on OpenUPM. You can install it via openupm-cli.
openupm add com.coffee.git-dependency-resolver
Find the manifest.json
file in the Packages
directory in your project and edit it as follows:
{
"dependencies": {
"com.coffee.git-dependency-resolver": "https://github.com/mob-sakai/GitDependencyResolverForUnity.git",
...
},
}
To update the package, change suffix #{version}
to the target version.
"com.coffee.git-dependency-resolver": "https://github.com/mob-sakai/GitDependencyResolverForUnity.git#1.2.0",
Or, use UpmGitExtension to install and update the package.
Library/ScriptAssemblies
directory in the project.Unity Package Manager Error
window is opens, click Continue
.Packages/.*
to .gitignore
to hide auto-installed package. package.json
file in your package and edit it as follows:
{
...
"gitDependencies": {
"your.package": "https://github.com/yourname/yourpackage.git#v1.2.3",
...
}
}
"your.package": "https://github.com/yourname/yourpackage.git?path=/pkg/dir#v1.2.3"
gitDependencies
instead of dependencies
to define git-based dependencies for the package.
dependencies
to resolve git-based dependencies, but if dependencies
include packages that UPM can't resolve, it will fail to start Unity in CI environment.com.coffee.git-dependency-resolver
.
1.0.0
, 0.5.0-preview10
, 0.1.0-alpha+daily5
Issues are very valuable to this project.
Pull requests are, a great way to get your ideas into this repository.
See CONTRIBUTING.md.
This is an open source project that I am developing in my spare time.
If you like it, please support me.
With your support, I can spend more time on development. :)