@wtf/release-docs 8.2.0 → 8.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -44
- package/api/@wtf/release-cargo/auth/functions/mask.md +1 -1
- package/api/@wtf/release-cargo/auth/functions/tokenVariableOf.md +1 -1
- package/api/@wtf/release-cargo/auth/functions/trustedPublishing.md +1 -1
- package/api/@wtf/release-cargo/auth/interfaces/HttpResponse.md +5 -5
- package/api/@wtf/release-cargo/auth/interfaces/TrustedPublishing.md +5 -5
- package/api/@wtf/release-cargo/auth/interfaces/TrustedPublishingOptions.md +6 -6
- package/api/@wtf/release-cargo/auth/type-aliases/HttpFetch.md +1 -1
- package/api/@wtf/release-cargo/auth/variables/CRATES_IO_API.md +1 -1
- package/api/@wtf/release-cargo/auth/variables/ID_TOKEN_VARIABLE.md +1 -1
- package/api/@wtf/release-cargo/auth/variables/USER_AGENT.md +1 -1
- package/api/@wtf/release-cargo/crates/functions/publishOrder.md +1 -1
- package/api/@wtf/release-cargo/crates/functions/publishable.md +1 -1
- package/api/@wtf/release-cargo/crates/functions/readWorkspace.md +1 -1
- package/api/@wtf/release-cargo/crates/functions/selectCrates.md +1 -1
- package/api/@wtf/release-cargo/crates/interfaces/Selection.md +5 -5
- package/api/@wtf/release-cargo/ecosystem/functions/packagesAt.md +1 -1
- package/api/@wtf/release-cargo/ecosystem/functions/packagesOfTree.md +1 -1
- package/api/@wtf/release-cargo/ecosystem/functions/packagesOfWorkspace.md +1 -1
- package/api/@wtf/release-cargo/ecosystem/functions/resolveRequirement.md +1 -1
- package/api/@wtf/release-cargo/ecosystem/functions/satisfiesRequirement.md +1 -1
- package/api/@wtf/release-cargo/ecosystem/functions/semverRange.md +1 -1
- package/api/@wtf/release-cargo/ecosystem/interfaces/CargoPackage.md +7 -7
- package/api/@wtf/release-cargo/ecosystem/variables/cargoEcosystem.md +1 -1
- package/api/@wtf/release-cargo/errors/classes/CargoError.md +5 -5
- package/api/@wtf/release-cargo/errors/type-aliases/CargoErrorCode.md +1 -1
- package/api/@wtf/release-cargo/errors/variables/CARGO_ERRORS.md +1 -1
- package/api/@wtf/release-cargo/interfaces/Crate.md +6 -6
- package/api/@wtf/release-cargo/interfaces/CrateDependency.md +6 -6
- package/api/@wtf/release-cargo/interfaces/Workspace.md +3 -3
- package/api/@wtf/release-cargo/publish/functions/publishCrates.md +1 -1
- package/api/@wtf/release-cargo/publish/interfaces/PublishCratesOptions.md +11 -11
- package/api/@wtf/release-cargo/publish/interfaces/PublishedCrate.md +5 -5
- package/api/@wtf/release-cargo/publish/type-aliases/CrateStatus.md +1 -1
- package/api/@wtf/release-cargo/publish/variables/RECHECK_WAITS.md +1 -1
- package/api/@wtf/release-cargo/registry/functions/crateUrl.md +1 -1
- package/api/@wtf/release-cargo/registry/functions/indexHasVersion.md +1 -1
- package/api/@wtf/release-cargo/registry/functions/indexPath.md +1 -1
- package/api/@wtf/release-cargo/registry/variables/CRATES_IO_INDEX.md +1 -1
- package/api/@wtf/release-cargo/stamp/functions/checkVersions.md +1 -1
- package/api/@wtf/release-cargo/stamp/functions/inheritsVersion.md +1 -1
- package/api/@wtf/release-cargo/stamp/functions/stampManifest.md +1 -1
- package/api/@wtf/release-cargo/stamp/functions/stampWorkspace.md +1 -1
- package/api/@wtf/release-cargo/stamp/interfaces/StampOptions.md +4 -4
- package/api/@wtf/release-cargo/stamp/interfaces/Stamped.md +3 -3
- package/api/@wtf/release-cargo/stamp/interfaces/StampedWorkspace.md +3 -3
- package/api/@wtf/release-cargo/type-aliases/DependencyKind.md +1 -1
- package/api/@wtf/release-go/ecosystem/functions/packagesOfModules.md +1 -1
- package/api/@wtf/release-go/ecosystem/functions/packagesOfRepo.md +1 -1
- package/api/@wtf/release-go/ecosystem/functions/resolveVersion.md +1 -1
- package/api/@wtf/release-go/ecosystem/functions/satisfiesVersion.md +1 -1
- package/api/@wtf/release-go/ecosystem/interfaces/GoPackage.md +7 -7
- package/api/@wtf/release-go/ecosystem/variables/goEcosystem.md +1 -1
- package/api/@wtf/release-go/errors/classes/GoError.md +5 -5
- package/api/@wtf/release-go/errors/type-aliases/GoErrorCode.md +1 -1
- package/api/@wtf/release-go/errors/variables/GO_ERRORS.md +1 -1
- package/api/@wtf/release-go/gomod/functions/entriesOf.md +1 -1
- package/api/@wtf/release-go/gomod/functions/linesOf.md +1 -1
- package/api/@wtf/release-go/gomod/functions/readGoMod.md +1 -1
- package/api/@wtf/release-go/gomod/functions/tokensOf.md +1 -1
- package/api/@wtf/release-go/gomod/interfaces/Entry.md +4 -4
- package/api/@wtf/release-go/gomod/interfaces/GoMod.md +4 -4
- package/api/@wtf/release-go/gomod/interfaces/GoReplace.md +6 -6
- package/api/@wtf/release-go/gomod/interfaces/GoRequire.md +4 -4
- package/api/@wtf/release-go/gomod/interfaces/Token.md +5 -5
- package/api/@wtf/release-go/interfaces/GoModule.md +6 -6
- package/api/@wtf/release-go/modules/functions/isFetchable.md +1 -1
- package/api/@wtf/release-go/modules/functions/isGoMod.md +1 -1
- package/api/@wtf/release-go/modules/functions/majorErrors.md +1 -1
- package/api/@wtf/release-go/modules/functions/majorOfPath.md +1 -1
- package/api/@wtf/release-go/modules/functions/modulesAt.md +1 -1
- package/api/@wtf/release-go/modules/functions/modulesOf.md +1 -1
- package/api/@wtf/release-go/modules/functions/readModules.md +1 -1
- package/api/@wtf/release-go/modules/functions/selectModules.md +1 -1
- package/api/@wtf/release-go/modules/interfaces/Selection.md +4 -4
- package/api/@wtf/release-go/stamp/functions/checkVersions.md +1 -1
- package/api/@wtf/release-go/stamp/functions/stampGoMod.md +1 -1
- package/api/@wtf/release-go/stamp/functions/stampModules.md +1 -1
- package/api/@wtf/release-go/stamp/interfaces/Stamped.md +3 -3
- package/api/@wtf/release-go/stamp/interfaces/StampedModules.md +3 -3
- package/api/@wtf/release-go/tags/functions/askProxy.md +1 -1
- package/api/@wtf/release-go/tags/functions/maskCredentials.md +1 -1
- package/api/@wtf/release-go/tags/functions/releaseCommit.md +1 -1
- package/api/@wtf/release-go/tags/functions/remoteTags.md +1 -1
- package/api/@wtf/release-go/tags/functions/tagModules.md +1 -1
- package/api/@wtf/release-go/tags/functions/tagOfModule.md +1 -1
- package/api/@wtf/release-go/tags/functions/tagPrefix.md +1 -1
- package/api/@wtf/release-go/tags/interfaces/TagModulesOptions.md +8 -8
- package/api/@wtf/release-go/tags/interfaces/TaggedModule.md +5 -5
- package/api/@wtf/release-go/tags/type-aliases/ModuleStatus.md +1 -1
- package/api/@wtf/release-go/tags/variables/RELEASE_AUTHOR.md +1 -1
- package/api/@wtf/release-maven/artifacts/functions/groupIdOf.md +1 -1
- package/api/@wtf/release-maven/artifacts/functions/installsOf.md +1 -1
- package/api/@wtf/release-maven/artifacts/functions/isPomFile.md +1 -1
- package/api/@wtf/release-maven/artifacts/functions/isRange.md +1 -1
- package/api/@wtf/release-maven/artifacts/functions/modulesOf.md +1 -1
- package/api/@wtf/release-maven/artifacts/functions/nameOf.md +1 -1
- package/api/@wtf/release-maven/artifacts/functions/publishOrder.md +1 -1
- package/api/@wtf/release-maven/artifacts/functions/readModules.md +1 -1
- package/api/@wtf/release-maven/artifacts/functions/readPoms.md +1 -1
- package/api/@wtf/release-maven/artifacts/functions/selectArtifacts.md +1 -1
- package/api/@wtf/release-maven/artifacts/interfaces/Selection.md +4 -4
- package/api/@wtf/release-maven/ecosystem/functions/compareVersions.md +1 -1
- package/api/@wtf/release-maven/ecosystem/functions/parseRange.md +1 -1
- package/api/@wtf/release-maven/ecosystem/functions/resolveVersion.md +1 -1
- package/api/@wtf/release-maven/ecosystem/functions/satisfiesVersion.md +1 -1
- package/api/@wtf/release-maven/ecosystem/interfaces/Bound.md +3 -3
- package/api/@wtf/release-maven/ecosystem/interfaces/Restriction.md +3 -3
- package/api/@wtf/release-maven/ecosystem/variables/mavenEcosystem.md +1 -1
- package/api/@wtf/release-maven/errors/classes/MavenError.md +5 -5
- package/api/@wtf/release-maven/errors/type-aliases/MavenErrorCode.md +1 -1
- package/api/@wtf/release-maven/errors/variables/MAVEN_ERRORS.md +1 -1
- package/api/@wtf/release-maven/interfaces/MavenModule.md +14 -14
- package/api/@wtf/release-maven/pom/functions/childOf.md +1 -1
- package/api/@wtf/release-maven/pom/functions/childrenOf.md +1 -1
- package/api/@wtf/release-maven/pom/functions/dependencyOf.md +1 -1
- package/api/@wtf/release-maven/pom/functions/escapeXml.md +1 -1
- package/api/@wtf/release-maven/pom/functions/parseXml.md +1 -1
- package/api/@wtf/release-maven/pom/functions/readPom.md +1 -1
- package/api/@wtf/release-maven/pom/functions/textAt.md +1 -1
- package/api/@wtf/release-maven/pom/interfaces/Pom.md +15 -15
- package/api/@wtf/release-maven/pom/interfaces/PomDependency.md +5 -5
- package/api/@wtf/release-maven/pom/interfaces/PomParent.md +4 -4
- package/api/@wtf/release-maven/pom/interfaces/PomPlugin.md +5 -5
- package/api/@wtf/release-maven/pom/interfaces/PomRepository.md +3 -3
- package/api/@wtf/release-maven/pom/interfaces/Span.md +3 -3
- package/api/@wtf/release-maven/pom/interfaces/XmlElement.md +7 -7
- package/api/@wtf/release-maven/pom/variables/PLUGIN_GROUP.md +1 -1
- package/api/@wtf/release-maven/publish/functions/deployModules.md +1 -1
- package/api/@wtf/release-maven/publish/interfaces/DeployModulesOptions.md +11 -11
- package/api/@wtf/release-maven/publish/interfaces/DeployedModule.md +4 -4
- package/api/@wtf/release-maven/publish/type-aliases/ModuleStatus.md +1 -1
- package/api/@wtf/release-maven/repository/functions/deployTargets.md +1 -1
- package/api/@wtf/release-maven/repository/functions/expandValues.md +1 -1
- package/api/@wtf/release-maven/repository/functions/hasPom.md +1 -1
- package/api/@wtf/release-maven/repository/functions/pomPath.md +1 -1
- package/api/@wtf/release-maven/repository/functions/pomUrl.md +1 -1
- package/api/@wtf/release-maven/repository/interfaces/Repository.md +3 -3
- package/api/@wtf/release-maven/repository/interfaces/ValuesOf.md +3 -3
- package/api/@wtf/release-maven/repository/variables/MAVEN_CENTRAL.md +1 -1
- package/api/@wtf/release-maven/stamp/functions/checkVersions.md +1 -1
- package/api/@wtf/release-maven/stamp/functions/stampModules.md +1 -1
- package/api/@wtf/release-maven/stamp/functions/stampPom.md +1 -1
- package/api/@wtf/release-maven/stamp/interfaces/PomStampOptions.md +5 -5
- package/api/@wtf/release-maven/stamp/interfaces/Stamped.md +3 -3
- package/api/@wtf/release-maven/stamp/interfaces/StampedModules.md +3 -3
- package/api/@wtf/release-npm/check/functions/checkPackages.md +1 -1
- package/api/@wtf/release-npm/check/functions/formatIssue.md +1 -1
- package/api/@wtf/release-npm/check/interfaces/CheckOptions.md +6 -6
- package/api/@wtf/release-npm/check/interfaces/Issue.md +5 -5
- package/api/@wtf/release-npm/check/type-aliases/CheckedPackage.md +1 -1
- package/api/@wtf/release-npm/check/type-aliases/IssueCode.md +1 -1
- package/api/@wtf/release-npm/ecosystem/variables/npmEcosystem.md +1 -1
- package/api/@wtf/release-npm/errors/type-aliases/NpmErrorCode.md +1 -1
- package/api/@wtf/release-npm/errors/variables/NPM_ERRORS.md +1 -1
- package/api/@wtf/release-npm/interfaces/Lookup.md +3 -3
- package/api/@wtf/release-npm/interfaces/PublishOptions.md +6 -6
- package/api/@wtf/release-npm/interfaces/PublishPackage.md +5 -5
- package/api/@wtf/release-npm/interfaces/PublishTrainOptions.md +13 -13
- package/api/@wtf/release-npm/interfaces/Publisher.md +7 -7
- package/api/@wtf/release-npm/interfaces/PublisherContext.md +7 -7
- package/api/@wtf/release-npm/manifests/functions/concreteRange.md +1 -1
- package/api/@wtf/release-npm/manifests/functions/manifestsAt.md +1 -1
- package/api/@wtf/release-npm/manifests/functions/packageOf.md +1 -1
- package/api/@wtf/release-npm/manifests/functions/packagesOfManifests.md +1 -1
- package/api/@wtf/release-npm/manifests/functions/readManifests.md +1 -1
- package/api/@wtf/release-npm/manifests/functions/resolveSpecifier.md +1 -1
- package/api/@wtf/release-npm/manifests/functions/runtimeDependenciesOf.md +1 -1
- package/api/@wtf/release-npm/manifests/functions/satisfiesRange.md +1 -1
- package/api/@wtf/release-npm/manifests/interfaces/Manifest.md +5 -5
- package/api/@wtf/release-npm/manifests/interfaces/NpmPackage.md +7 -7
- package/api/@wtf/release-npm/manifests/type-aliases/DependencyField.md +1 -1
- package/api/@wtf/release-npm/manifests/variables/DEPENDENCY_FIELDS.md +1 -1
- package/api/@wtf/release-npm/manifests/variables/FIELD_KINDS.md +1 -1
- package/api/@wtf/release-npm/manifests/variables/RUNTIME_FIELDS.md +1 -1
- package/api/@wtf/release-npm/prepare/functions/isTypeScriptSource.md +1 -1
- package/api/@wtf/release-npm/prepare/functions/prepareManifest.md +1 -1
- package/api/@wtf/release-npm/prepare/functions/stripSourceConditions.md +1 -1
- package/api/@wtf/release-npm/prepare/interfaces/PrepareOptions.md +5 -5
- package/api/@wtf/release-npm/prepare/interfaces/PreparedManifest.md +6 -6
- package/api/@wtf/release-npm/prepare/variables/SOURCE_CONDITIONS.md +1 -1
- package/api/@wtf/release-npm/publishers/functions/builtInPublisher.md +1 -1
- package/api/@wtf/release-npm/publishers/functions/isPublisher.md +1 -1
- package/api/@wtf/release-npm/publishers/variables/NPM_REGISTRY.md +1 -1
- package/api/@wtf/release-npm/publishers/variables/PUBLISHERS.md +1 -1
- package/api/@wtf/release-npm/publishers/variables/npmPublisher.md +1 -1
- package/api/@wtf/release-npm/publishers/variables/pnpmPublisher.md +1 -1
- package/api/@wtf/release-npm/release/functions/checkTrain.md +1 -1
- package/api/@wtf/release-npm/release/functions/distTagOf.md +1 -1
- package/api/@wtf/release-npm/release/functions/packTrain.md +1 -1
- package/api/@wtf/release-npm/release/functions/publishPacked.md +1 -1
- package/api/@wtf/release-npm/release/functions/publishTrain.md +1 -1
- package/api/@wtf/release-npm/release/functions/publishedOf.md +1 -1
- package/api/@wtf/release-npm/release/functions/publishedOfResolved.md +1 -1
- package/api/@wtf/release-npm/release/functions/releaseTrain.md +1 -1
- package/api/@wtf/release-npm/release/functions/resolveManifests.md +1 -1
- package/api/@wtf/release-npm/release/functions/tagTrain.md +1 -1
- package/api/@wtf/release-npm/release/interfaces/CheckRelease.md +16 -16
- package/api/@wtf/release-npm/release/interfaces/PackOptions.md +8 -8
- package/api/@wtf/release-npm/release/interfaces/PackedTrain.md +12 -12
- package/api/@wtf/release-npm/release/interfaces/PublishRun.md +11 -11
- package/api/@wtf/release-npm/release/interfaces/PublishedOf.md +4 -4
- package/api/@wtf/release-npm/release/interfaces/PublishedPackage.md +7 -7
- package/api/@wtf/release-npm/release/interfaces/PublishedTrain.md +5 -5
- package/api/@wtf/release-npm/release/interfaces/ResolveRelease.md +17 -17
- package/api/@wtf/release-npm/release/interfaces/ResolvedPackage.md +4 -4
- package/api/@wtf/release-npm/release/interfaces/ResolvedTrain.md +6 -6
- package/api/@wtf/release-npm/release/interfaces/TagRelease.md +14 -14
- package/api/@wtf/release-npm/release/type-aliases/LookedUpTrain.md +1 -1
- package/api/@wtf/release-npm/release/type-aliases/ReleaseRun.md +1 -1
- package/api/@wtf/release-npm/release/variables/ID_TOKENS.md +1 -1
- package/api/@wtf/release-npm/release/variables/RUNNER_ENVIRONMENTS.md +1 -1
- package/api/@wtf/release-npm/workspace/functions/pnpmWorkspaceGlobs.md +1 -1
- package/api/@wtf/release-npm/workspace/functions/publishableOf.md +1 -1
- package/api/@wtf/release-npm/workspace/functions/readWorkspace.md +1 -1
- package/api/@wtf/release-npm/workspace/functions/workspaceFolders.md +1 -1
- package/api/@wtf/release-npm/workspace/functions/workspaceGlobs.md +1 -1
- package/api/@wtf/release-npm/workspace/interfaces/WorkspaceGlobs.md +3 -3
- package/api/@wtf/release-npm/workspace/interfaces/WorkspaceOptions.md +2 -2
- package/api/@wtf/release-replace/errors/classes/ReplaceError.md +5 -5
- package/api/@wtf/release-replace/errors/type-aliases/ReplaceErrorCode.md +1 -1
- package/api/@wtf/release-replace/errors/variables/REPLACE_ERRORS.md +1 -1
- package/api/@wtf/release-replace/files/functions/filesMatcher.md +1 -1
- package/api/@wtf/release-replace/interfaces/ReplaceMatch.md +5 -5
- package/api/@wtf/release-replace/interfaces/ReplacementOf.md +5 -5
- package/api/@wtf/release-replace/replace/functions/regExpOf.md +1 -1
- package/api/@wtf/release-replace/replace/functions/replaceFiles.md +1 -1
- package/api/@wtf/release-replace/replace/functions/replaceText.md +1 -1
- package/api/@wtf/release-replace/replace/interfaces/ReplaceOptions.md +10 -10
- package/api/@wtf/release-replace/replace/interfaces/TextOptions.md +5 -5
- package/api/@wtf/release-replace/replace/type-aliases/To.md +1 -1
- package/api/@wtf/release-replace/templates/functions/mergeTemplates.md +1 -1
- package/api/@wtf/release-replace/templates/functions/resolveReplacement.md +1 -1
- package/api/@wtf/release-replace/templates/functions/resolveReplacements.md +1 -1
- package/api/@wtf/release-replace/type-aliases/Escape.md +1 -1
- package/api/@wtf/release-replace/type-aliases/ReplaceFunction.md +1 -1
- package/api/@wtf/release-replace/type-aliases/Replacement.md +1 -1
- package/api/@wtf/release-replace/type-aliases/ReplacementSpec.md +1 -1
- package/api/@wtf/release-replace/type-aliases/TemplateUse.md +1 -1
- package/api/@wtf/release-replace/type-aliases/Templates.md +1 -1
- package/api/@wtf/release-replace/values/functions/escapeValue.md +1 -1
- package/api/@wtf/release-replace/values/functions/textOf.md +1 -1
- package/api/@wtf/release-replace/values/functions/valueAt.md +1 -1
- package/api/@wtf/release-replace/values/variables/ESCAPES.md +1 -1
- package/api/@wtf/release-replace/values/variables/VALUE.md +1 -1
- package/api/@wtf/release-system/errors/classes/ReleaseError.md +5 -5
- package/api/@wtf/release-system/errors/functions/throwAll.md +1 -1
- package/api/@wtf/release-system/errors/type-aliases/ErrorClass.md +1 -1
- package/api/@wtf/release-system/errors/type-aliases/SystemErrorCode.md +1 -1
- package/api/@wtf/release-system/errors/variables/SYSTEM_ERRORS.md +1 -1
- package/api/@wtf/release-system/git/functions/commitsSince.md +1 -1
- package/api/@wtf/release-system/git/functions/filesOfCommits.md +1 -1
- package/api/@wtf/release-system/git/functions/git.md +1 -1
- package/api/@wtf/release-system/git/functions/gitOf.md +1 -1
- package/api/@wtf/release-system/git/functions/trackedFiles.md +1 -1
- package/api/@wtf/release-system/git/interfaces/GitContext.md +4 -4
- package/api/@wtf/release-system/git/interfaces/LogCommit.md +5 -5
- package/api/@wtf/release-system/node/functions/nodeSystem.md +1 -1
- package/api/@wtf/release-system/node/functions/realPathOf.md +1 -1
- package/api/@wtf/release-system/node/functions/systemOf.md +1 -1
- package/api/@wtf/release-system/paths/functions/normalizePath.md +1 -1
- package/api/@wtf/release-system/paths/functions/pathMatcher.md +1 -1
- package/api/@wtf/release-system/paths/type-aliases/PathMatcher.md +1 -1
- package/api/@wtf/release-system/posix/functions/basenameOf.md +1 -1
- package/api/@wtf/release-system/posix/functions/dirnameOf.md +1 -1
- package/api/@wtf/release-system/posix/functions/joinPath.md +1 -1
- package/api/@wtf/release-system/posix/functions/relativePath.md +1 -1
- package/api/@wtf/release-system/posix/functions/resolvePath.md +1 -1
- package/api/@wtf/release-system/system/interfaces/DirEntry.md +3 -3
- package/api/@wtf/release-system/system/interfaces/ExecOptions.md +4 -4
- package/api/@wtf/release-system/system/interfaces/ExecResult.md +4 -4
- package/api/@wtf/release-system/system/interfaces/System.md +7 -7
- package/api/@wtf/release-system/system/interfaces/SystemFs.md +8 -8
- package/api/@wtf/release-system/system/type-aliases/Exec.md +1 -1
- package/api/@wtf/release-system/system/type-aliases/SystemInput.md +1 -1
- package/api/@wtf/release-system/validator/functions/allOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/anyObject.md +1 -1
- package/api/@wtf/release-system/validator/functions/anyOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/arrayOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/booleanOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/errorOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/errorsOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/exclusive.md +1 -1
- package/api/@wtf/release-system/validator/functions/issuesOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/objectOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/oneOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/orFunction.md +1 -1
- package/api/@wtf/release-system/validator/functions/pathText.md +1 -1
- package/api/@wtf/release-system/validator/functions/pluginEntriesOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/recordOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/refined.md +1 -1
- package/api/@wtf/release-system/validator/functions/stringOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/tupleOf.md +1 -1
- package/api/@wtf/release-system/validator/interfaces/ArrayOptions.md +5 -5
- package/api/@wtf/release-system/validator/interfaces/IssueOptions.md +4 -4
- package/api/@wtf/release-system/validator/interfaces/ObjectOptions.md +5 -5
- package/api/@wtf/release-system/validator/interfaces/OptionIssue.md +4 -4
- package/api/@wtf/release-system/validator/interfaces/Property.md +4 -4
- package/api/@wtf/release-system/validator/interfaces/RecordOptions.md +6 -6
- package/api/@wtf/release-system/validator/interfaces/StringOptions.md +6 -6
- package/api/@wtf/release-system/validator/interfaces/Validator.md +4 -4
- package/api/@wtf/release-system/validator/type-aliases/JsonSchema.md +1 -1
- package/api/@wtf/release-system/validator/type-aliases/Path.md +1 -1
- package/api/@wtf/release-trains/cascade/functions/cascadeNotes.md +1 -1
- package/api/@wtf/release-trains/cascade/functions/cascadeText.md +1 -1
- package/api/@wtf/release-trains/cascade/functions/cascadeType.md +1 -1
- package/api/@wtf/release-trains/cascade/functions/cascadesOf.md +1 -1
- package/api/@wtf/release-trains/cascade/functions/higherType.md +1 -1
- package/api/@wtf/release-trains/cascade/interfaces/Cascade.md +11 -11
- package/api/@wtf/release-trains/cascade/interfaces/CascadeCheck.md +8 -8
- package/api/@wtf/release-trains/cascade/type-aliases/CascadeKind.md +1 -1
- package/api/@wtf/release-trains/cascade/type-aliases/ReleaseType.md +1 -1
- package/api/@wtf/release-trains/cascade/variables/RELEASE_TYPES.md +1 -1
- package/api/@wtf/release-trains/ecosystem/functions/isEcosystem.md +1 -1
- package/api/@wtf/release-trains/ecosystem/functions/loadEcosystems.md +1 -1
- package/api/@wtf/release-trains/ecosystem/functions/readPackages.md +1 -1
- package/api/@wtf/release-trains/ecosystem/interfaces/Dependency.md +4 -4
- package/api/@wtf/release-trains/ecosystem/interfaces/Ecosystem.md +5 -5
- package/api/@wtf/release-trains/ecosystem/interfaces/EcosystemContext.md +5 -5
- package/api/@wtf/release-trains/ecosystem/interfaces/EcosystemPackages.md +3 -3
- package/api/@wtf/release-trains/ecosystem/interfaces/Package.md +6 -6
- package/api/@wtf/release-trains/ecosystem/type-aliases/DependencyKind.md +1 -1
- package/api/@wtf/release-trains/ecosystem/type-aliases/ModuleLoader.md +1 -1
- package/api/@wtf/release-trains/ecosystem/variables/DEPENDENCY_KINDS.md +1 -1
- package/api/@wtf/release-trains/errors/classes/TrainsError.md +5 -5
- package/api/@wtf/release-trains/errors/type-aliases/TrainsErrorCode.md +1 -1
- package/api/@wtf/release-trains/errors/variables/TRAINS_ERRORS.md +1 -1
- package/api/@wtf/release-trains/generated/functions/filesIn.md +1 -1
- package/api/@wtf/release-trains/generated/functions/formatGenerated.md +1 -1
- package/api/@wtf/release-trains/generated/functions/listGenerated.md +1 -1
- package/api/@wtf/release-trains/generated/functions/parseGenerated.md +1 -1
- package/api/@wtf/release-trains/generated/functions/readGenerated.md +1 -1
- package/api/@wtf/release-trains/generated/functions/stageGenerated.md +1 -1
- package/api/@wtf/release-trains/generated/functions/stageGeneratedFolders.md +1 -1
- package/api/@wtf/release-trains/generated/functions/unlistedIn.md +1 -1
- package/api/@wtf/release-trains/generated/interfaces/GeneratedOptions.md +2 -2
- package/api/@wtf/release-trains/generated/interfaces/StageOptions.md +6 -6
- package/api/@wtf/release-trains/generated/variables/GENERATED.md +1 -1
- package/api/@wtf/release-trains/git/functions/tagOf.md +1 -1
- package/api/@wtf/release-trains/git/functions/tagsOf.md +1 -1
- package/api/@wtf/release-trains/git/functions/versionOfTag.md +1 -1
- package/api/@wtf/release-trains/git/interfaces/TrainTag.md +3 -3
- package/api/@wtf/release-trains/interfaces/Train.md +7 -7
- package/api/@wtf/release-trains/packages/functions/dependencyEdges.md +1 -1
- package/api/@wtf/release-trains/packages/functions/dependencyText.md +1 -1
- package/api/@wtf/release-trains/packages/functions/dependsOnErrors.md +1 -1
- package/api/@wtf/release-trains/packages/functions/normalizeDir.md +1 -1
- package/api/@wtf/release-trains/packages/functions/ownersOf.md +1 -1
- package/api/@wtf/release-trains/packages/functions/packagesOf.md +1 -1
- package/api/@wtf/release-trains/packages/functions/publishOrder.md +1 -1
- package/api/@wtf/release-trains/packages/functions/releasedVersions.md +1 -1
- package/api/@wtf/release-trains/packages/functions/trainDependencies.md +1 -1
- package/api/@wtf/release-trains/packages/functions/trainOrder.md +1 -1
- package/api/@wtf/release-trains/packages/functions/unsatisfiedErrors.md +1 -1
- package/api/@wtf/release-trains/packages/interfaces/DependencyEdge.md +6 -6
- package/api/@wtf/release-trains/packages/interfaces/OrderFault.md +4 -4
- package/api/@wtf/release-trains/packages/interfaces/OrderPins.md +3 -3
- package/api/@wtf/release-trains/packages/interfaces/PublishOrder.md +3 -3
- package/api/@wtf/release-trains/packages/interfaces/TrainDependency.md +3 -3
- package/api/@wtf/release-trains/packages/interfaces/VersionsRelease.md +7 -7
- package/api/@wtf/release-trains/paths/functions/filterCommits.md +1 -1
- package/api/@wtf/release-trains/paths/functions/gitFilesOf.md +1 -1
- package/api/@wtf/release-trains/paths/functions/overlapError.md +1 -1
- package/api/@wtf/release-trains/paths/functions/trainOfPath.md +1 -1
- package/api/@wtf/release-trains/paths/functions/trainsOfCommit.md +1 -1
- package/api/@wtf/release-trains/paths/functions/trainsOfPath.md +1 -1
- package/api/@wtf/release-trains/paths/type-aliases/FilesOf.md +1 -1
- package/api/@wtf/release-trains/schema/interfaces/ConfigPart.md +6 -6
- package/api/@wtf/release-trains/schema/interfaces/RootOptions.md +7 -7
- package/api/@wtf/release-trains/schema/type-aliases/DependencyRule.md +1 -1
- package/api/@wtf/release-trains/schema/variables/DEPENDENCY_RULES.md +1 -1
- package/api/@wtf/release-trains/schema/variables/TAG_FORMAT_PATTERN.md +1 -1
- package/api/@wtf/release-trains/schema/variables/TRAIN_NAME_PATTERN.md +1 -1
- package/api/@wtf/release-trains/schema/variables/configSchema.md +1 -1
- package/api/@wtf/release-trains/schema/variables/jsonSchema.md +1 -1
- package/api/@wtf/release-trains/schema/variables/rootOptionsSchema.md +1 -1
- package/api/@wtf/release-trains/schema/variables/trainSchema.md +1 -1
- package/api/@wtf/release-trains/schema/variables/trainsSchema.md +1 -1
- package/api/@wtf/release-trains/trains/functions/changelogOf.md +1 -1
- package/api/@wtf/release-trains/trains/functions/matchersOf.md +1 -1
- package/api/@wtf/release-trains/trains/functions/overlapErrors.md +1 -1
- package/api/@wtf/release-trains/trains/functions/selectTrain.md +1 -1
- package/api/@wtf/release-trains/trains/functions/tagFormatOf.md +1 -1
- package/api/@wtf/release-trains/trains/functions/trainHeadedNotes.md +1 -1
- package/api/@wtf/release-trains/trains/functions/trainOfRun.md +1 -1
- package/api/@wtf/release-trains/trains/functions/trainOfTag.md +1 -1
- package/api/@wtf/release-trains/trains/functions/trainsErrors.md +1 -1
- package/api/@wtf/release-trains/trains/functions/trainsOfOptions.md +1 -1
- package/api/@wtf/release-trains/trains/variables/TRAIN_VARIABLE.md +1 -1
- package/api/@wtf/release-trains/trains/variables/VERSION.md +1 -1
- package/api/@wtf/release-trains/type-aliases/BranchSpec.md +1 -1
- package/api/@wtf/release-trains/type-aliases/Trains.md +1 -1
- package/api/@wtf/release-trains/verify/functions/unreleasedDependencies.md +1 -1
- package/api/@wtf/release-trains/verify/functions/verifyTrain.md +1 -1
- package/api/@wtf/release-trains/verify/interfaces/UnreleasedDependencies.md +10 -10
- package/api/@wtf/release-trains/verify/interfaces/VerifiedTrain.md +5 -5
- package/api/@wtf/release-trains/verify/interfaces/VerifyRelease.md +8 -8
- package/api/@wtf/release-validate/errors/classes/ValidateError.md +5 -5
- package/api/@wtf/release-validate/errors/type-aliases/ValidateErrorCode.md +1 -1
- package/api/@wtf/release-validate/errors/variables/VALIDATE_ERRORS.md +1 -1
- package/api/@wtf/release-validate/interfaces/ConfigIssue.md +4 -4
- package/api/@wtf/release-validate/json-schema/functions/fromJsonSchema.md +1 -1
- package/api/@wtf/release-validate/json-schema/functions/pathOfPointer.md +1 -1
- package/api/@wtf/release-validate/json-schema/interfaces/JsonSchemaError.md +3 -3
- package/api/@wtf/release-validate/json-schema/interfaces/JsonSchemaValidator.md +3 -3
- package/api/@wtf/release-validate/validate/functions/configErrors.md +1 -1
- package/api/@wtf/release-validate/validate/functions/isStandardSchema.md +1 -1
- package/api/@wtf/release-validate/validate/functions/pathText.md +1 -1
- package/api/@wtf/release-validate/validate/functions/validateConfig.md +1 -1
- package/api/@wtf/semantic-release-cargo/functions/indexLookup.md +1 -1
- package/api/@wtf/semantic-release-cargo/functions/prepare.md +1 -1
- package/api/@wtf/semantic-release-cargo/functions/publish.md +1 -1
- package/api/@wtf/semantic-release-cargo/functions/verifyConditions.md +1 -1
- package/api/@wtf/semantic-release-cargo/interfaces/CargoPluginOptions.md +12 -12
- package/api/@wtf/semantic-release-cargo/interfaces/CargoRelease.md +3 -3
- package/api/@wtf/semantic-release-cargo/schema/type-aliases/CargoOptions.md +1 -1
- package/api/@wtf/semantic-release-cargo/schema/variables/cargoOptionsSchema.md +1 -1
- package/api/@wtf/semantic-release-cargo/schema/variables/cargoSchema.md +1 -1
- package/api/@wtf/semantic-release-cargo/schema/variables/configSchema.md +1 -1
- package/api/@wtf/semantic-release-cargo/schema/variables/jsonSchema.md +1 -1
- package/api/@wtf/semantic-release-cargo/variables/default.md +1 -1
- package/api/@wtf/semantic-release-go/functions/prepare.md +1 -1
- package/api/@wtf/semantic-release-go/functions/publish.md +1 -1
- package/api/@wtf/semantic-release-go/functions/verifyConditions.md +1 -1
- package/api/@wtf/semantic-release-go/functions/verifyRelease.md +1 -1
- package/api/@wtf/semantic-release-go/interfaces/GoPluginOptions.md +8 -8
- package/api/@wtf/semantic-release-go/interfaces/GoRelease.md +3 -3
- package/api/@wtf/semantic-release-go/schema/type-aliases/GoOptions.md +1 -1
- package/api/@wtf/semantic-release-go/schema/variables/configSchema.md +1 -1
- package/api/@wtf/semantic-release-go/schema/variables/goOptionsSchema.md +1 -1
- package/api/@wtf/semantic-release-go/schema/variables/goSchema.md +1 -1
- package/api/@wtf/semantic-release-go/schema/variables/jsonSchema.md +1 -1
- package/api/@wtf/semantic-release-go/variables/default.md +1 -1
- package/api/@wtf/semantic-release-maven/functions/pomLookup.md +1 -1
- package/api/@wtf/semantic-release-maven/functions/prepare.md +1 -1
- package/api/@wtf/semantic-release-maven/functions/publish.md +1 -1
- package/api/@wtf/semantic-release-maven/functions/verifyConditions.md +1 -1
- package/api/@wtf/semantic-release-maven/interfaces/LookupAuth.md +3 -3
- package/api/@wtf/semantic-release-maven/interfaces/MavenPluginOptions.md +12 -12
- package/api/@wtf/semantic-release-maven/interfaces/MavenRelease.md +2 -2
- package/api/@wtf/semantic-release-maven/schema/type-aliases/MavenOptions.md +1 -1
- package/api/@wtf/semantic-release-maven/schema/variables/configSchema.md +1 -1
- package/api/@wtf/semantic-release-maven/schema/variables/jsonSchema.md +1 -1
- package/api/@wtf/semantic-release-maven/schema/variables/mavenOptionsSchema.md +1 -1
- package/api/@wtf/semantic-release-maven/schema/variables/mavenSchema.md +1 -1
- package/api/@wtf/semantic-release-maven/variables/default.md +1 -1
- package/api/@wtf/semantic-release-npm/functions/addChannel.md +1 -1
- package/api/@wtf/semantic-release-npm/functions/fail.md +1 -1
- package/api/@wtf/semantic-release-npm/functions/loadPublisher.md +1 -1
- package/api/@wtf/semantic-release-npm/functions/prepare.md +1 -1
- package/api/@wtf/semantic-release-npm/functions/publish.md +1 -1
- package/api/@wtf/semantic-release-npm/functions/verifyConditions.md +1 -1
- package/api/@wtf/semantic-release-npm/interfaces/PublishPluginOptions.md +18 -18
- package/api/@wtf/semantic-release-npm/interfaces/PublishedRelease.md +4 -4
- package/api/@wtf/semantic-release-npm/interfaces/SmokeOption.md +2 -2
- package/api/@wtf/semantic-release-npm/schema/type-aliases/PublishOptions.md +1 -1
- package/api/@wtf/semantic-release-npm/schema/variables/configSchema.md +1 -1
- package/api/@wtf/semantic-release-npm/schema/variables/jsonSchema.md +1 -1
- package/api/@wtf/semantic-release-npm/schema/variables/publishOptionsSchema.md +1 -1
- package/api/@wtf/semantic-release-npm/schema/variables/publishSchema.md +1 -1
- package/api/@wtf/semantic-release-npm/type-aliases/PublisherSpec.md +1 -1
- package/api/@wtf/semantic-release-npm/variables/default.md +1 -1
- package/api/@wtf/semantic-release-replace/functions/functionOf.md +1 -1
- package/api/@wtf/semantic-release-replace/functions/prepare.md +1 -1
- package/api/@wtf/semantic-release-replace/functions/templatesOf.md +1 -1
- package/api/@wtf/semantic-release-replace/functions/verifyConditions.md +1 -1
- package/api/@wtf/semantic-release-replace/interfaces/ReplacePluginOptions.md +5 -5
- package/api/@wtf/semantic-release-replace/schema/interfaces/ModuleExport.md +3 -3
- package/api/@wtf/semantic-release-replace/schema/interfaces/ReplaceOptions.md +4 -4
- package/api/@wtf/semantic-release-replace/schema/interfaces/RootTemplates.md +2 -2
- package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginReplacement.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginReplacementSpec.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginTemplates.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginTo.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/type-aliases/TemplateSet.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/type-aliases/TemplatesOption.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/variables/configSchema.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/variables/exportedSetSchema.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/variables/jsonSchema.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/variables/replaceOptionsSchema.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/variables/replacementSchema.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/variables/rootTemplatesSchema.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/variables/templateSchema.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/variables/templatesSchema.md +1 -1
- package/api/@wtf/semantic-release-replace/variables/default.md +1 -1
- package/api/@wtf/semantic-release-trains/config/functions/skipPlugins.md +1 -1
- package/api/@wtf/semantic-release-trains/config/functions/stepId.md +1 -1
- package/api/@wtf/semantic-release-trains/config/functions/trainAssets.md +1 -1
- package/api/@wtf/semantic-release-trains/config/functions/trainChangelog.md +1 -1
- package/api/@wtf/semantic-release-trains/config/functions/trainOfTag.md +1 -1
- package/api/@wtf/semantic-release-trains/config/functions/trainTagFormat.md +1 -1
- package/api/@wtf/semantic-release-trains/config/interfaces/AssetsOptions.md +4 -4
- package/api/@wtf/semantic-release-trains/config/interfaces/SkipOptions.md +3 -3
- package/api/@wtf/semantic-release-trains/config/variables/BRANCHES.md +1 -1
- package/api/@wtf/semantic-release-trains/config/variables/BREAKING.md +1 -1
- package/api/@wtf/semantic-release-trains/config/variables/TITLE.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/functions/skipRuleOf.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/functions/skips.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/functions/trainOptionsOf.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/interfaces/SkipContext.md +5 -5
- package/api/@wtf/semantic-release-trains/defaults/type-aliases/SkipCheck.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/type-aliases/TrainOptions.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/variables/SKIP_RULES.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/variables/TRAIN_OPTIONS.md +4 -3
- package/api/@wtf/semantic-release-trains/defaults/variables/TRAIN_SKIP.md +1 -1
- package/api/@wtf/semantic-release-trains/errors/type-aliases/PluginErrorCode.md +1 -1
- package/api/@wtf/semantic-release-trains/errors/variables/PLUGIN_ERRORS.md +1 -1
- package/api/@wtf/semantic-release-trains/info/functions/decideTrain.md +1 -1
- package/api/@wtf/semantic-release-trains/info/functions/dotenvOf.md +1 -1
- package/api/@wtf/semantic-release-trains/info/functions/infoOf.md +1 -1
- package/api/@wtf/semantic-release-trains/info/interfaces/DecideRun.md +4 -4
- package/api/@wtf/semantic-release-trains/info/interfaces/InfoRun.md +8 -8
- package/api/@wtf/semantic-release-trains/info/interfaces/TrainDecision.md +5 -5
- package/api/@wtf/semantic-release-trains/info/interfaces/TrainInfo.md +5 -5
- package/api/@wtf/semantic-release-trains/interfaces/TrainsEntryOptions.md +5 -5
- package/api/@wtf/semantic-release-trains/interfaces/TrainsOptions.md +7 -7
- package/api/@wtf/semantic-release-trains/schema/variables/configSchema.md +1 -1
- package/api/@wtf/semantic-release-trains/schema/variables/jsonSchema.md +1 -1
- package/api/@wtf/semantic-release-trains/schema/variables/pluginSpecSchema.md +1 -1
- package/api/@wtf/semantic-release-trains/schema/variables/skipRuleSchema.md +1 -1
- package/api/@wtf/semantic-release-trains/schema/variables/trainsEntrySchema.md +1 -1
- package/api/@wtf/semantic-release-trains/schema/variables/trainsPluginSchema.md +1 -1
- package/api/@wtf/semantic-release-trains/type-aliases/PluginSpec.md +1 -1
- package/api/@wtf/semantic-release-trains/type-aliases/TrainsPluginOptions.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/addChannel.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/analyzeCommits.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/default.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/fail.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/generateNotes.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/prepare.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/publish.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/success.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/verifyConditions.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/verifyRelease.md +1 -1
- package/api/@wtf/semantic-release-validate/functions/configOf.md +1 -1
- package/api/@wtf/semantic-release-validate/functions/loadSchema.md +1 -1
- package/api/@wtf/semantic-release-validate/functions/verifyConditions.md +1 -1
- package/api/@wtf/semantic-release-validate/interfaces/ValidatePluginOptions.md +2 -2
- package/api/@wtf/semantic-release-validate/schema/interfaces/Validator.md +2 -2
- package/api/@wtf/semantic-release-validate/schema/variables/configSchema.md +1 -1
- package/api/@wtf/semantic-release-validate/schema/variables/jsonSchema.md +1 -1
- package/api/@wtf/semantic-release-validate/schema/variables/validateOptionsSchema.md +1 -1
- package/api/@wtf/semantic-release-validate/variables/default.md +1 -1
- package/guides/changelogs.md +39 -28
- package/guides/ci-recipes.md +393 -271
- package/guides/configuring-trains.md +291 -203
- package/guides/dependency-rules.md +171 -113
- package/guides/ecosystems.md +222 -156
- package/guides/getting-started.md +135 -69
- package/guides/publishing-crates.md +208 -143
- package/guides/publishing-go-modules.md +170 -110
- package/guides/publishing-maven.md +197 -123
- package/guides/publishing.md +278 -191
- package/guides/system.md +50 -34
- package/guides/troubleshooting.md +358 -92
- package/guides/validating-a-config.md +68 -49
- package/package.json +3 -3
package/guides/publishing.md
CHANGED
|
@@ -1,92 +1,24 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
The stock `@semantic-release/npm` publishes one package in a run. A train often has several.
|
|
4
|
-
`@wtf/semantic-release-npm` publishes every npm package of the train in one run, in the order of
|
|
5
|
-
their dependencies, by `@wtf/release-npm`, the library, and writes no file of the repo. The library
|
|
6
|
-
is the ecosystem of npm too, its default export, which the plugin exports at `./ecosystem` and a
|
|
7
|
-
config names in `ecosystems` as `'@wtf/semantic-release-npm/ecosystem'`, so the trains read the packages of each `package.json` by it. The version of a release is its tag's: each `package.json` in git keeps a placeholder, as
|
|
8
|
-
`0.0.0-development`, and the release commit holds no version.
|
|
9
|
-
|
|
10
|
-
1. **The manifests**, `resolveManifests`. The packages of the train that publish, every package under
|
|
11
|
-
its paths that is not private, found as the package manager finds them, by the globs of
|
|
12
|
-
`pnpm-workspace.yaml` or of the `workspaces` of `package.json`, and ordered: each after the
|
|
13
|
-
packages that it runs with. `first` and `last` pin a package to an end. Each manifest as it
|
|
14
|
-
publishes: the version of the release; each `workspace:` range of a package of the train
|
|
15
|
-
resolved to that version, as pnpm resolves `workspace:*`, `workspace:^` and `workspace:~`; of a
|
|
16
|
-
package of another train, to the last release of that train, by its tags (`releasedVersions` of
|
|
17
|
-
`@wtf/release-trains/packages`, and `resolveSpecifier` of `@wtf/release-npm/manifests`, which
|
|
18
|
-
the cascade of a train reads too); each devDependency by
|
|
19
|
-
a `workspace:` range of a package that no train releases, as a private package of shared
|
|
20
|
-
configs, or of a train with no release yet, dropped, as no consumer installs it; each export of the source stripped (the `source`
|
|
21
|
-
condition, or a `.ts` target). Then each checked. It writes nothing.
|
|
22
|
-
2. **The tarballs**, `packTrain`. Each package copied, but its `node_modules`, into a folder of the
|
|
23
|
-
system's temporary files, its manifest written into the copy, and each packed there, all before
|
|
24
|
-
the first publish. A fault stops the run before anything is on the registry.
|
|
25
|
-
3. **The publish**, `publishTrain`. Each package under the dist-tag of the channel of the release
|
|
26
|
-
(`latest`, or `beta` of `2.1.0-beta.3`, or `prerelease` of `2.1.0-0`; `release-1.x` of a channel
|
|
27
|
-
npm takes for a range, as `1.x` of a branch of maintenance), with provenance where the CI gives
|
|
28
|
-
an ID token. Each version that the registry already has is skipped. Before the first, the
|
|
29
|
-
registry is asked of each (`publishedOf`): a package it has not, whose dist-tag points above
|
|
30
|
-
the release, fails the run, and nothing is published (`EPUBLISHBEHIND`), as it would move the
|
|
31
|
-
dist-tag back. A prerelease on `latest`, where npm points it at the first version of a package,
|
|
32
|
-
is not above a release. A package named in `aside`, as one that joined the train at a higher
|
|
33
|
-
version of its own, is published under the dist-tag of its major's line instead,
|
|
34
|
-
`release-<major>.x` of `latest`, and its dist-tag stays; unless that dist-tag points above the
|
|
35
|
-
release too. A release on a channel of a line already, as `release-1.x` or `release-1.2.x` of
|
|
36
|
-
maintenance, puts nothing aside.
|
|
37
|
-
|
|
38
|
-
The plugin takes the steps of `@semantic-release/npm`:
|
|
1
|
+
# Publish npm packages
|
|
39
2
|
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
tarballs but of a `tarballDir` it is given, which keeps them. A run whose `publish` finds nothing
|
|
49
|
-
packed of its train and version, in the same process, resolves and packs again.
|
|
50
|
-
- `addChannel` moves a release that is published already to the dist-tag of its new channel, by
|
|
51
|
-
`tagTrain`, as semantic-release asks when a branch of one channel is merged into the branch of
|
|
52
|
-
another: each package of the train the registry has at the version, by `npm dist-tag add` of
|
|
53
|
-
either publisher built in. npm moves a dist-tag by the token of its config alone: its trusted
|
|
54
|
-
publishing covers `npm publish` and no other command, so a release from a branch of a channel
|
|
55
|
-
needs `NPM_TOKEN` too. A publisher of your own moves dist-tags by its `tag` step; one without it
|
|
56
|
-
moves none. semantic-release records the new channel before it asks for `addChannel`, so a run
|
|
57
|
-
again moves nothing: move a dist-tag that failed by hand, as its error says.
|
|
58
|
-
|
|
59
|
-
The release of the host is not this plugin's. List `@semantic-release/gitlab` or
|
|
60
|
-
`@semantic-release/github` after it.
|
|
3
|
+
`@wtf/semantic-release-npm` publishes every npm package in a train in one run. Use it in place of
|
|
4
|
+
the stock `@semantic-release/npm`, which publishes one package per run, when a train holds several
|
|
5
|
+
packages. The plugin publishes the packages in dependency order and does not write any file in your
|
|
6
|
+
repo.
|
|
7
|
+
|
|
8
|
+
The version comes from the tag. Each `package.json` in git keeps a placeholder version, such as
|
|
9
|
+
`0.0.0-development`, and the release commit holds no version. The plugin writes the version into a
|
|
10
|
+
copy of each package when it packs it.
|
|
61
11
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
[the pipeline of a tag](ci-recipes.md#the-pipeline-of-a-tag)). Delete no tag and run no release of
|
|
68
|
-
the branch again: of a release whose config names no publish plugin, that run commits a second
|
|
69
|
-
release commit, of the same version, its changelog written again by the stock
|
|
70
|
-
`@semantic-release/changelog`, and tags it, a commit the pipeline of the first tag did not build.
|
|
71
|
-
|
|
72
|
-
Of a publish in the release run itself, as below, semantic-release pushes the release commit of
|
|
73
|
-
`@semantic-release/git`, and the tag, before it runs `publish`, as it does for every plugin. A
|
|
74
|
-
publish that fails part way leaves both, and a run again
|
|
75
|
-
finds that version released and does nothing. To finish it, delete the tag, on the remote and in the
|
|
76
|
-
clone that runs again (a tag of the clone is a release done too), and run the release again at the release commit, the tip of the branch: semantic-release releases nothing
|
|
77
|
-
of a commit behind the tip. The run computes the same version, tags the release commit, skips each
|
|
78
|
-
package that the registry already has, publishes the rest, and makes the release of the host. A
|
|
79
|
-
changelog plugin the trains plugin wraps finds the section of the release in the changelog already
|
|
80
|
-
and skips its `prepare`, so `@semantic-release/git` finds nothing to commit. Listed unwrapped,
|
|
81
|
-
`@semantic-release/changelog` writes the section again: wrap it, or remove the second section
|
|
82
|
-
before the run.
|
|
83
|
-
|
|
84
|
-
A retry of a job that runs at the commit of its pipeline, as a job of to-be-continuous does, runs
|
|
85
|
-
behind the release commit. Check the tip out first, where it is the pipeline's commit with release
|
|
86
|
-
commits alone on top: see [CI recipes](ci-recipes.md#gitlab-ci).
|
|
12
|
+
The plugin runs on a library, `@wtf/release-npm`. The library's default export is the npm
|
|
13
|
+
ecosystem, and the plugin exports the same ecosystem at `./ecosystem`. Add
|
|
14
|
+
`'@wtf/semantic-release-npm/ecosystem'` to `ecosystems` in your config so that the trains can find
|
|
15
|
+
the packages in each `package.json`. [How ecosystems work](ecosystems.md) explains what an
|
|
16
|
+
ecosystem does.
|
|
87
17
|
|
|
88
18
|
## Turn it on
|
|
89
19
|
|
|
20
|
+
Add the plugin to your config, after the trains plugin:
|
|
21
|
+
|
|
90
22
|
```js train=trains
|
|
91
23
|
// release.config.mjs
|
|
92
24
|
import { trainTagFormat } from '@wtf/semantic-release-trains/config'
|
|
@@ -109,63 +41,225 @@ export default {
|
|
|
109
41
|
}
|
|
110
42
|
```
|
|
111
43
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
|
116
|
-
|
|
|
117
|
-
| `
|
|
118
|
-
| `
|
|
119
|
-
| `
|
|
120
|
-
| `
|
|
121
|
-
| `
|
|
122
|
-
| `
|
|
123
|
-
| `
|
|
124
|
-
| `
|
|
125
|
-
| `
|
|
126
|
-
| `
|
|
127
|
-
|
|
128
|
-
`
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
44
|
+
The plugin does not create the release on GitLab or GitHub. List `@semantic-release/gitlab` or
|
|
45
|
+
`@semantic-release/github` after it.
|
|
46
|
+
|
|
47
|
+
| Option | Default | What it does |
|
|
48
|
+
| ------------ | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
49
|
+
| `publisher` | `npm` | The tool that publishes: `npm`, `pnpm`, the path of a module, or a package name. See [Publishers](#publishers). |
|
|
50
|
+
| `access` | each package's `publishConfig.access` | `public` or `restricted`. |
|
|
51
|
+
| `provenance` | `auto` | Whether to publish with provenance: `auto` (when the CI provides an ID token), `true` or `false`. |
|
|
52
|
+
| `registry` | each package's `publishConfig.registry` | The registry to publish to. |
|
|
53
|
+
| `first` | none | The folder of the package to publish first. |
|
|
54
|
+
| `last` | none | The folder of the package to publish last. |
|
|
55
|
+
| `conditions` | `['source']` | The export conditions that point at source files. No tarball ships them. |
|
|
56
|
+
| `check` | `true` | Check the packages before the first publish. See [What the check catches](#what-the-check-catches). |
|
|
57
|
+
| `aside` | none | Package names to publish under their major's line when their dist-tag points above the release: `release-<major>.x` in place of `latest`, `<dist-tag>-<major>.x` in place of another. |
|
|
58
|
+
| `tarballDir` | a folder in the system's temporary files | Where to keep the tarballs after the release, for example as assets of the GitLab or GitHub release. Add a folder in the repo to `.gitignore`. A CI job starts with it empty. |
|
|
59
|
+
| `pack` | none | Folders or globs of private packages in the train. The plugin packs them into `tarballDir` beside the others and never publishes them. Use it for a demo or another release asset. |
|
|
60
|
+
| `distTag` | the channel's | One dist-tag for every package, in place of the channel's, for a one-off release. An empty string means no override. |
|
|
61
|
+
| `smoke` | `false` | `true`, or `{ forbid }` with globs that no tarball may hold. Installs each packed package as a consumer would, in `prepare`, before the tag. See [Smoke-test the packages](#smoke-test-the-packages-before-the-tag). |
|
|
62
|
+
|
|
63
|
+
### Provenance
|
|
64
|
+
|
|
65
|
+
With `provenance: 'auto'`, the plugin looks for an ID token that npm can sign the provenance with:
|
|
66
|
+
|
|
67
|
+
- `SIGSTORE_ID_TOKEN` on GitLab, with the audience `sigstore`;
|
|
68
|
+
- the OIDC token of GitHub Actions.
|
|
69
|
+
|
|
70
|
+
`NPM_ID_TOKEN`, which npm's trusted publishing uses on GitLab, does not sign anything. Give a GitLab
|
|
71
|
+
job both tokens, or npm fails `--provenance`.
|
|
72
|
+
|
|
73
|
+
On a self-hosted runner, the plugin publishes without provenance. It detects one when
|
|
74
|
+
`CI_RUNNER_ENVIRONMENT` (GitLab) or `RUNNER_ENVIRONMENT` (GitHub) is `self-hosted`. npm refuses
|
|
75
|
+
provenance and trusted publishing from such a runner, so publish with an npm token there.
|
|
76
|
+
|
|
77
|
+
### Packages in `pack`, and `distTag` from a variable
|
|
78
|
+
|
|
79
|
+
The plugin packs a package in `pack` with its manifest resolved as for a publish. The manifest gets
|
|
80
|
+
the release's version, and each `workspace:` range on a private package of the workspace resolves
|
|
81
|
+
to that version.
|
|
82
|
+
|
|
83
|
+
You can set `distTag` from an environment variable that a job sets, as
|
|
84
|
+
`distTag: process.env.NPM_DIST_TAG`. When the variable is unset, the value is `undefined`, which
|
|
85
|
+
JSON leaves out, and the channel's dist-tag applies.
|
|
86
|
+
|
|
87
|
+
## What a release does
|
|
88
|
+
|
|
89
|
+
A release runs three steps. Each step is a function of `@wtf/release-npm/release`.
|
|
90
|
+
|
|
91
|
+
1. **Resolve the manifests** (`resolveManifests`). The plugin finds the train's packages that
|
|
92
|
+
publish: every package under the train's `paths` that is not private. It finds them the way the
|
|
93
|
+
package manager does, by the globs in `pnpm-workspace.yaml` or in the `workspaces` field of
|
|
94
|
+
`package.json`. It orders them so that each package comes after the packages it runs with
|
|
95
|
+
(`dependencies`, `peerDependencies` and `optionalDependencies`). `first` and `last` pin a package
|
|
96
|
+
to either end. Then it builds each manifest as it will publish:
|
|
97
|
+
- The version is the release's version.
|
|
98
|
+
- Each `workspace:` range on a package in the same train resolves to that version, the way pnpm
|
|
99
|
+
resolves `workspace:*`, `workspace:^` and `workspace:~`.
|
|
100
|
+
- Each `workspace:` range on a package in another train resolves to that train's last release,
|
|
101
|
+
which the plugin reads from the tags. `releasedVersions` from `@wtf/release-trains/packages`
|
|
102
|
+
and `resolveSpecifier` from `@wtf/release-npm/manifests` do this, and a train's cascade reads
|
|
103
|
+
the same functions.
|
|
104
|
+
- The plugin drops a devDependency whose `workspace:` range points at a package that no train
|
|
105
|
+
releases, such as a private package of shared configs, or at a train with no release yet. No
|
|
106
|
+
consumer installs a devDependency.
|
|
107
|
+
- The plugin strips each export that points at source: the `source` condition, or a `.ts`
|
|
108
|
+
target.
|
|
109
|
+
|
|
110
|
+
Then it checks each manifest. This step writes nothing.
|
|
111
|
+
|
|
112
|
+
2. **Pack the tarballs** (`packTrain`). The plugin copies each package, without its `node_modules`,
|
|
113
|
+
into a folder in the system's temporary files. It writes the resolved manifest into the copy and
|
|
114
|
+
packs the copy there. It packs every package before the first publish, so a fault stops the run
|
|
115
|
+
before anything reaches the registry.
|
|
116
|
+
|
|
117
|
+
3. **Publish** (`publishTrain`). The plugin publishes each package under the dist-tag of the
|
|
118
|
+
release's channel. That is `latest`, or `beta` for `2.1.0-beta.3`, or `prerelease` for
|
|
119
|
+
`2.1.0-0`. A channel that npm would read as a range, such as `1.x` on a maintenance branch,
|
|
120
|
+
becomes `release-1.x`. The plugin adds provenance where the CI provides an ID token, and skips
|
|
121
|
+
each version that the registry already has.
|
|
122
|
+
|
|
123
|
+
### When a dist-tag would move back
|
|
124
|
+
|
|
125
|
+
Before the first publish, the plugin asks the registry about every package (`publishedOf`). Suppose
|
|
126
|
+
the registry does not have a package at the release's version, and the package's dist-tag points
|
|
127
|
+
above the release. Publishing would move the dist-tag back, so the run fails with `EPUBLISHBEHIND`
|
|
128
|
+
and publishes nothing. A prerelease on `latest` does not count as above a release: npm points
|
|
129
|
+
`latest` at the first version of a package, even when that version is a prerelease.
|
|
130
|
+
|
|
131
|
+
A package can join a train at a higher version of its own. Name such a package in `aside`. The
|
|
132
|
+
plugin then publishes it under the dist-tag of its major's line, `release-<major>.x` in place of
|
|
133
|
+
`latest`, and leaves its dist-tag where it is. If the line's dist-tag also points above the
|
|
134
|
+
release, the run fails too. A release whose channel is a line already, such as `release-1.x` or
|
|
135
|
+
`release-1.2.x` on a maintenance branch, puts nothing aside.
|
|
136
|
+
|
|
137
|
+
### Which semantic-release step does what
|
|
138
|
+
|
|
139
|
+
The plugin implements the same steps as `@semantic-release/npm`:
|
|
140
|
+
|
|
141
|
+
- `verifyConditions` checks the publisher and the packages as they are in the repo.
|
|
142
|
+
- `prepare` runs steps 1 and 2 and asks the registry, all before the tag. These faults fail the run
|
|
143
|
+
here:
|
|
144
|
+
- a range that no release satisfies (`EDEPENDENCYUNSATISFIED`);
|
|
145
|
+
- a dependency on a train with no release (`EDEPENDENCYNORELEASE`);
|
|
146
|
+
- a dependency on a package of no train (`EDEPENDENCYNOTRAIN`);
|
|
147
|
+
- a package that cannot be packed;
|
|
148
|
+
- a release that would move a dist-tag back (`EPUBLISHBEHIND`).
|
|
149
|
+
- `publish` runs step 3 with what `prepare` packed, after the tag is pushed. It returns the release
|
|
150
|
+
to semantic-release as the stock plugin does: the publisher's name and its packages, the page of
|
|
151
|
+
the first package, and the channel. Then it removes the copies and the tarballs. With
|
|
152
|
+
`tarballDir`, it keeps the tarballs. If `publish` finds nothing packed for its train and version
|
|
153
|
+
in the same process, it resolves and packs again.
|
|
154
|
+
- `addChannel` moves a published release to the dist-tag of its new channel, by `tagTrain`.
|
|
155
|
+
semantic-release asks for this when you merge a branch of one channel into the branch of another.
|
|
156
|
+
The plugin runs `npm dist-tag add` for each package of the train that the registry has at the
|
|
157
|
+
version, with either built-in publisher.
|
|
158
|
+
|
|
159
|
+
npm moves a dist-tag only with the token in its config. Its trusted publishing covers
|
|
160
|
+
`npm publish` and no other command, so a release from a channel branch needs `NPM_TOKEN` too. A
|
|
161
|
+
publisher of your own moves dist-tags with its `tag` step; a publisher without one moves none.
|
|
162
|
+
semantic-release records the new channel before it calls `addChannel`, so running again moves
|
|
163
|
+
nothing. If moving a dist-tag fails, move it by hand, as the error says.
|
|
164
|
+
|
|
165
|
+
## When packages depend on other trains
|
|
166
|
+
|
|
167
|
+
A package can depend on a package in another train. The release then writes that train's last
|
|
168
|
+
release into the range, as step 1 describes. Before the tag, the trains check that the other train
|
|
169
|
+
has released, at a version that the range takes. They also decide the order of the trains, and when
|
|
170
|
+
a train must release again because another train left its range behind. See
|
|
171
|
+
[Trains that depend on other trains](dependency-rules.md).
|
|
172
|
+
|
|
173
|
+
## Smoke-test the packages before the tag
|
|
174
|
+
|
|
175
|
+
A workspace and its tests resolve each package from its source. They do not notice a file that the
|
|
176
|
+
tarball misses, or an export that imports a peer the consumer has not installed. With `smoke`, the
|
|
177
|
+
plugin tries each package it packed the way a consumer installs it, in `prepare`, before the tag. It
|
|
178
|
+
tries the private packages of `pack` too. It does this with `smokePacked` from
|
|
179
|
+
`@wtf/release-npm/smoke`, and it fails the run with `EPUBLISHSMOKE`, listing every fault it finds:
|
|
180
|
+
|
|
181
|
+
- **In the tarball:** an entry of `files` that the tarball does not hold, as when a package was
|
|
182
|
+
packed without a build; an export with a source condition; a file that matches `forbid`, such as
|
|
183
|
+
`**/*.tsbuildinfo`.
|
|
184
|
+
- **In the install:** npm installs the package in a project of its own in the system's temporary
|
|
185
|
+
files. Every other packed package installs from its tarball through npm's `overrides`, so npm does
|
|
186
|
+
not ask the registry for any of them.
|
|
187
|
+
- **In the imports:** the plugin imports each entry of `exports`, except `./package.json` and
|
|
188
|
+
patterns. It reports a `SyntaxError`, a module not found that is neither an optional peer in the
|
|
189
|
+
manifest nor a bundler's own specifier, and an export that a packed package does not export. Any
|
|
190
|
+
other error from an import is the module's own and does not fail the smoke test. A package with no
|
|
191
|
+
`exports` and no `main`, such as a demo of static files, has nothing to import. The plugin only
|
|
192
|
+
installs it.
|
|
193
|
+
|
|
194
|
+
The smoke test needs `tar`, `npm` and `node` where it runs. A job that runs no release, such as a
|
|
195
|
+
merge request job, can run it for every train with the plugin's bin: see
|
|
196
|
+
[Smoke-test packages in a merge request](ci-recipes.md#smoke-test-packages-in-a-merge-request).
|
|
197
|
+
Some pipelines run the bin in a job before the publish job, as the
|
|
198
|
+
[tag pipeline](ci-recipes.md#build-smoke-test-and-publish-in-a-tag-pipeline) for to-be-continuous
|
|
199
|
+
does. Such a pipeline turns `smoke` off in the tag's run, with a variable that the publish job sets,
|
|
200
|
+
so that the job holding the ID tokens only publishes.
|
|
201
|
+
|
|
202
|
+
## What the check catches
|
|
203
|
+
|
|
204
|
+
Before the first publish, the run fails with `EPUBLISHCHECK` when a package of the train:
|
|
205
|
+
|
|
206
|
+
- is scoped and does not publish as public (`publishConfig.access`), which npm refuses;
|
|
207
|
+
- names no `license`, or no `repository` with the `directory` of its folder;
|
|
208
|
+
- runs with a private package of the workspace, which never publishes;
|
|
209
|
+
- cannot be ordered, because of a pin that cannot hold or a cycle;
|
|
210
|
+
- still has a `workspace:` range, an export with the `source` condition, or a `.ts` export after
|
|
211
|
+
the plugin resolved its manifest.
|
|
212
|
+
|
|
213
|
+
## Registries and credentials
|
|
214
|
+
|
|
215
|
+
The default `npm` publisher publishes to any registry that speaks npm's protocol. npm handles
|
|
216
|
+
provenance and trusted publishing itself, with the CI's ID token. Without an ID token, npm uses the
|
|
217
|
+
token in its config, such as `//registry.npmjs.org/:_authToken=${NPM_TOKEN}` in an `.npmrc`. To
|
|
218
|
+
publish with another tool, choose another [publisher](#publishers). The recipes at the end show the
|
|
219
|
+
GitLab package registry and JSR.
|
|
220
|
+
|
|
221
|
+
## When a publish fails
|
|
222
|
+
|
|
223
|
+
How you finish a failed publish depends on where the publish ran.
|
|
224
|
+
|
|
225
|
+
### A publish in the tag's pipeline
|
|
226
|
+
|
|
227
|
+
If `semantic-release-trains-tag` publishes in the tag's pipeline, retry the publish job and keep the
|
|
228
|
+
tag. The retry packs the tagged commit's build again, skips each package the registry has, and
|
|
229
|
+
publishes the rest. See
|
|
230
|
+
[Build, smoke-test and publish in a tag pipeline](ci-recipes.md#build-smoke-test-and-publish-in-a-tag-pipeline).
|
|
231
|
+
|
|
232
|
+
Do not delete the tag, and do not run the branch release again. When the branch config names no
|
|
233
|
+
publish plugin, as in this setup, that run makes a second release commit with the same version. The
|
|
234
|
+
stock `@semantic-release/changelog` writes the changelog again, and the run tags that commit. The
|
|
235
|
+
first tag's pipeline never built that commit.
|
|
236
|
+
|
|
237
|
+
### A publish in the release run
|
|
238
|
+
|
|
239
|
+
If the plugin publishes in the release run itself, as in the config above, semantic-release pushes
|
|
240
|
+
the release commit of `@semantic-release/git` and the tag before it runs `publish`. It does this for
|
|
241
|
+
every plugin. A publish that fails part way leaves both behind, and a new run finds that version
|
|
242
|
+
released and does nothing. To finish the release:
|
|
243
|
+
|
|
244
|
+
1. Delete the tag on the remote and in the clone that runs again. A tag in the clone also counts as
|
|
245
|
+
a finished release.
|
|
246
|
+
2. Run the release again at the release commit, the tip of the branch. semantic-release releases
|
|
247
|
+
nothing from a commit behind the tip.
|
|
248
|
+
|
|
249
|
+
The run computes the same version, tags the release commit, skips each package the registry already
|
|
250
|
+
has, publishes the rest, and creates the GitLab or GitHub release. A changelog plugin that the
|
|
251
|
+
trains plugin wraps finds the release's section in the changelog and skips its `prepare`, so
|
|
252
|
+
`@semantic-release/git` finds nothing to commit. If you list `@semantic-release/changelog`
|
|
253
|
+
unwrapped, it writes the section again. Wrap it, or remove the second section before the run.
|
|
254
|
+
|
|
255
|
+
A retried job that runs at its pipeline's commit, as a to-be-continuous job does, runs behind the
|
|
256
|
+
release commit. Check out the tip first, where the tip is the pipeline's commit with only release
|
|
257
|
+
commits on top. See [Run releases in CI](ci-recipes.md#gitlab-ci).
|
|
258
|
+
|
|
259
|
+
## Use the steps as a library
|
|
260
|
+
|
|
261
|
+
The three steps are functions of `@wtf/release-npm/release` and need no release tool. Each step runs
|
|
262
|
+
on the `system` that its caller passes, as a CLI passes its own system adapted to the interface:
|
|
169
263
|
|
|
170
264
|
```ts
|
|
171
265
|
import type { System } from '@wtf/release-system/system'
|
|
@@ -187,25 +281,14 @@ export async function release(system: System, version: string) {
|
|
|
187
281
|
}
|
|
188
282
|
```
|
|
189
283
|
|
|
190
|
-
`releaseTrain` runs
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
## The check
|
|
194
|
-
|
|
195
|
-
Before the first publish, the run fails with `EPUBLISHCHECK` when a package of the train:
|
|
196
|
-
|
|
197
|
-
- is scoped, and does not publish as public (`publishConfig.access`): npm refuses it;
|
|
198
|
-
- names no `license`, or no `repository` with the `directory` of its folder;
|
|
199
|
-
- runs with a package of the workspace that is private, which never publishes;
|
|
200
|
-
- cannot be ordered: a pin that cannot hold, or a cycle;
|
|
201
|
-
- still has a `workspace:` range, an export of the `source` condition, or a `.ts` export after its
|
|
202
|
-
manifest is resolved.
|
|
284
|
+
`releaseTrain` runs all three in one call, the way a job in the tag's pipeline publishes its
|
|
285
|
+
release. See [Publish from the tag pipeline](ci-recipes.md#publish-from-the-tag-pipeline).
|
|
203
286
|
|
|
204
287
|
## Publishers
|
|
205
288
|
|
|
206
|
-
A publisher does two things: it looks a package up on the registry, and it publishes
|
|
207
|
-
`lookup` answers
|
|
208
|
-
dist-tags,
|
|
289
|
+
A publisher does two things: it looks a package up on the registry, and it publishes the package.
|
|
290
|
+
Its `lookup` answers two questions in one call: whether the registry has the version, and, if the
|
|
291
|
+
publisher reads dist-tags, which version the release's dist-tag points at (`tagged`).
|
|
209
292
|
|
|
210
293
|
```ts
|
|
211
294
|
import type { Publisher } from '@wtf/release-npm'
|
|
@@ -223,34 +306,38 @@ export const logOnly: Publisher = {
|
|
|
223
306
|
}
|
|
224
307
|
```
|
|
225
308
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
309
|
+
A publisher can also have these optional members:
|
|
310
|
+
|
|
311
|
+
- `pack`: with it, the plugin packs every package before the first publish and passes each tarball
|
|
312
|
+
as `options.tarball`.
|
|
313
|
+
- `page`: it returns a package's page, which the plugin passes to semantic-release as the release's
|
|
314
|
+
URL.
|
|
315
|
+
- `tag`: it points a dist-tag at a version the registry has, for `addChannel` and `tagTrain`.
|
|
316
|
+
Without it, a release cannot move to another channel.
|
|
317
|
+
|
|
318
|
+
The plugin does not check whether a `lookup` without `tagged` would move a dist-tag back.
|
|
319
|
+
|
|
320
|
+
The `publisher` option chooses the publisher:
|
|
321
|
+
|
|
322
|
+
- **`npm`**, the default, runs the `npm` bin:
|
|
323
|
+
- `npm view <name>@<tag> version versions dist-tags` looks a package up. If the package has no
|
|
324
|
+
such dist-tag, the publisher asks for `@<version>` instead. It asks once per release step,
|
|
325
|
+
keeps the package's versions and dist-tags in the context's `memo`, and asks again only about
|
|
326
|
+
what it changes.
|
|
327
|
+
- `npm pack --ignore-scripts` packs, because the build ran before the release.
|
|
328
|
+
- `npm publish <tarball>` publishes.
|
|
329
|
+
- `npm dist-tag add` moves a dist-tag.
|
|
330
|
+
- **`pnpm`** runs `pnpm publish <copy> --no-git-checks --ignore-scripts` on each package's copy. It
|
|
331
|
+
runs from the repo's root, or from the copy when the package has an `.npmrc` of its own. It uses
|
|
332
|
+
npm to ask the registry and to move dist-tags.
|
|
333
|
+
- **The path of a module**, such as `./release/publisher.mjs` from the repo's root, or a package
|
|
334
|
+
name. Its default export is the publisher.
|
|
335
|
+
- **A publisher object**, in a config written in JavaScript.
|
|
336
|
+
|
|
337
|
+
### Recipe: publish with yarn
|
|
338
|
+
|
|
339
|
+
yarn publishes, and npm looks each package up, as the `npm` publisher does. npm reads the same
|
|
340
|
+
registry:
|
|
254
341
|
|
|
255
342
|
```js train=trains
|
|
256
343
|
// release/yarn-publisher.mjs
|
|
@@ -277,10 +364,10 @@ export default {
|
|
|
277
364
|
}
|
|
278
365
|
```
|
|
279
366
|
|
|
280
|
-
###
|
|
367
|
+
### Recipe: publish to the GitLab package registry
|
|
281
368
|
|
|
282
|
-
The `npm` publisher
|
|
283
|
-
|
|
369
|
+
The `npm` publisher works with this registry. Name the project's registry, and give npm the job's
|
|
370
|
+
token:
|
|
284
371
|
|
|
285
372
|
```js train=trains
|
|
286
373
|
// release.config.mjs
|
|
@@ -311,7 +398,7 @@ export default {
|
|
|
311
398
|
echo "//${CI_SERVER_HOST}/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=\${CI_JOB_TOKEN}" >> .npmrc
|
|
312
399
|
```
|
|
313
400
|
|
|
314
|
-
###
|
|
401
|
+
### Recipe: publish to JSR
|
|
315
402
|
|
|
316
403
|
```js train=trains
|
|
317
404
|
// release/jsr-publisher.mjs
|
|
@@ -332,5 +419,5 @@ export default {
|
|
|
332
419
|
}
|
|
333
420
|
```
|
|
334
421
|
|
|
335
|
-
JSR reads the version
|
|
336
|
-
|
|
422
|
+
JSR reads the package's version from its `jsr.json`. In `publish`, write `pkg.version` into the
|
|
423
|
+
copy's `jsr.json` before you run `jsr publish`.
|