Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vpkg-project/vpkg
An alternative package manager for V.
https://github.com/vpkg-project/vpkg
package-manager registry-server registry-vpkg v vlang vpkg vpkg-registry vpm
Last synced: 3 months ago
JSON representation
An alternative package manager for V.
- Host: GitHub
- URL: https://github.com/vpkg-project/vpkg
- Owner: vpkg-project
- License: mit
- Created: 2019-07-02T14:10:16.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-09-20T03:24:44.000Z (about 3 years ago)
- Last Synced: 2024-07-18T15:29:26.146Z (4 months ago)
- Topics: package-manager, registry-server, registry-vpkg, v, vlang, vpkg, vpkg-registry, vpm
- Language: V
- Homepage: https://vpkg-project.github.io
- Size: 241 KB
- Stars: 115
- Watchers: 4
- Forks: 10
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# vpkg ![Latest version][githubBadge] ![Build status][workflowBadge]
vpkg is an alternative package manager written on [V](https://github.com/vlang/v) for V.## Features
Bringing the best of dependency management on V.
- **Decentralized.** Download and use packages from other sources aside from VPM and the vpkg registry.
- **Easy to use.** Set-up, use, and master the commands of vpkg CLI within minutes.
- **Fast.** Runs perfectly on your potato PC up to the fastest supercomputers.
- **Interoperable.** Supports `v.mod`, and `.vpm.json` for reading package manifests and managing dependencies.
- **Light.** Weighs at less than 300kb. Perfect with devices running on tight storage or in low network conditions.
- **Reliable.** Uses a lockfile mechanism to ensure that all your dependencies work across all of your machines.## Installation
### Pre-built binaries
Install vpkg by downloading the pre-built binaries available found below the release notes of the [latest release](https://github.com/vpkg-project/vpkg/releases).### Building from Source
For those platforms which aren't included in the available pre-built binaries or would like to compile it by yourself, just clone this repository and build directly with the V compiler with the `-prod` flag.
```
git clone https://github.com/vpkg-project/vpkg.git
cd vpkg/
v -prod .
```## Running your own registry
Use the provided [registry server template](https://github.com/vpkg-project/registry-template) to start running your own registry server. Just modify `registry.json` and use any HTTP or web library of your choice to get up and running.## Commands
```
Usage: vpkg [ARGS...] [options]COMMANDS
get [packages] Fetch and installs packages from the registry or the git repo.
help Show this help message.
info Show project's package information.
init Create a package manifest file into the current directory. Defaults to "vpkg".
install Read the package manifest file and installs the necessary packages.
link Symlink current module/package to ".vmodules" folder.
migrate manifest Migrate manifest file to a specified format.
release Release a new version of the module.
remove [packages] Remove packages
test Test the current lib/app.
update Update the packages.
unlink Remove the symlink of current module/package from ".vmodules" folder.
version Show the version of this program.OPTIONS
--files [file1,file2] Specifiy other locations of test files (For "test" command)
--force Force download the packages.
--format [vpkg|vmod] Specifiy file format used to init manifest. (For "migrate" and "init" commands)
--global, -g Install the modules/packages into the ".vmodules" folder.
--inc [major|minor|patch] Increment the selected version of the module/package. (For "release" command)
--state [state_name] Indicate the state of the release (alpha, beta, fix) (For "release" command)
```## vpkg API
Use vpkg as a module that you can use to integrate into your own programs. Create your own VSH scripts, automated installation, and more without needing a separate CLI program.```v
// install.v
module mainimport vpkg.api as vpkg // or import nedpals.vpkg.api as vpkg
fn main() {
mut inst := vpkg.new('.')
inst.run(['install'])os.system('rm ${os.executable()}')
}```
```sh
$ v run install.v
Installing packages
Fetching nedpals.vargsvargs@fc193513733c2ed99467f5d903a824ea9087ed52
1 package was installed successfully.
```## Roadmap
- ability to publish packages into VPM and the vpkg registry.
- options for debugging output
- error handling for better bug tracking and report
- subversion/svn support## Copyright
(C) 2019 [Ned Palacios](https://github.com/nedpals)[githubBadge]: https://img.shields.io/github/v/release/vpkg-project/vpkg?include_prereleases
[workflowBadge]: https://img.shields.io/github/workflow/status/vpkg-project/vpkg/CI