# allow-publish-version

> Publish package with allowed versions only

Latest version **1.0.0-rc.1** (published 2020-11-18) · MIT license · 0 weekly downloads

## Install

```sh
npm install allow-publish-version
pnpm add allow-publish-version
yarn add allow-publish-version
bun add allow-publish-version
```

Provides the command `allow-publish-version`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0-rc.1 |
| Published | 2020-11-18 |
| First published | 2020-11-18 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 8.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Paul Rumkin |
| Maintainers | rumkin |
| Keywords | util, bin, cli, npm, development, dx, integrity, check, tool, semver, release |

## Links

- npm: https://www.npmjs.com/package/allow-publish-version
- Repository: https://github.com/rumkin/allow-publish-version
- Homepage: https://github.com/rumkin/allow-publish-version#readme
- Issues: https://github.com/rumkin/allow-publish-version/issues
- npm.io page: https://npm.io/package/allow-publish-version

## Dependencies (3)

- [semver](https://npm.io/package/semver.md) ^7.3.2
- [picomatch](https://npm.io/package/picomatch.md) ^2.2.2
- [lodash.isplainobject](https://npm.io/package/lodash.isplainobject.md) ^4.0.6

## Alternatives

- [lodash.assign](https://npm.io/package/lodash.assign.md) — 2.3M weekly downloads
- [lodash.chunk](https://npm.io/package/lodash.chunk.md) — 1.8M weekly downloads
- [react-native-ios-utilities](https://npm.io/package/react-native-ios-utilities.md) — 138.5K weekly downloads
- [@technically/lodash](https://npm.io/package/@technically/lodash.md) — 50.9K weekly downloads
- [@fluid-topics/ft-icon](https://npm.io/package/@fluid-topics/ft-icon.md) — 20.6K weekly downloads

## Recent versions

- 1.0.0-rc.1 (latest) — 2020-11-18

## README

# Allow Publish Version

Allow Publish Version util protects your NPM package from being accidentally
published with invalid version. Use it with `prepublishOnly` script of package.json.

It will check your package version to be valid NPM subset of [semver](https://semver.org)
with exact prerelease record. Valid versions might look like `1.0.0` or `1.0.0-beta.1`.

## Installation

```bash
npm i allow-publish-version
```

## Usage

1. Add `prepublishOnly` script in `package.json`.
3. Run `npm publish` when you're ready to publish your package, or `npm publish --dry-run` to test.

Example `package.json`:
```js
{
  "version" : "1.0.0-alpha.1",
  "scripts": {
    "prepublishOnly": "allow-publish-version"
  },
}
```

By default there will be `alpha`, `beta` and `rc` prereleases allowed.

## Examples

Valid versions:

```text
1.0.0
1.0.0-pre.1
1.0.0-pre.beta.1
```

Invalid versions:

```ini
1.0 # Not a valid semver.
1.0.0-beta # No prerelease version.
1.0.0-pre.0 # Prerelease index should start from 1.
1.0.0-pre.1.0 # Prerelease name couldn't contain numbers.
1.0.0-beta.0+x64 # Builds are not supported by NPM.
```

## Configuration

APV could be configured to use another prerelease scheme with `package.json`.

```js
{
  "version" : "1.0.0-nightly.1",
  "scripts": {
    "prepublishOnly": "allow-publish-version"
  },
  "allowPublishVersion": {
    "prereleases": ["nightly", "beta"]
  }
}
```

## API

### `AllowPublishVersionRecord`

```text
AllowPublishVersionFlag | AllowPublishVersionList | AllowPublishVersionDict
```

Configuration value `AllowPublishVersionRecord` describes the value of `allowPublishVersion` field of `package.json`.

### `AllowPublishVersionFlag`

```text
true
```

Boolean value `true` turns default APV configuration on.

Example:

```js
{
  "allowPublishVersion": true
}
```

### `AllowPublishVersionList`

```text
Array<string>
```

Array should contain allowed prerelease names or [picomatch](https://npmjs.com/package/picomatch)-compatible glob patterns.

Example:

```js
{
  "allowPublishVersion": ["beta", "pre.*"]
}
```

### `AllowPublishVersionDict`

```text
{
  prereleases: Array<string>
}
```

Dictionary holds single field `prereleases`. This field contains allowed prerelease names or [picomatch](https://npmjs.com/package/picomatch)-compatible glob patterns.

Example:

```js
{
  "allowPublishVersion": {
    "prereleases": ["beta", "pre.*"]
  }
}
```

## License

MIT.

---
_Source: https://npm.io/package/allow-publish-version · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
