Skip to content

Commit 30a8363

Browse files
authored
prepare npm package for publication (#155)
1 parent 510e1d4 commit 30a8363

5 files changed

Lines changed: 76 additions & 5 deletions

File tree

.github/workflows/daily.yml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
outputs:
2020
last_sha: "${{ fromJson(steps.check-last-run.outputs.data).workflow_runs[0].head_sha }}"
2121

22-
publish-snapshot:
22+
publish-maven-snapshot:
2323
needs: ["check-last-run"]
2424
if: "${{ needs.check-last-run.outputs.last_sha != github.sha }}"
2525
runs-on: "macos-latest"
@@ -30,11 +30,26 @@ jobs:
3030
with:
3131
fetch-depth: 0
3232
- uses: "./.github/actions/setup"
33-
- run: "./gradlew publishAllPublicationsToGitHubPackagesRepository"
33+
- run: "./gradlew :publishAllPublicationsToGitHubPackagesRepository"
3434
env:
3535
ORG_GRADLE_PROJECT_GitHubPackagesPassword: "${{ secrets.GITHUB_TOKEN }}"
3636
ORG_GRADLE_PROJECT_GitHubPackagesUsername: "${{ github.actor }}"
3737

38+
publish-npm-snapshot:
39+
needs: ["check-last-run"]
40+
if: "${{ needs.check-last-run.outputs.last_sha != github.sha }}"
41+
runs-on: "macos-latest"
42+
permissions:
43+
packages: "write"
44+
steps:
45+
- uses: "actions/checkout@v4"
46+
with:
47+
fetch-depth: 0
48+
- uses: "./.github/actions/setup"
49+
- run: "./gradlew :publishJsPackageToNpmjsRegistry"
50+
env:
51+
NPM_PUBLISH_REGISTRY_GITHUB_AUTHTOKEN: "${{ secrets.GITHUB_TOKEN }}"
52+
3853
dependency-submission:
3954
needs: ["check-last-run"]
4055
if: "${{ needs.check-last-run.outputs.last_sha != github.sha }}"

.github/workflows/release.yml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,28 @@ jobs:
1717
fetch-depth: 0
1818
- run: "git fetch --tags --force" # https://github.com/actions/checkout/issues/290
1919
- uses: "./.github/actions/setup"
20-
- run: "./gradlew publishAndReleaseToMavenCentral --no-configuration-cache"
20+
- run: "./gradlew :publishAndReleaseToMavenCentral --no-configuration-cache"
2121
env:
2222
ORG_GRADLE_PROJECT_mavenCentralUsername: "${{ secrets.MAVEN_CENTRAL_USERNAME }}"
2323
ORG_GRADLE_PROJECT_mavenCentralPassword: "${{ secrets.MAVEN_CENTRAL_PASSWORD }}"
2424
ORG_GRADLE_PROJECT_signingInMemoryKey: "${{ secrets.GPG_PRIVATE_KEY }}"
2525
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: "${{ secrets.GPG_PASSPHRASE }}"
2626

27+
publish-npm:
28+
runs-on: macos-latest
29+
environment:
30+
name: "npm"
31+
url: "https://www.npmjs.com/package/pokekotlin"
32+
steps:
33+
- uses: "actions/checkout@v4"
34+
with:
35+
fetch-depth: 0
36+
- run: "git fetch --tags --force" # https://github.com/actions/checkout/issues/290
37+
- uses: "./.github/actions/setup"
38+
- run: "./gradlew :publishJsPackageToNpmjsRegistry"
39+
env:
40+
NPM_PUBLISH_REGISTRY_NPMJS_AUTHTOKEN: "${{ secrets.NPM_ACCESS_TOKEN }}"
41+
2742
publish-pages:
2843
needs:
2944
- "publish-maven"
@@ -40,7 +55,7 @@ jobs:
4055
fetch-depth: 0
4156
- run: "git fetch --tags --force" # https://github.com/actions/checkout/issues/290
4257
- uses: "./.github/actions/setup"
43-
- run: "./gradlew generateDocs"
58+
- run: "./gradlew :generateDocs"
4459
- uses: "actions/upload-pages-artifact@v3"
4560
with:
4661
path: "build/docs"

README.npm.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# PokeKotlin
2+
3+
Maintainer: [@sargunv](https://github.com/sargunv)
4+
5+
PokeKotlin is an async, `Promise` based client for [PokéAPI] written in [Kotlin
6+
Multiplatform]. It supports browser and Node environments. For usage details,
7+
see the [documentation].
8+
9+
[Kotlin Multiplatform]: https://kotlinlang.org/docs/multiplatform.html
10+
[PokéAPI]: https://pokeapi.co/
11+
[documentation]: https://pokeapi.github.io/pokekotlin/

build.gradle.kts

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ plugins {
1919
alias(libs.plugins.jgitver)
2020
alias(libs.plugins.suspendTransformCompiler)
2121
alias(libs.plugins.kover)
22+
alias(libs.plugins.npmPublish)
2223
id("maven-publish")
2324
}
2425

@@ -142,6 +143,33 @@ tasks.withType<KotlinNativeSimulatorTest> {
142143
(project.findProperty("appleNativeSimulatorDevice") as? String)?.let { device.set(it) }
143144
}
144145

146+
npmPublish {
147+
readme = project.file("README.npm.md")
148+
packages {
149+
named("js") {
150+
packageJson {
151+
description = "Promise based client for PokéAPI written in Kotlin"
152+
keywords = setOf("pokeapi", "pokemon", "api", "kotlin")
153+
homepage = "https://pokeapi.github.io/pokekotlin/"
154+
license = "Apache-2.0"
155+
author {
156+
name = "Sargun Vohra"
157+
url = "https://github.com/sargunv"
158+
}
159+
bugs { url = "https://github.com/PokeAPI/pokekotlin/issues" }
160+
repository {
161+
type = "git"
162+
url = "git+https://github.com/PokeAPI/pokekotlin.git"
163+
}
164+
}
165+
}
166+
}
167+
registries {
168+
npmjs {}
169+
github {}
170+
}
171+
}
172+
145173
publishing {
146174
repositories {
147175
maven {
@@ -158,7 +186,7 @@ mavenPublishing {
158186
pom {
159187
name = "PokeKotlin"
160188
description = "Kotlin client for The Pokémon API"
161-
url = "https://github.com/PokeAPI/pokekotlin"
189+
url = "https://pokeapi.github.io/pokekotlin/"
162190
licenses {
163191
license {
164192
name.set("The Apache License, Version 2.0")

gradle/libs.versions.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ gradle-mavenPublish = "0.33.0"
2121
gradle-mkdocs = "4.0.1"
2222
gradle-spotless = "7.0.4"
2323
gradle-kover = "0.9.1"
24+
gradle-npm-publish = "3.5.3"
2425
tool-prettier = "3.6.2"
2526

2627
# Don't forget to check settings.gradle for more versions
@@ -64,3 +65,4 @@ mkdocs = { id = "ru.vyarus.mkdocs-build", version.ref = "gradle-mkdocs" }
6465
spotless = { id = "com.diffplug.spotless", version.ref = "gradle-spotless" }
6566
suspendTransformCompiler = { id = "love.forte.plugin.suspend-transform", version.ref = "gradle-suspendTransformCompiler" }
6667
kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "gradle-kover" }
68+
npmPublish = { id = "dev.petuska.npm.publish", version.ref = "gradle-npm-publish" }

0 commit comments

Comments
 (0)