An open API service indexing awesome lists of open source software.

https://github.com/e18e/setup-publish

A tiny CLI to help setting up npm publish workflows.
https://github.com/e18e/setup-publish

Last synced: 2 months ago
JSON representation

A tiny CLI to help setting up npm publish workflows.

Awesome Lists containing this project

README

          

# `@e18e/setup-publish`

[![npm version](https://img.shields.io/npm/v/@e18e/setup-publish.svg)](https://www.npmjs.com/package/@e18e/setup-publish)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

> 🚀 A tiny CLI to assist with setting up GitHub workflows for publishing packages to npm.

## 📦 Install

```bash
npm install -g @e18e/setup-publish
```

Or you can use `npx`:

```bash
npx @e18e/setup-publish
```

## 🚀 Usage

```bash
# If installed globally
setup-publish

# Or using npx
npx @e18e/setup-publish
```

## 🛠️ Features

- **Granular permissions** - Each workflow step has minimal required permissions
- **SHA-pinned actions** - GitHub actions referenced by commit SHA for security
- **Install scripts disabled** - Prevents malicious package install scripts from running
- **Separated jobs** - Build and publish run as independent jobs for better isolation
- **Secure publish** - Publish job only uploads pre-built artifacts, no external code execution

## ⚙️ Options

By default, the CLI runs in **interactive mode**, prompting you for configuration options. You can also provide options directly via the command line with `--no-interactive` to skip the prompts entirely.

| Option | Description | Default | Available Values |
|--------|-------------|---------|------------------|
| `--output ` | Output path for the generated workflow file | `.github/workflows/publish.yml` | Any valid file path |
| `--template ` | Template to use for workflow generation | `default` |


  • `default` - Manual GitHub release management

  • `changelogithub` - Automated changelog with changelogithub

  • `changesets` - Automated releases with changesets

|
| `--env ` | GitHub environment for deployment protection | _none_ | Any environment name |
| `--interactive` | Run CLI in interactive mode | `true` | boolean |

## 📚 Examples

### Interactive Mode (Default)

```bash
setup-publish
```

### Non-Interactive Mode

```bash
# Generate workflow with changesets template
setup-publish --no-interactive --template changesets

# Custom output path with GitHub environment
setup-publish --no-interactive --output .github/workflows/release.yml --env production

# Use changelogithub template with custom environment
setup-publish --no-interactive --template changelogithub --env staging
```

## 📋 Templates

### 🎯 **Default**

Manual GitHub release management - this is the most basic setup, allowing you to create releases manually via GitHub's interface.

### 📝 **Changelogithub**

Automated changelog generation using [changelogithub](https://github.com/antfu/changelogithub) - ideal for projects following conventional commits.

### 🔄 **Changesets**

Automated releases with [changesets](https://github.com/changesets/changesets) - great for monorepos and coordinated releases.

## Sponsors



e18e community sponsors

## 📄 License

MIT