Giter Club home page Giter Club logo

openupm's Introduction

logo

OpenUPM - Open Source Unity Package Registry

X Follow

screenshot

OpenUPM | OpenUPM中文网

Read this in other languages: English, 简体中文.

Table of contents

Introduction

OpenUPM is an open-source service for hosting and building open-source Unity Package Manager (UPM) packages. The intention is to create a universal platform to discover, distribute, and share open-source UPM packages, and build a community along with it.

OpenUPM is composed of two parts:

  • The managed scoped package registry for hosting UPM packages.
  • The automatic build pipelines for tracking, building, and publishing UPM packages based on Git tags.

DISCLAIMER: OpenUPM is an open-source service, not an official service provided by Unity Technologies Inc.

Learn more at our documentations.

Sponsors and backers

OpenUPM is an independent project with its ongoing development made possible entirely thanks to the support by our awesome sponsors, backers, and contributors. If you'd like to join them, please consider:

Service Sponsors

Ecosystem

Sub-project Description
package.openupm.com UPM registry
package.openupm.cn UPM registry for China Region
openupm/openupm website, package curated list
openupm/openupm-pipelines build pipelines
openupm/openupm-cli command-line tool

Bugs and feature requests

Have a bug or a feature request? Please first search for existing and closed issues. If your problem or idea is not addressed yet, please open a new issue.

Community

Contributors

Thank you to all the people who already contributed to OpenUPM!

Terms and license

Status

See https://openupm.github.io/upptime/

openupm's People

Contributors

dependabot[bot] avatar dragonslaya84 avatar dteruel avatar favoyang avatar fredericrp avatar gdgrhinox avatar gekidoslair avatar gilzoide avatar idreamsofgame avatar iseeicy avatar ivanmurzak avatar japtar10101 avatar jessetg avatar kleinerhacker avatar laicasaane avatar legustavinho avatar ltmx avatar mergify[bot] avatar peng-zhiyuan avatar quabug avatar reddevildragg avatar runette avatar semantic-release-bot avatar simondarksidej avatar stephenhodgson avatar tayouvr avatar thundernerd avatar uurha avatar vovgou avatar wellshsu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openupm's Issues

Bug: auto merge failure

@yoshida190,

I just notice that there're two failed (and closed) PRs that should be merged automatically. I'm sorry that let you go through a painful process. I suspect the issue caused by a recent update for the our auto merge bot. I'm working on this, and will notify you of further updates.

Refs #27, #28.

feat: alert for Git dependencies

  • CLI shall use [WARN] for Git dependencies.
$ openupm add com.worldreaver.systemmemory
fetchPackageInfo: service unavailable. name=com.worldreaver.systembuffers registry=https://packages.unity.com
invalid dep: com.worldreaver.systembuffers
fetchPackageInfo: service unavailable. name=com.worldreaver.systemruntimecompilerservicesunsafe registry=https://packages.unity.com
invalid dep: com.worldreaver.systemruntimecompilerservicesunsafe
added: [email protected]
manifest updated, please open unity project to apply changes
  • Package detail page shall alert Git dependencies.

The dependency packages should be in oepnupm too?

My package in oepnupm adds dependency like this, but seems that oepnupm can not add them.
image

"dependencies": { "com.github.cosmos53076.newtonsoft.json": "https://github.com/cosmos53076/Newtonsoft.Json.git#1.0.0" }

Feature request: how many people download packages

Show weekly/total download for a given package.

  • Research NPM download-counts API
  • Research express middleware to hook an existing API endpoint
  • Research verdaccio middleware to hook an existing API endpoint
  • Design the install-counts solution
  • Implement verdaccio-install-counts middleware
  • Prefill 1 month of data
  • Add install-counts chart to the package detail page
  • Add downloads to the package card
  • Sort by download on the listing page
  • Add monthly install-counts badge to package detail

References

Features

  • API to fetch weekly, monthly, and lifetime download counts for a package
  • API to fetch the last 30 days' download counts for a package
  • Bar chart for the last 30 days' download counts for a package
  • Package list sorted by monthly downloads

feat: support git tag prefix

sarkahn/rltk_unity#1 (comment)

To support monorepos better, build pipelines can use the git tag prefix to filter git tags, so it only build relevant git tags. i.e. for monorepos with packages namespace.a and namespace.b, the git tags could be namespace.a/1.0.0 and namespace.b/1.0.0. Package namespace.a will ignore namespace.b/1.0.0 git tag to avoid wasting the CI resource.

netlify: ineffective mark-compacts near heap limit Allocation failed

9:40:53 PM: [1375:0x4b7a370]   170904 ms: Mark-sweep 2019.2 (2057.9) -> 2019.0 (2057.9) MB, 5209.6 / 0.0 ms  (average mu = 0.163, current mu = 0.084) allocation failure GC in old space requested
9:40:53 PM: [1375:0x4b7a370]   176494 ms: Mark-sweep 2019.0 (2057.9) -> 2019.0 (2057.9) MB, 5107.6 / 0.1 ms  (average mu = 0.128, current mu = 0.086) allocation failure GC in old space requested
9:40:53 PM: <--- JS stacktrace --->
9:40:53 PM: ==== JS stack trace =========================================
9:40:53 PM:     0: ExitFrame [pc: 0x13cb519]
9:40:53 PM: Security context: 0x37eb2a0808d1 <JSObject>
9:40:53 PM:     1: /* anonymous */ [0x3b734e13ba09] [/opt/build/repo/node_modules/@babel/generator/lib/source-map.js:~35] [pc=0x8cf2bacf908](this=0x3b734e1281f9 <SourceMapGenerator map = 0x30dd5910ba19>,0x14dd0537e399 <Object map = 0x15a5fb0b2489>)
9:40:53 PM:     2: forEach [0x37eb2a0907e1](this=0x1e6048737131 <JSArray[1762648]>,0x3b734e13ba09 <JSFunction (sfi = 0x3bbec53fec9)>,0x3b734...
9:40:53 PM: FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
9:40:53 PM:  1: 0xa07f90 node::Abort() [/opt/buildhome/.nvm/versions/node/v12.18.0/bin/node]
9:40:53 PM:  2: 0xa0839c node::OnFatalError(char const*, char const*) [/opt/buildhome/.nvm/versions/node/v12.18.0/bin/node]
9:40:53 PM:  3: 0xb80d9e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/opt/buildhome/.nvm/versions/node/v12.18.0/bin/node]
9:40:53 PM:  4: 0xb81119 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/opt/buildhome/.nvm/versions/node/v12.18.0/bin/node]
9:40:53 PM:  5: 0xd2d875  [/opt/buildhome/.nvm/versions/node/v12.18.0/bin/node]
9:40:53 PM:  6: 0xd2df06 v8::internal::Heap::RecomputeLimits(v8::internal::GarbageCollector) [/opt/buildhome/.nvm/versions/node/v12.18.0/bin/node]
9:40:53 PM:  7: 0xd3a785 v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/opt/buildhome/.nvm/versions/node/v12.18.0/bin/node]
9:40:53 PM:  8: 0xd3b635 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/opt/buildhome/.nvm/versions/node/v12.18.0/bin/node]
9:40:53 PM:  9: 0xd3e0ec v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/opt/buildhome/.nvm/versions/node/v12.18.0/bin/node]
9:40:53 PM: 10: 0xd04cbb v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [/opt/buildhome/.nvm/versions/node/v12.18.0/bin/node]
9:40:53 PM: 11: 0x104661c v8::internal::Runtime_AllocateInOldGeneration(int, unsigned long*, v8::internal::Isolate*) [/opt/buildhome/.nvm/versions/node/v12.18.0/bin/node]
9:40:53 PM: 12: 0x13cb519  [/opt/buildhome/.nvm/versions/node/v12.18.0/bin/node]
9:41:03 PM: Aborted (core dumped)
9:41:03 PM: 

Solution

The automated release is failing 🚨

🚨 The automated release from the master branch failed. 🚨

I recommend you give this issue a high priority, so other packages depending on you could benefit from your bug fixes and new features.

You can find below the list of errors reported by semantic-release. Each one of them has to be resolved in order to automatically publish your package. I’m sure you can resolve this 💪.

Errors are usually caused by a misconfiguration or an authentication problem. With each error reported below you will find explanation and guidance to help you to resolve it.

Once all the errors are resolved, semantic-release will release your package the next time you push a commit to the master branch. You can also manually restart the failed CI job that runs semantic-release.

If you are not sure how to resolve this, here is some links that can help you:

If those don’t help, or if this issue is reporting something you think isn’t right, you can always ask the humans behind semantic-release.


Cannot push to the Git repository.

semantic-release cannot push the version tag to the branch master on the remote Git repository with URL https://x-access-token:[secure]@github.com/openupm/openupm.

This can be caused by:


Good luck with your project ✨

Your semantic-release bot 📦🚀

Bug - /all/ endpoint failure

Due to a recent update of the registry server, the /all/ endpoint is failed.

This will affect

  • openupm-cli search

The issue is addressed, it caused by storage service concurrent API limitation. A fix is WIP, but it likely takes some time to implement a fused storage backend.

Lister view on website needs a one column option

e.g. https://openupm.com/packages/

And it should be the default. :)

And you should probably remove the two column option while you're at it. :)

Seriously - does anyone enjoy skimming long scrolling pages with two columns? You either have to skim all the way down one side and then up the other. Or you awkwardly skim left to right as you go down which gives me a headache. (and that's particularly annoying if items have variable height!)

I've never seen a multicolumn lister that wouldn't have had vastly improved UX by being a good old-fashioned single column lister.

Detect README for monorepo package

The README fetching logic shall be improved for monorepo, it shows the README of repository for now. But a monorepo package may have its own README along with the package.json path. Should show that file content if exists.

Another case is the default README.md doesn't locate at the root path. Assuming it located at the root path will cause broken image links using a relative path.

Packages not sorted at category page

Steps to reproduce

Open DOTS & ECS category page and try to find any sorting order rules.

Expected behavior

Packages can be sorted:

  • Alphabetically.
  • Stars amount.

Actual behavior

Looks like all packages arranged in order of addition.

screwed up PR ;\

submitted a package but didn't click the final 'submit PR' button - so it doesn't show up in the PR list, but then I tried to submit a second one - but that failed because the yml file didn't match the package name ;{

https://github.com/openupm/openupm/runs/412023819

I think this might be related to the issue I had before submitted packages - maybe I haven't been fully submitting them properly and they get stuck in this limbo land where the file has been created by the PR hasn't been fully submitted?

Trouble with scoped registries

Bug report

Bug category

  • Website: issues related to browse or discover packages.
  • Pipelines: issues related to publish or manage a package.
  • Registry: issues related to the registry server.
  • Unity Editor: issues related to how OpenUPM works with the Unity Editor.
  • Documentation
  • Others

Steps to reproduce

  1. Add open upm as a registry to the Unity Editor
  "scopedRegistries": [
    {
      "name": "Open UPM",
      "url": "https://package.openupm.com",
      "scopes": [
        "com.openupm"
      ]
    }
  ],

image

  1. Add an additional scope for com.halodi
  2. Open the Package Manager window and select My Registries from the dropdown

image

the halodi packages don't show up under the same registry.

What is expected?

Packages show up under the same registry

What is actually happening?

Packages show up under different registries

Other relevant information

Tested using Unity 2019.4.12f1

'GET /-/all' does not return all packages

curl -L "https://package.openupm.com/-/all" > tmp && jq 'keys | sort | unique' tmp > packages1
curl -L "https://package.openupm.com/-/all" > tmp && jq 'keys | sort | unique' tmp > packages2
diff packages1 packages2

packages1 and packages2 are not same.

How can I get all package names?

Feature question: tools to open issues on the author's repository

Create tools or optimize the workflow to make it easier for package hunters to open issues on the author's repository to start a conversation.

Common reasons caused a package not available to use

  1. The repository has no Git tag or is lacking valid Git tags. To solve it, ask the author to create Git tags.
  2. The repository has valid Git tags but failed to build because of lacking package.json.
    • It could be caused by missing a Git tag after the upm convert. So this equals to case 1.
    • It could be caused by the upm convert not merged back to the master branch. To solve it, ask the author to either merge upm back to the master branch, or tag upm/x.y.z from the upm branch.
  3. The repository has version conflicted releases.
  4. The repository has custom build script, such as DLL generation. The build is succeeded but failed to import. To solve it, use CI to create the upm branch with the custom build script. Then create Git tags from the upm branch.
  5. The repository has Git dependencies. To solve it, add all Git repositories to the OpenUPM branch, then ask the author to move to regular dependencies.

Don't open links in a new tab

That should be a user choice. Don't modify normal link behaviour.

You're dealing with a tech-savvy audience. They know how to open a link in a new tab if they choose to. Changing standard behaviour just means I've got to go back and close the first window if I didn't want to open in a new tab.

https://medium.com/the-metric/links-should-open-in-the-same-window-447da3ae59ba

https://www.sitepoint.com/beware-opening-links-new-window/

https://ux.stackexchange.com/questions/31579/when-if-ever-should-links-be-opened-in-a-new-window

Improve invalid tags in the package detail page

Invalid tags currently show all tags that been filtered out by our build pipelines. For example

  • non-semver tag
  • tags not matching tag prefix
  • tags matching tag ignore regular expression

The later two are by intention, hence should be not considered as warnings.

Solution: only show non-semver tags.

Unity Package Manager Error

image
When I open project at home. An error alert will show up. My ISP is China Mobile. But when I open the same project in the office (ISP is China Telecom), everything is fine. So I think it's a network issue. PS: using SSR as proxy client to open project can not solve this issue. (Maybe some settings are wrong? Please tell me if you know)

feat: pending package

Packages without a release are in the pending state.

  • Don't feature pending packages on the home page.
  • Don't feature pending packages in the RSS feed.
  • Add sort by package add time option to the package list page.
  • When sort by package update time, pending packages will be at the bottom.

Colored Syntax Highlghing in Readme code blocks

Really small feature, but it would be nice to have.

Some packages write their API usage in their Readme files in code blocks. Some syntax highlighting on the website might make this a bit easier to read.

Middle mouse click scroll doesn't work

Hey there,
Trying to use the middle mouse button to click and drag up or down to scroll doesn't seem to be working. I want to say it used to work before, but to be honest, now I can't remember, lol. I am pretty sure that if it wasn't working before, I would have noticed it sooner as I use it quite frequently, especially on pages with long readme's and whatnot. Normally it's not a huge deal, but the normal up and down scroll in general feels.. weird? Almost like it's just a tiny bit slower than a normal page on any other site for some reason. Perhaps it's just me?

Thanks,
-MH

TypeError: Cannot read property '$scopedSlots' of undefined

https://openupm.com/packages/com.earthshaping.third-person-controller/

app.f5c6da59.js:293 TypeError: Cannot read property '$scopedSlots' of undefined
    at app.f5c6da59.js:293
    at prepatch (app.f5c6da59.js:293)
    at A (app.f5c6da59.js:293)
    at app.f5c6da59.js:293
    at A (app.f5c6da59.js:293)
    at o.__patch__ (app.f5c6da59.js:293)
    at o.e._update (app.f5c6da59.js:293)
    at o.r (app.f5c6da59.js:293)
    at ha.get (app.f5c6da59.js:293)
    at ha.run (app.f5c6da59.js:293)

It only happens when entering the page via the URL directly, but works fine when if you visit the homepage first, then search the package via the search input.

Similar issues are reported by other users:

Javyer: I found the problem! I deleted all my data for the website and refresh and it works. It seems the cache was corrupted.

Further investigation is needed.

Version conflict

Hi @favoyang, I had just increased this package version to 1.2.0 about 15 hours ago. This is a new repo so there is no way a pre-existing "1.2.0", I don't know how it could be conflicted.

Need to re-submit an existing package with new name

It's my bad when I submitted this package with the author identity of the previous fork (which is redbluegames) rather than my own identity. I also defined the asmdef with their identity too. Seeing that they are updating their fork, I'm afraid there might be a conflict between us if they want to submit their fork to OpenUPM in the future. So I want to change the manifest and asmdef, and the package name of my fork. Breaking changes are unfortunate but this must be done before too late.

Delete all com.kirbyrawr packages

Hi there i tried to use openupm but sadly it was too tedious to manage, can you please remove the packages with the scope 'com.kirbyrawr' so that way the users dont download something they dont know, thanks and apologies.

How to update package page?

This package page is missing some info, I thought it could be updated by updating README.md and releasing a new version of the package. But it doesn't seem to work that way.

How long for a release to be available?

Hi, I've released the version 1.0.4 for this package several hours ago but there isn't any sign of it being available. And I just wonder if those releases are deployed automatically or manually?

Delete version when the tag is deleted

I needed to create other tags, however, the build of the previous version is still in openupm page, is there any way i can remove that version? Thanks.

An unintended directory "Samples" was included

I have released the package with upm branch (default) as a git-based url.
Therefore, I want to register the package, based on upm branch as well.

For example: SoftMaskForUGUI

upm branch (release branch)

Samples directory does not exist.
Samples~ directory exists.

https://github.com/mob-sakai/SoftMaskForUGUI





The package contents in OpenUPM

Samples~ directory does not exist.
Samples directory exist.

https://package.openupm.com:443/com.coffee.softmask-for-ugui/-/com.coffee.softmask-for-ugui-1.0.0-preview.9.tgz

image





develop and master branches (develop branch)

Samples~ directory does not exist.
Samples directory exists.
Samples.meta file exists.
.gitignore, .npmignore and .releaserc files exist.

https://github.com/mob-sakai/SoftMaskForUGUI/tree/develop/Packages/SoftMaskForUGUI

image

Monorepo problems

I added three packages to OpenUPM from my ReeseUnityDemos monorepo:

I probably added these packages incorrectly, but it seems like none of them can retrieve their package-specific data. Each has its own README in the same directory as its package.json file, but instead the project README is used. Each package has its own subtree branch split and tagged with ubump, but those branches don't seem to be recognized aside from determining where the package.json file is initially upon adding a given package.

Also, their tags/versions aren't being read correctly, despite my having set up the tag prefix as documented.

@favoyang are there some changes I need to make, or is this stuff you need to look at on your end? I also noticed that the package description isn't initialized from the package.json file, at least not in my case.

Readme is taken from Github repo root, not the package root

If a github repository has multiple packages in it, the readme will be taken from the github root, not from the path the package.json is in.

The tool I'm working on, halodi-unity-package-creator, allows multiple packages in a single Unity project in the Packages/ folder and has some magic to copy the samples from the Assets folder to the package folder on release.

[Request] Allow sorting by "Recently Updated" of non-"Ready to Use" packages

Hey there,
Absolutely love the tool. It has helped me find many great packages that I might not have otherwise known about. That said, a good few of the ones I have found have also come from the list of packages that have not yet been added to the official OpenUPM registry but that show up under the now non-"Ready to Use" list. It would be great if that list were also able to be sorted by "Recently Updated", probably based on the repos last commit time, I would expect.

Thanks,
-MH

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.