Skip to content

Commit

Permalink
Extending the Contribution.md description with more topics (lucide-ic…
Browse files Browse the repository at this point in the history
…ons#654)

* improve contribution guide

* Add credits

* Add more info contribution.md

* Fix typos

* Update CONTRIBUTING.md
  • Loading branch information
ericfennis authored May 30, 2022
1 parent b92dd45 commit 5a525f2
Show file tree
Hide file tree
Showing 3 changed files with 144 additions and 2 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
.DS_Store
.next
.obsidian
.now
node_modules
dist
Expand Down
137 changes: 135 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,11 @@ Here you can find templates and instructions on how to implement the guidelines
`Instructions`: You can find the [Inkscape Guide](/docs/INKSCAPE_GUIDE.md) and how to set up Inkscape under `/docs/INKSCAPE_GUIDE.md`.

#### Figma

`Template`: None
`Instructions`: You can find the [Figma Guide](/docs/FIGMA_GUIDE.md) and how to set up Figma under `/docs/FIGMA_GUIDE.md`.

#### Submitting Mulitple Icons
#### Submitting Multiple Icons

If you want submit multiple icons, please separate the icons and group them. That makes reviewing the icons easier and keep the thread clean and scoped.
So don't submit multiple icons in one PR that have noting to do with each other.
Expand All @@ -58,6 +59,138 @@ Before creating an icon request, please search to see if someone has requested t

If the icon has not already been requested, [create an issue](https://github.com/lucide-icons/lucide/issues/new?title=Icon%20Request:) with a title of `Icon request: <icon name>` and add as much information as possible.

## Icon Requests from Feather
### Icon Requests from Feather

If you are a designer who wants to contribute to Lucide but you don't know what icons to work on, then have a look at the Requests from Feather. All open, unfinished and valid requests can be found in [Feather Icon Requests](https://github.com/lucide-icons/lucide/issues/119).

## Development

You will need minimum version of [Nodejs 16+](https://nodejs.org)
For packagemanagement you will need [yarn v1](https://yarnpkg.com/getting-started/install).
For flutter package development, you need [Flutter 1.17+](https://docs.flutter.dev/get-started/install).

After cloning the project you need to run:

```sh
yarn # Install dependencies, including the workspace packages
```

### Packages -> Yarn Workspaces

To distribute different packages we use yarn workspaces. Before you start make sure you are familiar with this setup. Read guide here: [yarn workspaces](https://classic.yarnpkg.com/lang/en/docs/workspaces).

The configured directory for workspaces is the [packages](./packages) directory, located in the root directory. There you will find all the current packages from lucide.

> Note: One package is not managed by yarn: **lucide-flutter**
### Generated Code

For icons we use one single source of truth the icons svgs located in the icons directory. To distribute icons to the packages we generate code including: icon files with svg paths, index files with imports, and types files. Depending on the use case other necessary code will be generated.

The commands for generating this code you will read in the next chapter.

### Commonly used scripts

#### Building

The build script includes multiple subcommands to: clean the dist directory, generate icon files, generate types files, and build/transpile code for each build format.

```sh
yarn [package-name] build

#example:

yarn lucide-react build
```

#### Testing

Run unit tests with jest for each package to make sure all the package apis still works as expected.

```sh
yarn [package-name] test

#example:

yarn lucide-vue test
```

Recommended to run the test watcher when making changes.

```sh
yarn [package-name] test:watch

#example:

yarn lucide-preact test:watch
```

### Unit Testing

When adding new features to for example the icon component for a framework. It is required to have this covered with some unit tests.

### Local Testing

To test changes in a local project, you can use `yarn link` or `npm link` to link the package. Before you do this make sure you builded the package first.

```sh
# in packages/lucide-react
yarn link

# in your local project

yarn link lucide-react
```

## Project Structure

Root directories

```sh
lucide
|
├── docs
├── icons
├── packages
├── scripts
└── site
```

### Docs

Detailed documentation about: installation, guides, packages, design guides etc.

### Icons

All the icons of lucide in SVG format. These will be used as source for all the packages and other distributions for the lucide icons.

### packages

Includes all the (npm) packages of lucide.

> Note: One package is not managed by yarn: **lucide-flutter**
### scripts

Includes usefully scripts to automate certain jobs. Big part of the scripts is the template generation, for example it generates icon components for all the packages. These scripts are usually executed from the "scripts" section in the package.json.

### site

The lucide.dev website using [Nextjs](https://nextjs.org).

## Documentation

The documentation files are located in the [docs](./docs) directory. All these markdown files will be loaded in the build of the lucide.dev website.

Feel free to write, adjust or add new markdown files to improve our documentation.

## Support

If you need any help or have problems with you contribution. Please don't hesitate to contact the Lucide Community, you can find us on [Github](https://github.com/lucide-icons/lucide) and [Discord](https://discord.gg/EH6nSts).

## Credits

Thank you to all the people who already contributed to Lucide!

<a href="https://github.com/lucide-icons/lucide/graphs/contributors">
<img src="https://opencollective.com/lucide-icons/contributors.svg?width=890" /></a>
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,8 +189,16 @@ Join the community on our [Discord](https://discord.gg/EH6nSts) server!

Lucide is totally free for commercial use and personally use, this software is licensed under the [ISC License](https://github.com/lucide-icons/lucide/blob/master/LICENSE).

## Credits

Thank you to all the people who contributed to Lucide!

<a href="https://github.com/lucide-icons/lucide/graphs/contributors">
<img src="https://opencollective.com/lucide-icons/contributors.svg?width=890" /></a>

## Sponsors

<a href="https://vercel.com?utm_source=lucide&utm_campaign=oss">
<img src="./site/public/vercel.svg" alt="Powered by Vercel" width="200" />
</a>

0 comments on commit 5a525f2

Please sign in to comment.