lazy.nvim/docs/packages.md

43 lines
1.5 KiB
Markdown

---
sidebar_position: 4
---
# 📦 Packages
**lazy.nvim** supports three ways for plugins to define their dependencies and configuration.
- **Lazy**: `lazy.lua` file
- **Rockspec**: [luarocks](https://luarocks.org/) `*-scm-1.rockspec` [file](https://github.com/luarocks/luarocks/wiki/Rockspec-format)
- **Packspec**: `pkg.json` (experimental, since the [format](https://github.com/neovim/packspec/issues/41) is not quite there yet)
You can enable/disable package sources with [`config.pkg.sources`](/configuration).
The order of sources is important, as the first source that finds a package will be used.
:::info
Package specs are always loaded in the scope of the plugin (using [specs](/spec#advanced)),
so that when the plugin is disabled, none of the specs are loaded.
:::
## Lazy
Using a `lazy.lua` file is the recommended way to define your plugin dependencies and configuration.
Syntax is the same as any plugin spec.
## Rockspec
When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically build the rock and its dependencies.
A **rockspec** will only be used if one of the following is true:
- the package does not have a `/lua` directory
- the package has a complex build step
- the package has dependencies (excluding `lua`)
## Packspec
Supports the [pkg.json](https://github.com/nvim-lua/nvim-package-specification/issues/41) format,
with a lazy extension in `lazy`.
`lazy` can contain any valid lazy spec fields. They will be added to the plugin's spec.