A layer on top of Neovim's native vim.pack, adding support for lazy-loading and the widely adopted lazy.nvim-like declarative spec.
Requirements: Neovim 0.12+
| Document | Description |
|---|---|
| Getting Started | Quick start guide |
| Installation | Detailed installation options |
| Configuration | All configuration options |
| Plugin Spec | Complete plugin specification reference |
| Lazy Loading | Lazy loading triggers and patterns |
| Commands | CLI commands reference |
| API | Lua API reference |
| Migrating | Migration guide from lazy.nvim |
Add this to the top of your init.lua:
-- Setup leanpack.nvim plugin manager
vim.pack.add({ { src = "https://github.com/ntk148v/leanpack.nvim" } })
-- Setup leanpack with import from lua/plugins/
require("leanpack").setup({
{ import = "plugins" },
defaults = {
lazy = true,
},
performance = {
vim_loader = true,
rtp_prune = true,
},
})Create your plugin specs in lua/plugins/:
-- lua/plugins/treesitter.lua
return {
'nvim-treesitter/nvim-treesitter',
build = ':TSUpdate',
config = function()
require('nvim-treesitter.configs').setup({ highlight = { enable = true } })
end,
}- Native Core: Completely leverages the native
vim.packinfrastructure (Neovim 0.12+). - Lazy-loading: Load plugins on demand via events, commands, keymaps, or filetypes.
- lazy.nvim Compatible: Uses the same declarative spec format you know.
- Dependency Management: Automatic resolution and topological loading.
- Build Hooks: Run commands or Lua functions on install/update.
- Performance: Built-in
vim.loaderintegration and RTP pruning.
:Leanpack- Open the UI (supports/filtering):Leanpack sync- Sync all plugins (update + clean):Leanpack update- Update all or specific plugin:Leanpack clean- Remove unused plugins:Leanpack build!- Run all build hooks:Leanpack load!- Load all pending plugins:Leanpack profile- View detailed startup timing profile
See Commands for details.
require('leanpack').setup({
defaults = {
confirm = true,
},
performance = {
vim_loader = true,
rtp_prune = true, -- Disable built-in plugins for faster startup
},
})See Configuration for more options.
Most of your lazy.nvim plugin specs will work as-is with leanpack. Key differences are documented in Migrating.
- version pinning: lazy.nvim's
versionfield maps to leanpack'ssem_version - dev mode: Use
dev = truewithdir = '~/projects/plugin-name'for local development - optional: Use
optional = truefor dependencies that won't block plugin loading - module trigger: leanpack automatically supports require()-based lazy loading matching the auto-detected or explicit
mainmodule names.
- Inspired by lazy.nvim for the declarative spec design
