# wbthomason/packer.nvim

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/wbthomason-packer-nvim).**

8,093 stars · 265 forks · Lua · MIT

## Links

- GitHub: https://github.com/wbthomason/packer.nvim
- awesome-repositories: https://awesome-repositories.com/repository/wbthomason-packer-nvim.md

## Topics

`lua` `neovim` `neovim-plugin` `nvim` `package-manager` `packer` `plugin-manager`

## Description

packer.nvim is a declarative plugin manager for Neovim that uses the editor's native package system to install, update, and remove plugins. It functions as a lazy loading orchestrator, a Lua package manager for Luarocks dependencies, and an environment snapshot tool for saving and restoring plugin states to enable version rollbacks.

The project optimizes editor startup by compiling loading rules and deferring plugin initialization until specific triggers, such as commands or filetypes, occur. It ensures environment stability through dependency-graph resolution and loading order control.

The manager further supports plugin lifecycle automation through custom installer definitions and installation hooks. It provides observability into startup performance via plugin load time profiling and handles external language packages through Luarocks integration.

## Tags

### Development Tools & Productivity

- [Neovim Plugin Managers](https://awesome-repositories.com/f/development-tools-productivity/neovim-plugin-managers.md) — Provides a declarative system for installing, updating, and removing Neovim plugins using the editor's native package system.
- [Editor Package Integration](https://awesome-repositories.com/f/development-tools-productivity/native-package-managers/editor-package-integration.md) — Leverages Neovim's native package system to handle the runtime loading of external Lua modules.
- [Package Managers](https://awesome-repositories.com/f/development-tools-productivity/package-managers.md) — Integrates with Luarocks to manage and install external Lua language packages as dependencies. ([source](https://github.com/wbthomason/packer.nvim#readme))
- [Plugin Dependency Management](https://awesome-repositories.com/f/development-tools-productivity/plugin-dependency-management.md) — Ensures a stable environment by resolving dependency graphs and loading required plugins before their dependents. ([source](https://github.com/wbthomason/packer.nvim#readme))
- [Editor Startup Optimization](https://awesome-repositories.com/f/development-tools-productivity/shell-startup-optimizers/editor-startup-optimization.md) — Optimizes editor boot time by compiling loading rules and deferring plugin initialization.
- [Optimized Loading Sequences](https://awesome-repositories.com/f/development-tools-productivity/compilers-toolchains/compilers/script-compilation/compiled-script-loadings/optimized-loading-sequences.md) — Generates static Lua files with optimized loading sequences to accelerate editor startup by bypassing manager logic.
- [Installation Hooks](https://awesome-repositories.com/f/development-tools-productivity/installation-hooks.md) — Provides installation hooks to execute custom shell commands or functions after plugins are installed or updated. ([source](https://github.com/wbthomason/packer.nvim/blob/master/README.md))
- [Language-Specific Package Managers](https://awesome-repositories.com/f/development-tools-productivity/installed-package-management/language-specific-package-managers.md) — Integrates with Luarocks to manage non-editor specific Lua language packages as dependencies.
- [Package Managers](https://awesome-repositories.com/f/development-tools-productivity/neovim-plugins/package-managers.md) — Acts as a package manager for Luarocks and other dependencies within the Neovim environment.
- [Package Dependency Managers](https://awesome-repositories.com/f/development-tools-productivity/package-dependency-managers.md) — Manages external Lua language packages via Luarocks as project dependencies.
- [Custom Specification Handlers](https://awesome-repositories.com/f/development-tools-productivity/plugin-lifecycle-management/plugin-lifecycle-management/custom-specification-handlers.md) — Implements custom handlers to define how specific configuration keys in the plugin specification are processed. ([source](https://github.com/wbthomason/packer.nvim#readme))

### DevOps & Infrastructure

- [Plugin Package Managers](https://awesome-repositories.com/f/devops-infrastructure/package-management/plugin-package-managers.md) — Provides a declarative system for installing, updating, and removing plugins as individual modules using the editor's native package system. ([source](https://github.com/wbthomason/packer.nvim#readme))

### Software Engineering & Architecture

- [Declarative API Specifications](https://awesome-repositories.com/f/software-engineering-architecture/declarative-api-specifications.md) — Uses a declarative specification model via Lua tables to define the desired state of plugins.
- [Dependency Graph Resolution](https://awesome-repositories.com/f/software-engineering-architecture/dependency-graph-resolution.md) — Analyzes plugin relationships through dependency-graph resolution to ensure correct installation and loading order.
- [Plugin Lifecycle Managers](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/extensibility/third-party-plugins/plugin-marketplaces/marketplace-plugin-installers/plugin-lifecycle-managers.md) — Automates the plugin lifecycle including installation, removal, and dependency-based loading order.
- [Lazy Loading](https://awesome-repositories.com/f/software-engineering-architecture/plugin-architectures/programmatic-plugin-loading/lazy-loading.md) — Implements event-triggered lazy loading to defer plugin initialization until specific commands or filetypes are detected.
- [Configuration Version Snapshots](https://awesome-repositories.com/f/software-engineering-architecture/configuration-state-snapshots/configuration-version-snapshots.md) — Creates immutable snapshots of plugin versions to allow for consistent environment reproduction and rollbacks.
- [Custom Installers](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/extensibility/plugin-architectures/plugin-installation-utilities/plugin-installation-and-management/custom-installers.md) — Provides the ability to define custom installer functions to handle non-standard plugin installation and update requirements. ([source](https://github.com/wbthomason/packer.nvim#readme))
- [Loading Sequence Control](https://awesome-repositories.com/f/software-engineering-architecture/plugin-architectures/programmatic-plugin-loading/loading-sequence-control.md) — Controls the sequence of plugin loading to ensure required components are initialized before dependent ones. ([source](https://github.com/wbthomason/packer.nvim#readme))
- [Environment Snapshots](https://awesome-repositories.com/f/software-engineering-architecture/plugin-version-management/state-restoration/environment-snapshots.md) — Saves and restores plugin state snapshots to allow for reliable environment rollbacks.
- [State Snapshotting](https://awesome-repositories.com/f/software-engineering-architecture/plugin-version-management/state-snapshotting.md) — Records specific versions of installed plugins to enable precise environment reproduction and state restoration.

### Programming Languages & Runtimes

- [Bytecode Compilation](https://awesome-repositories.com/f/programming-languages-runtimes/bytecode-compilation.md) — Transforms loading rules into bytecode to accelerate the editor's startup sequence. ([source](https://github.com/wbthomason/packer.nvim/blob/master/README.md))
