Skip to content

Interactive package management UI for Neovim. Browse, search, install and manage packages with a beautiful multi-panel interface

License

Notifications You must be signed in to change notification settings

MonsieurTib/package-ui.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

15 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

package-ui.nvim

A modern, intuitive package manager UI for Neovim that provides a unified interface for managing dependencies across different ecosystems.

Supports npm (Node.js), Cargo (Rust), RubyGems (Ruby), Mix (Elixir), Composer (PHP), Go modules, and Python package managers (pip, Poetry, Pipenv) through an elegant multi-panel interface with real-time search and version management.

Manage all your project dependencies directly within Neovim. Browse installed packages, discover new ones, and handle version management without switching contexts.

✨ Features

  • πŸš€ Multi-ecosystem support: Supports npm (Node.js), Cargo (Rust), RubyGems (Ruby), Mix (Elixir), Composer (PHP), Go modules, and Python package managers (pip, Poetry, Pipenv)
  • πŸ” Real-time search: Search packages across registries with instant results
  • πŸ“¦ Package management: Install, uninstall, and update packages with ease
  • πŸ“Š Detailed information: View comprehensive package details, versions, and dependencies
  • ⌨️ Keyboard-driven: Full keyboard navigation with intuitive shortcuts
  • 🎨 Beautiful UI: Clean, modern floating window interface
  • πŸ”„ Update notifications: See which installed packages have available updates
  • πŸ“‹ Version management: Browse and install specific package versions

πŸ“Έ Interface Overview

Npm (Javascript)

NPM

Cargo (Rust)

Cargo

RubyGems (Ruby)

Gem

Mix (Elixir)

Elixir

Pip (Python)

python

The UI consists of five main components:

  • Search: Find packages across registries
  • Installed: View currently installed packages with update indicators
  • Available: Browse search results and available packages
  • Versions: Explore different versions of selected packages
  • Details: Comprehensive package information including dependencies

πŸ“‹ Requirements

  • Neovim >= 0.7.0
  • curl (for API requests)
  • For NPM projects: npm command available in PATH
  • For Cargo projects: cargo command available in PATH
  • For PHP projects: composer command available in PATH
  • For Go projects: go command available in PATH
  • For Python projects: pip, poetry, or pipenv commands available in PATH

πŸ“¦ Installation

Using lazy.nvim

{
  "MonsieurTib/package-ui.nvim",
  config = function()
    require("package-ui").setup()
  end,
}
use {
  "MonsieurTib/package-ui.nvim",
  config = function()
    require("package-ui").setup()
  end,
}

Using vim-plug

Plug 'MonsieurTib/package-ui.nvim'

Then add to your init.lua:

require("package-ui").setup()

πŸš€ Usage

Opening the UI

:PackageUI

Or create a keybinding:

vim.keymap.set("n", "<leader>pu", "<cmd>PackageUI<cr>", { desc = "Open Package UI" })

Navigation

Key Action
Tab / Shift+Tab Navigate between components
j / k Move up/down in lists
Enter Select item / Navigate to versions
i Install package
u Uninstall package

Package Management

  1. Search for packages: Type in the search box to find packages
  2. Install packages: Press Enter to browse versions, then press i to install the selected version
  3. View details: Select any package to see detailed information
  4. Browse versions: Press Enter on a package to see available versions
  5. Uninstall packages: Navigate to an installed package (in the "Installed" section) and press u to remove it from your project
  6. Update packages: Install newer versions of packages that show update indicators

βš™οΈ Configuration

Default Configuration

require("package-ui").setup({
  -- Configuration options will be added here as the plugin evolves
})

πŸ› οΈ Supported Package Managers

NPM (Node.js)

  • Automatically detects package.json files
  • Manages dependencies and devDependencies
  • Supports version ranges and specific versions
  • Shows update notifications for outdated packages

Cargo (Rust)

  • Automatically detects Cargo.toml files
  • Manages dependencies and dev-dependencies
  • Integrates with crates.io registry
  • Supports semantic versioning

Gem (Ruby)

  • Automatically detects Gemfile files
  • Manages gem dependencies from Gemfile and Gemfile.lock
  • Integrates with rubygems.org registry
  • Supports semantic versioning and version constraints

Mix (Elixir)

  • Automatically detects mix.exs files
  • Manages dependencies from mix.exs configuration
  • Integrates with hex.pm registry
  • Supports semantic versioning and version constraints
  • Handles both runtime and development dependencies

Composer (PHP)

  • Automatically detects composer.json files
  • Manages dependencies and dev-dependencies
  • Integrates with packagist.org registry
  • Supports semantic versioning and version constraints
  • Handles both require and require-dev dependencies

Go Modules

  • Automatically detects go.mod files
  • Manages Go module dependencies
  • Integrates with pkg.go.dev and module proxy
  • Supports semantic versioning and version constraints
  • Handles direct and indirect dependencies

Python Package Managers

Pip

  • Automatically detects requirements.txt files
  • Manages Python packages from PyPI
  • Supports version specifications and constraints
  • Handles both runtime and development dependencies

Poetry

  • Automatically detects pyproject.toml files with Poetry configuration
  • Manages dependencies through Poetry's dependency resolver
  • Integrates with PyPI registry
  • Supports dependency groups and development dependencies

Pipenv

  • Automatically detects Pipfile files
  • Manages dependencies through Pipenv's virtual environment system
  • Integrates with PyPI registry
  • Supports both packages and dev-packages sections

🀝 Contributing

Contributions are welcome! Here are some ways you can help:

  1. Report bugs: Create issues for any problems you encounter
  2. Request features: Suggest new package managers or UI improvements
  3. Submit PRs: Fix bugs or implement new features
  4. Documentation: Help improve documentation and examples

Adding New Package Managers

To add support for a new package manager:

  1. Create a new service file in lua/package-ui/services/
  2. Implement the required service interface methods
  3. Add detection logic for the package manager's manifest files
  4. Test thoroughly with real projects

πŸ“„ License

This project is licensed under the MIT License

πŸ™ Acknowledgments

  • Inspired by the need for better package management UX in Neovim
  • Built with the Neovim Lua API
  • Uses public package registry APIs (npmjs.com, crates.io)

Made with ❀️ for the Neovim community

About

Interactive package management UI for Neovim. Browse, search, install and manage packages with a beautiful multi-panel interface

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages