First of all, thanks for taking the time to contribute! This project can only grow and live by your countless contributions. To keep this project maintable we developed some guidelines for contributions.
devicon.json
Here are some terms that we will use in this repo:
.svg
" refers to the svg
versions of the Icons.Here is an overview of what you have to do to submit your icons to the repo.
/icons
devicon.json
to include the new Icon new icon: Icon name (versions)
Each icon/svg can come in different versions. So far, we have:
Notes
devicon.json
so they can be found with either the "original" or "plain" naming convention. Note: this only applies to font icon versions only, not the SVG versions.
Before you submit your logos/svgs, please ensure that they meet the following standard:
.svg
file contains one version of an icon in a 0 0 128 128
viewbox..svg
must use the fill
attribute instead of using classes
for colors. See here for more details.(Icon name)-(original|plain|line)(-wordmark?).
icons
folder.eps
file.eps
file should contains all available versions of an icon. Each version is contained in a 128px by 128px artboard.svg
files for the Icondevicon.json
Before you open a PR into Devicon, you must update the devicon.json
. This is essential for our build script to work and to document your work.
Here is the object that each of your Icon must have:
{
"name": string, // the official name of the technology. Must be lower case, no space and don't have the dash '-' character.
"tags": string[], // list of tags relating to the technology for search purpose
"versions": {
"svg": VersionString[], // list the svgs that you have
"font": VersionString[] // list the fonts acceptable versions that you have
},
"color": string, // the main color of the logo. Only track 1 color
"aliases": AliasObj[] // keeps track of the aliases for the font versions ONLY
}
Here is what VersionString means:
svg
file's nameHere is the AliasObj interface:
{
"base": VersionString, // the base version
"alias": VersionString // the alias version that's similar to the base version
}
As an example, let's assume you have created the svgs for Redhat and Amazon Web Services logos.
For the Redhat svg, you have the "original", "original-wordmark", "plain", and "plain-wordmark" versions.
For the Amazon Web Services svgs, you have the "original", "original-wordmark", "plain-wordmark" versions. The "original" version is simple enough to be a "plain" version as well. Note that we are not using the acronym AWS.
/icons
amazonwebservices
and one for redhat
devicon.json
redhat
, you would do this
{
"name": "redhat",
"tags": [
"server",
"linux"
],
"versions": {
"svg": [ // here are the versions that are available in svgs
"original",
"original-wordmark",
"plain",
"plain-wordmark"
],
"font": [ // here are the versions that will be used to create icons
"plain",
"plain-wordmark"
]
},
"color": "#e93442", // note the '#' character
"aliases": [] // no aliases in this case
},
amazonwebservices
, you would do this
{
"name": "amazonwebservices",
"tags": [
"cloud",
"hosting",
"server"
],
"versions": {
"svg": [ // here are the versions that are available in svgs
"original",
"original-wordmark",
"plain-wordmark"
],
"font": [ // here are the versions that will be used to create icons
"original", // "original" is simple enough to be used as the plain icon so we'll add "plain" to the aliases below
"plain-wordmark",
// note that the alias "plain" is not listed here. It must be listed in the `aliases` attribute
]
},
"color": "#F7A80D", // note the '#' character
"aliases": [
{
"base": "original", // here is the base version that we will upload to Icomoon
"alias": "plain" // this is its alias. Our script will create a reference so users can search using "original" or "plain" for this icon
// note that you don't provide aliases for the svg version. If "original" can't be made into a font, there's no need to provide it with a plain alias
}
]
}
To request an icon, you can create an issue in the repo. Please follow these simple guidelines:
To make adding icons easier for repo maintainers, we rely on GitHub Actions, Python, Selenium, and Gulp to automate our tasks.
So far, the tasks in the build script are:
There are also other tasks that we are automating, such as: