diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..c24f4eb --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,25 @@ +name: Release +on: + push: + branches: + - master +jobs: + release: + name: Release + runs-on: ubuntu-18.04 + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Setup Node.js + uses: actions/setup-node@v1 + with: + node-version: 12 + - name: Install dependencies + run: yarn install --frozen-lockfile --non-interactive + - name: Release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + run: npx semantic-release diff --git a/package.json b/package.json index 9c014fb..ebef48a 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "build": "rollup -c", "dry-run": "npm publish --dry-run", "prepare": "npm run build", + "semantic-release": "semantic-release", "test": "mocha tests/test**.*js -u tdd --experimental-json-modules" }, "type": "module", @@ -52,13 +53,63 @@ "msgpackr-extract": "^1.0.14" }, "devDependencies": { + "@commitlint/cli": "^8.3.5", "@rollup/plugin-json": "^4.1.0", + "@commitlint/config-conventional": "^8.3.4", + "@semantic-release/changelog": "^5.0.1", + "@semantic-release/commit-analyzer": "^8.0.1", + "@semantic-release/exec": "^5.0.0", + "@semantic-release/git": "^9.0.1", + "@semantic-release/github": "^7.2.0", + "@semantic-release/npm": "^7.0.9", + "@semantic-release/release-notes-generator": "^9.0.3", "@types/node": "latest", "async": "^3", "chai": "^4.3.4", + "commitizen": "^4.2.4", "esm": "^3.2.25", + "husky": "^3.1.0", "mocha": "^8.1.3", "rollup": "^1.20.3", - "rollup-plugin-babel-minify": "^9.0.0" + "rollup-plugin-babel-minify": "^9.0.0", + "semantic-release": "^17.4.7" + }, + "config": { + "commitizen": { + "path": "node_modules/cz-conventional-changelog" + } + }, + "commitlint": { + "extends": [ + "@commitlint/config-conventional" + ] + }, + "husky": { + "hooks": { + "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" + } + }, + "release": { + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + "@semantic-release/changelog", + [ + "@semantic-release/npm", + { + "npmPublish": true + } + ], + "@semantic-release/github", + [ + "@semantic-release/git", + { + "assets": [ + "package.json" + ], + "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" + } + ] + ] } }