diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 626c151..d6754b4 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -23,7 +23,13 @@ jobs: run: npm test - name: Build run: npm build - - name: Publish + - name: Git config + run: | + git config --local user.email 'hello@rive.app' + git config --local user.name ${{ github.actor }} + - name: Authenticate with registry + run: npm config set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }} + - name: Release env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - run: npm run publish + GITHUB_TOKEN: ${{ secrets.REPO_TOKEN }} + run: npm run release diff --git a/.release-it.json b/.release-it.json new file mode 100644 index 0000000..acd1f88 --- /dev/null +++ b/.release-it.json @@ -0,0 +1,17 @@ +{ + "git": { + "commitMessage": "chore: release ${version}", + "tagName": "v${version}", + "changelog": "npx auto-changelog --stdout --commit-limit false --unreleased --template https://raw.githubusercontent.com/release-it/release-it/master/templates/changelog-compact.hbs" + }, + "npm": { + "publish": true + }, + "github": { + "release": true, + "releaseName": "Release ${version}" + }, + "hooks": { + "after:bump": "npx auto-changelog -p" + } +} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..e69de29 diff --git a/package-lock.json b/package-lock.json index a1455a5..993d6ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rive-react", - "version": "0.0.6", + "version": "0.0.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2178,6 +2178,27 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, + "auto-changelog": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/auto-changelog/-/auto-changelog-2.3.0.tgz", + "integrity": "sha512-S2B+RtTgytsa7l5iFGBoWT9W9ylITT5JJ8OaMJ7nrwvnlRm1dSS2tghaYueDeInZZafOE+1llH3tUQjMDRVS1g==", + "dev": true, + "requires": { + "commander": "^5.0.0", + "handlebars": "^4.7.3", + "node-fetch": "^2.6.0", + "parse-github-url": "^1.0.2", + "semver": "^6.3.0" + }, + "dependencies": { + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + } + } + }, "babel-jest": { "version": "27.0.2", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.0.2.tgz", @@ -3673,6 +3694,19 @@ "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", "dev": true }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -4843,6 +4877,18 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true + }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -5037,6 +5083,12 @@ "callsites": "^3.0.0" } }, + "parse-github-url": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", + "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", + "dev": true + }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -6203,6 +6255,13 @@ "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==", "dev": true }, + "uglify-js": { + "version": "3.13.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.10.tgz", + "integrity": "sha512-57H3ACYFXeo1IaZ1w02sfA71wI60MGco/IQFjOqK+WtKoprh7Go2/yvd2HPtoJILO2Or84ncLccI4xoHMTSbGg==", + "dev": true, + "optional": true + }, "unbox-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", @@ -6380,6 +6439,12 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", diff --git a/package.json b/package.json index 48418fb..953c18f 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "lint": "eslint -c .eslintrc.js 'src/**/*{.ts,.tsx}'", "format": "prettier --write src", "types:check": "tsc --noEmit", - "publish": "./scripts/publish.sh" + "release": "release-it" }, "repository": { "type": "git", @@ -37,6 +37,7 @@ "@types/testing-library__jest-dom": "^5.9.5", "@typescript-eslint/eslint-plugin": "^4.26.0", "@typescript-eslint/parser": "^4.26.0", + "auto-changelog": "^2.3.0", "bunchee": "^1.6.0", "eslint": "^7.28.0", "eslint-config-prettier": "^8.3.0", diff --git a/scripts/next_version.js b/scripts/next_version.js deleted file mode 100644 index 060e8bc..0000000 --- a/scripts/next_version.js +++ /dev/null @@ -1,27 +0,0 @@ -const fs = require('fs'); -const package = require('../package.json'); - -function parseVersion(v) { - return v.split('.').map((n) => Number.parseInt(n, 10)); -} - -const packageVersion = parseVersion(package.version); -// Last version seems to always be latest. -const publishedVersion = parseVersion(JSON.parse(process.argv[2]).pop()); - -const isGreater = (first, second) => { - // Assumes first and second have same number of version number - const zipped = first.map((n, i) => [n, second[i]]); - return zipped.some(([a, b]) => a > b); -}; - -// If package version is greater than what's published, we use that. -if (isGreater(packageVersion, publishedVersion)) { - return; -} - -// Otherwise increment the publishedVersions patch number and push to the package.json -const newVersion = publishedVersion; -newVersion[2]++; -package.version = newVersion.join('.'); -fs.writeFileSync('./package.json', JSON.stringify(package, null, 2)); diff --git a/scripts/publish.sh b/scripts/publish.sh deleted file mode 100755 index 1edd196..0000000 --- a/scripts/publish.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -set -e -NPM_VERSIONS=`npm show rive-react versions --json` -node ./scripts/next_version.js "$NPM_VERSIONS" -npm publish \ No newline at end of file