1.9 KiB
Iconify Contributing Guide
Thank you for considering contributing to Iconify!
This guide should help you understand how repository is setup.
Repository
This repository is a monorepo using pnpm
workspaces.
Why pnpm
? Because, unlike npm
, it can handle multiple versions of the same dependency in one monorepo, which is required when using multiple versions of the same framework, such as Vue 2 and Vue 3.
Installation, build and tests
To install dependencies in all packages, run
pnpm install
This will install all dependencies and create symbolic links to packages.
To build everything, run pnpm run build
(this excludes demo packages).
To run unit tests, run pnpm run test
(this excludes demo packages).
Working with specific package
You can run any commands on any package from that package's directory.
For example, to build only @iconify/utils
package, you can either:
- Change directory to
packages/utils
- Run
pnpm build
or you can use pnpm filters from root directory:
pnpm --filter @iconify/utils run build
or
pnpm --filter ./packages/utils run build
NI
Consider installing NI, it makes it easy to work with any repository regardless of what package manager it uses.
Instead of figuring out if you should run npm install
or pnpm install
or yarn install
, just run ni
and it will execute current package manager, nr build
to build, nr test
to run tests test.
It is automatically installed if you are using Dev Container.
Branches
There are several main branches:
main
contains stable version of packages.next
, if exists, contains next major version.
There are also various archive and experimental branches.
Dependencies
Please avoid adding new dependencies.
If a feature requires new dependency, first check if dependency you want to add is actively maintained and doesn't have many dependencies.