Add a file named README.md
to the root of your project. A good
readme should at the very least answer the following questions:
Furthermore, providing an example, a change log and explaining how to contribute is a bonus. And if it is a binding, please provide a link to the bound library, as it usually provides more in-depth information and documentation.
NOTE: The readme and other metadata together must total less than 10k bytes in order to be indexed by the search engine. To avoid going over that limit, please keep the contents of the readme to only the essentials, and put extensive documentation and such in a separate markdown file linked to from the readme. This also has the added benefit of improving search relevance., making it easier to find your package when searching for relevant terms.
Fill out the following fields in package.json
:
Additionally, a number of other factors are taken into account when calculating a score for the package, which primarily is used as part of search result ranking. This data is blatantly stolen from npms.io, who are nice enough to detail the factors taken into account here.
Follow the documentation on NPM
Publishing to NPM is not a requirement. If your project is incomplete, experimental or otherwise not yet ready for primetime, it might be easier to just depend on the master branch of the source code repository. You can still submit your package to redex, where it'll then be marked as unpublished. This is not only intended as a warning, but also to highlight opportunities to contribute.
Submitting published and unpublished packages both follow roughly the same process: Add the package to the appropriate collection in sources.json and submit a PR. Or just submit an issue with the same information.
Add an entry in the published collection with the follwoing format:
"<npm name>": {
"category": "binding" | "library" | "tool" | "boilerplate",
"platforms": ["browser" | "node" | "native" | "any"],
"keywords": [<string>]
}
Add an entry in the published collection with the follwoing format:
"<owner>/<repository>": {
"repository": "github:<owner>/<repository>"
"category": "binding" | "library" | "tool" | "boilerplate",
"platforms": ["browser" | "node" | "native" | "any"],
"keywords": [<string>]
}
Submissions are checked manually (with a little help from a linter script).
Any remarks will be noted in the PR. There's also a CI process that checks
sources.json
for syntax and trivial errors, which will quickly
fail if you just made a silly mistake.
Packages that do not meet the minimum standards for documentation and metadata, according to what's described in Step 1 above, are marked as neglected. These packages might still function perfectly well, which is why they're listed at all, but the quallity of the packaging is also often a good indicator of the quality of its contents. There are therefore two for having this, and to de-emphasize flagged packages:
Please try to use only the keywords that are already in use, which are listed on the front page. If you don't think you package fits into any of these categories, you may propose a new keyword in the submission PR.
The "any" platform means the package is platform-independent, because it avoids using platform-specific features. It's improtant to distinguish a package that is platform-independent from a package that, in one way or another, targets all avilable platforms. These are not equivalent since a platform-independent package will automatically support any new platform.