is-valid-npm-name
Version:
Checks if a given string is a valid npm package name adhering to npm rules and best practice
96 lines (60 loc) • 2.59 kB
Markdown
# is-valid-npm-name
[](https://semaphoreci.com/niftylettuce/is-valid-npm-name)
[](https://codecov.io/gh/lassjs/is-valid-npm-name)
[](https://github.com/sindresorhus/xo)
[](https://github.com/prettier/prettier)
[](https://lass.js.org)
[](<>)
> Checks if a given string is a valid npm package name adhering to [npm rules](https://docs.npmjs.com/files/package.json#name) and best practice
## Table of Contents
* [Install](#install)
* [Usage](#usage)
* [Error Strings](#error-strings)
* [Rule Exemption](#rule-exemption)
* [Contributors](#contributors)
* [License](#license)
## Install
[npm][]:
```sh
npm install is-valid-npm-name
```
[yarn][]:
```sh
yarn add is-valid-npm-name
```
## Usage
```js
const isValidNpmName = require('is-valid-npm-name');
const check = isValidNpmName('fs');
// `check` is `true` or a String (e.g. why it was not a valid npm name)
if (check !== true) {
console.error(check);
// 'package name cannot use built-in core Node module name'
}
```
## Error Strings
* package name must be a String
* remove trailing spaces from start and end of package name
* package name cannot be more than 214 characters
* package name cannot start with a dot nor underscore
* package name cannot have uppercase letters
* scoped package name must start with "@" character
* scoped package name has an extra "@" character
* scoped package name must be in the format of `@myorg/package`
* scoped package name has an extra "/" character
* package name cannot use built-in core Node module name
* package name had non-URL-safe characters
## Rule Exemption
We ignore a single npm rule, which is:
> don't put "js" or "node" in the name
This is due to the sheer number of npm package name squatters.
Sometimes it's absolutely necessary to affix with `js` or `node`.
## Contributors
| Name | Website |
| -------------- | -------------------------- |
| **Nick Baugh** | <http://niftylettuce.com/> |
## License
[MIT](LICENSE) © [Nick Baugh](http://niftylettuce.com/)
##
[npm]: https://www.npmjs.com/
[yarn]: https://yarnpkg.com/