@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 |
|---|---|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |