{"id":51864253,"url":"https://github.com/ntk148v/leanpack.nvim","last_synced_at":"2026-07-24T13:30:46.897Z","repository":{"id":351699705,"uuid":"1202686965","full_name":"ntk148v/leanpack.nvim","owner":"ntk148v","description":"Yet another Neovim plugin manager, build on top of vim.pack (Neovim \u003e= 0.12.0)","archived":false,"fork":false,"pushed_at":"2026-06-26T10:17:03.000Z","size":3050,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-26T12:09:23.611Z","etag":null,"topics":["neovim","neovim-lua-plugin","neovim-package-manger","neovim-plugin","neovim-plugin-lua","nvim","vim","vim-pack"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ntk148v.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"ntk148v","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2026-04-06T09:39:48.000Z","updated_at":"2026-06-26T10:17:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ntk148v/leanpack.nvim","commit_stats":null,"previous_names":["ntk148v/leanpack.nvim"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ntk148v/leanpack.nvim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ntk148v%2Fleanpack.nvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ntk148v%2Fleanpack.nvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ntk148v%2Fleanpack.nvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ntk148v%2Fleanpack.nvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ntk148v","download_url":"https://codeload.github.com/ntk148v/leanpack.nvim/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ntk148v%2Fleanpack.nvim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35844578,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-24T02:00:07.870Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["neovim","neovim-lua-plugin","neovim-package-manger","neovim-plugin","neovim-plugin-lua","nvim","vim","vim-pack"],"created_at":"2026-07-24T13:30:46.203Z","updated_at":"2026-07-24T13:30:46.892Z","avatar_url":"https://github.com/ntk148v.png","language":"Lua","funding_links":["https://github.com/sponsors/ntk148v"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cp\u003e\u003cimg src=\"./assets/logo.png\" width=\"20%\" height=\"20%\" alt=\"leanpack.nvim logo\"\u003e\u003c/p\u003e\n  \u003ch1\u003eLeanpack.nvim\u003c/h1\u003e\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/ntk148v/leanpack.nvim/releases/latest\"\u003e\n    \u003cimg alt=\"Latest release\" src=\"https://img.shields.io/github/v/release/ntk148v/leanpack.nvim?style=for-the-badge\u0026logo=starship\u0026color=C9CBFF\u0026logoColor=D9E0EE\u0026labelColor=302D41\u0026include_prerelease\u0026sort=semver\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/ntk148v/leanpack.nvim/pulse\"\u003e\n    \u003cimg alt=\"Last commit\" src=\"https://img.shields.io/github/last-commit/ntk148v/leanpack.nvim?style=for-the-badge\u0026logo=starship\u0026color=8bd5ca\u0026logoColor=D9E0EE\u0026labelColor=302D41\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/ntk148v/leanpack.nvim/blob/main/LICENSE\"\u003e\n    \u003cimg alt=\"License\" src=\"https://img.shields.io/github/license/ntk148v/leanpack.nvim?style=for-the-badge\u0026logo=starship\u0026color=ee999f\u0026logoColor=D9E0EE\u0026labelColor=302D41\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/ntk148v/leanpack.nvim/stargazers\"\u003e\n    \u003cimg alt=\"Stars\" src=\"https://img.shields.io/github/stars/ntk148v/leanpack.nvim?style=for-the-badge\u0026logo=starship\u0026color=c69ff5\u0026logoColor=D9E0EE\u0026labelColor=302D41\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/ntk148v/leanpack.nvim/issues\"\u003e\n    \u003cimg alt=\"Issues\" src=\"https://img.shields.io/github/issues/ntk148v/leanpack.nvim?style=for-the-badge\u0026logo=bilibili\u0026color=F5E0DC\u0026logoColor=D9E0EE\u0026labelColor=302D41\" /\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\nA layer on top of Neovim's native `vim.pack`, adding support for lazy-loading and the widely adopted lazy.nvim-like declarative spec.\n\n**Requirements:** Neovim 0.12+\n\n## Documentation\n\n| Document                                   | Description                             |\n| ------------------------------------------ | --------------------------------------- |\n| [Getting Started](docs/getting-started.md) | Quick start guide                       |\n| [Installation](docs/installation.md)       | Detailed installation options           |\n| [Configuration](docs/configuration.md)     | All configuration options               |\n| [Plugin Spec](docs/spec.md)                | Complete plugin specification reference |\n| [Lazy Loading](docs/lazy-loading.md)       | Lazy loading triggers and patterns      |\n| [Commands](docs/commands.md)               | CLI commands reference                  |\n| [API](docs/api.md)                         | Lua API reference                       |\n| [Migrating](docs/migrating.md)             | Migration guide from lazy.nvim          |\n\n## Quick Start\n\n### Bootstrap\n\nAdd this to the top of your `init.lua`:\n\n```lua\n-- Setup leanpack.nvim plugin manager\nvim.pack.add({ { src = \"https://github.com/ntk148v/leanpack.nvim\" } })\n\n-- Setup leanpack with import from lua/plugins/\nrequire(\"leanpack\").setup({\n    { import = \"plugins\" },\n    defaults = {\n        lazy = true,\n    },\n    performance = {\n        vim_loader = true,\n        rtp_prune = true,\n    },\n})\n```\n\n### Create Specs\n\nCreate your plugin specs in `lua/plugins/`:\n\n```lua\n-- lua/plugins/treesitter.lua\nreturn {\n  'nvim-treesitter/nvim-treesitter',\n  build = ':TSUpdate',\n  config = function()\n    require('nvim-treesitter.configs').setup({ highlight = { enable = true } })\n  end,\n}\n```\n\n## Why leanpack.nvim over bare `vim.pack`?\n\n`vim.pack` (Neovim 0.12+) is a solid native foundation — leanpack builds on top of it, not around it. Here's what you get:\n\n| Feature                        | bare `vim.pack`                                                 | leanpack.nvim                                                                     |\n| ------------------------------ | --------------------------------------------------------------- | --------------------------------------------------------------------------------- |\n| **Spec format**                | Raw `vim.pack.add()` calls                                      | lazy.nvim-compatible declarative spec (`'user/repo'`, `opts = {}`, `config = fn`) |\n| **Lazy-loading**               | Manual — write your own VimEnter queues and autocmds per plugin | Built-in triggers: `event`, `cmd`, `keys`, `ft`, `module` (require-based)         |\n| **Dependencies**               | Manual ordering                                                 | Automatic resolution with topological sort                                        |\n| **Build hooks**                | None                                                            | `build = ':TSUpdate'` or `build = function() ... end`                             |\n| **Plugin management UI**       | None                                                            | `:Leanpack` floating window with filtering, load/update/delete                    |\n| **Install/Update**             | Manual `vim.pack.add()` + restart                               | Background jobs via headless Neovim, no restart needed                            |\n| **ftdetect sourcing**          | Manual                                                          | Automatic for lazy-loaded plugins                                                 |\n| **Config from multiple files** | Manual `require` chains                                         | `{ import = \"plugins\" }` auto-discovers `lua/plugins/*.lua`                       |\n\nIn short: if you're happy writing ~250 lines of helper code (lazyload queues, deep merge, local dev support) around `vim.pack` for every config, you don't need leanpack. If you want a lazy.nvim-style declarative experience on top of native `vim.pack`, that's exactly what this is.\n\n## Features\n\n- **Native Core**: Builds on top of `vim.pack` — no custom package management, no fork.\n- **Lazy-loading**: Load plugins on demand via events, commands, keymaps, filetypes, or `require()`.\n- **lazy.nvim Compatible**: Uses the same declarative spec format you already know.\n- **Dependency Management**: Automatic resolution and topological loading.\n- **Build Hooks**: Run commands or Lua functions on install/update.\n- **Performance**: Built-in `vim.loader` integration and RTP pruning.\n\n## Commands\n\n- `:Leanpack` - Open the UI (supports `/` filtering)\n- `:Leanpack sync` - Sync all plugins (update + clean)\n- `:Leanpack update` - Update all or specific plugin\n- `:Leanpack clean` - Remove unused plugins\n- `:Leanpack build!` - Run all build hooks\n- `:Leanpack load!` - Load all pending plugins\n\nSee [Commands](docs/commands.md) for details.\n\n## Configuration\n\n```lua\nrequire('leanpack').setup({\n  defaults = {\n    confirm = true,\n  },\n  sync = true, -- Auto-remove plugins no longer in config on startup\n  performance = {\n    vim_loader = true,\n    rtp_prune = true, -- Disable built-in plugins for faster startup\n  },\n})\n```\n\nSee [Configuration](docs/configuration.md) for more options.\n\n## Migrating from lazy.nvim\n\nMost of your lazy.nvim plugin specs will work as-is with leanpack. Key differences are documented in [Migrating](docs/migrating.md).\n\n- **version pinning**: leanpack's `version` field supports both semantic versioning (e.g., `1.*`) and literal git references (branch/tag/commit).\n- **dev mode**: Use `dev = true` with `dir = '~/projects/plugin-name'` for local development\n- **optional**: Use `optional = true` for dependencies that won't block plugin loading\n- **module trigger**: leanpack automatically supports require()-based lazy loading matching the auto-detected or explicit `main` module names.\n\n## Acknowledgements\n\n- Inspired by [lazy.nvim](https://github.com/folke/lazy.nvim) for the declarative spec design\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fntk148v%2Fleanpack.nvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fntk148v%2Fleanpack.nvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fntk148v%2Fleanpack.nvim/lists"}