@stephansama/multipublish
Publish packages to multiple providers easily
Table of contents
Section titled “Table of contents”Open Table of contents
Installation
Section titled “Installation”pnpm install @stephansama/multipublishCLI Options
Section titled “CLI Options”| Option | Alias | Description | Type |
|---|---|---|---|
--config | -c | Path to config file | string |
--dry | -d | Perform a dry run | boolean |
--released | -r | Packages that have been updated and require a publish | array |
--releasedFile | -f | File denoting which packages have been updated | string |
--useChangesetStatus | -s | Path to changeset status file used to version release | boolean |
--verbose | -v | Enable verbose logging | boolean |
--versionJsr | -j | Update version JSR configuration files | boolean |
Configuration
Section titled “Configuration”You can configure multipublish by creating a configuration file (or object) in the root of your project. The following file formats are supported:
package.json.multipublishrc.cjs.multipublishrc.js.multipublishrc.json.multipublishrc.mjs.multipublishrc.ts.multipublishrc.yaml.multipublishrc.yml.multipublishrc.config/.multipublishrc.json.config/.multipublishrc.yaml.config/.multipublishrc.yml.config/.multipublishrc.config/multipublishrc.cjs.config/multipublishrc.js.config/multipublishrc.json.config/multipublishrc.mjs.config/multipublishrc.ts.config/multipublishrc.yaml.config/multipublishrc.yml.config/multipublishrcmultipublish.config.cjsmultipublish.config.jsmultipublish.config.mjsmultipublish.config.ts
{ "$schema": "./node_modules/@stephansama/multipublish/config/schema.json", "platforms": [ ["jsr", { "experimentalGenerateJSR": true, "defaultExclude": ["!dist"] }], [ "npm", { "registry": "https://npm.pkg.github.com", "tokenEnvironmentKey": "GITHUB_TOKEN" } ] ]}GitHub NPM Registry
Section titled “GitHub NPM Registry”If publishing to the GitHub NPM registry, you must add packages to permissions when using a GitHub token. And allow write and read permissions for workflows (located in repo settings > actions > general).
permissions: packages: writeJSR Configuration
Section titled “JSR Configuration”When publishing to JSR, you must either have a valid jsr.json or deno.json, or allow experimentalGenerateJSR using the config option.
Changesets
Section titled “Changesets”If you are using jsr this with changesets, please update your version script with a preversion script that calls the multipublish CLI in order to update your existing jsr configurations.
{ "scripts": { "preversion": "multipublish --useChangesetStatus --versionJsr", "version": "changeset version" }}Published packages
Section titled “Published packages”you can run multipublish after a changeset publish like so
- if: github.ref_name == 'main' name: 🦋 Create Changeset Release uses: changesets/action@v1 id: changesets with: commit: "chore: Update version for release" title: "chore: Update version for release" publish: pnpm run publish createGithubReleases: true- name: publish to other registries if: steps.changesets.outputs.published == 'true' run: | echo "${{ steps.changesets.outputs.publishedPackages }}" | multipublishZod Schema
Section titled “Zod Schema”Config
Section titled “Config”Object containing the following properties:
| Property | Type | Default |
|---|---|---|
platforms (*) | Platforms | |
tmpDirectory | string | '.release' |
useChangesets | boolean | true |
(*) Required.
JsrPlatformOptions
Section titled “JsrPlatformOptions”Object containing the following properties:
| Property | Type | Default |
|---|---|---|
allowSlowTypes | boolean | true |
defaultExclude | Array<string> | |
defaultInclude | Array<string> | |
experimentalGenerateJSR | boolean | false |
experimentalUpdateCatalogs | boolean | false |
tokenEnvironmentKey | string | 'JSR_AUTH_TOKEN' |
All properties are optional.
NpmPlatformOptions
Section titled “NpmPlatformOptions”Object containing the following properties:
| Property | Type | Default |
|---|---|---|
registry | string | 'https://registry.npmjs.org/' |
strategy | '.npmrc' | 'package.json' | '.npmrc' |
tokenEnvironmentKey | string | 'NODE_AUTH_TOKEN' |
All properties are optional.
Platforms
Section titled “Platforms”*Array of 'jsr' | 'npm' *or* Tuple:
'jsr'- JsrPlatformOptions
'npm'- NpmPlatformOptions
Modules
Section titled “Modules”| Module | Description |
|---|---|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |