How did I deploy local package repositories?
Language |
Package Manager |
Local Package Repository |
C# |
Nuget |
BaGet |
Node.js |
NPM |
npm Enterprise, Verdaccio |
PHP |
Composer |
Satis |
Python |
pip |
pypiserver |
Ruby |
RubyGems, bundler |
Gems Server, Gem in a box, Gemirro |
BaGet for C#
BaGet
is neither the official NuGet server nor have posted official release version, but it is built by a NuGet Server Developer and it is stable enough at the time of posting.
Verdaccio for Node.js
Verdaccio
seems the most preferred local npm registry for those who don’t want to talk to npm’s Sales Rep. Here’s a link to the history of Verdaccio
according to it’s current maintainer.
Satis for PHP
Satis
is the Composer repository generator. More information on Satis GitHub page.
Composer documentation has information on how to add private packages.
PyPiServer for Python
pypiserver
is not the official software used by PyPi, that would be Warehouse. But Warehouse does not support being used as a local package manager.
Ruby Gems for Ruby
I am not too familiar with Ruby at the time of writing, but it seems RubyGems
has a built in, official, repository while Gem in a box
and Gemirro
are the more feature rich options. RubyGems’ tutorial even showcase Gem in a box
and Gemirro
.
Docker
Doker
has its own registry available for everyone.
Java
/* Intentionally left blank. */
Why?
- Faster download of required packages. This is important for environments that rely heavily on CI/CD. This will lessen time and possibly reduce energy consumption.
- Internal packages are built and shared coherently. No more worrying on how to deploy someone else’s code; no more guessing which of your colleague’s branch is latest; or how to revert to a previous version if a shared project’s latest build breaks your code. Most of the package managers mentioned above will let you and your colleagues build and publish your modules with appropriate versioning.
- Only shared within your organization. Very important if you don’t necessarily intend to publish your code for the world to see.
- Staging environment for actual projects to be shared.