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.
- Host: GitHub
- URL: https://github.com/e18e/setup-publish
- Owner: e18e
- License: mit
- Created: 2025-09-21T16:32:29.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2026-03-15T16:50:21.000Z (3 months ago)
- Last Synced: 2026-03-16T05:14:45.367Z (3 months ago)
- Language: TypeScript
- Size: 217 KB
- Stars: 20
- Watchers: 1
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# `@e18e/setup-publish`
[](https://www.npmjs.com/package/@e18e/setup-publish)
[](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
## 📄 License
MIT