MCPcopy Index your code
hub / github.com/e18e/setup-publish

github.com/e18e/setup-publish @1.1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.1.0 ↗ · + Follow
11 symbols 48 edges 9 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

@e18e/setup-publish

npm version License: MIT

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

📦 Install

npm install -g @e18e/setup-publish

Or you can use npx:

npx @e18e/setup-publish

🚀 Usage

# 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
  • Staged publishes - Releases are staged on npm for manual approval before going live (where supported by the template)

⚙️ 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 <path> Output path for the generated workflow file .github/workflows/publish.yml Any valid file path
--template <name> Template to use for workflow generation default
  • default - Manual GitHub release management
  • changelogithub - Automated changelog with changelogithub
  • changesets - Automated releases with changesets
--env <env> GitHub environment for deployment protection none Any environment name
--pm <name> Package manager to use in the generated workflow npm npm, pnpm, bun
--interactive Run CLI in interactive mode true boolean

📚 Examples

Interactive Mode (Default)

setup-publish

Non-Interactive Mode

# 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 - ideal for projects following conventional commits.

🔄 Changesets

Automated releases with changesets - great for monorepos and coordinated releases.

[!NOTE] Changesets does not yet support npm staging, so releases publish directly.

Sponsors

e18e community sponsors

📄 License

MIT

Extension points exported contracts — how you extend this code

CLIOptions (Interface)
(no doc)
src/types.ts

Core symbols most depended-on inside this repo

createTemplate
called by 6
src/templates.ts
cancelInteractive
called by 5
src/cli.ts
getAvailableTemplates
called by 3
src/templates.ts
generateWorkflow
called by 1
src/workflow.ts
populateAvailableTemplates
called by 1
src/templates.ts
setupChangeSets
called by 1
src/cli.ts
setupChangelogithub
called by 1
src/cli.ts
runInteractive
called by 1
src/cli.ts

Shape

Function 10
Interface 1

Languages

TypeScript100%

Modules by API surface

src/cli.ts5 symbols
src/templates.ts3 symbols
test/templates.test.ts1 symbols
src/workflow.ts1 symbols
src/types.ts1 symbols

For agents

$ claude mcp add setup-publish \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact