Skip to content

Commit

Permalink
ci: add release, lint-staged, commitlint, commit hooks, move nyc to s…
Browse files Browse the repository at this point in the history
…eparate config file
  • Loading branch information
stas-nc committed Oct 24, 2024
1 parent e5bd2ba commit 1703a29
Show file tree
Hide file tree
Showing 14 changed files with 12,958 additions and 5,754 deletions.
39 changes: 0 additions & 39 deletions .eslintrc

This file was deleted.

83 changes: 54 additions & 29 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,36 +1,61 @@
name: CI

on:
push:
branches:
- master
tags-ignore:
- "**"
pull_request:
branches:
- "**"
push:
branches:
- master
tags-ignore:
- '**'
pull_request:
branches:
- '**'

jobs:
build:
name: Build
runs-on: ubuntu-latest
build:
name: Build
runs-on: ubuntu-latest

strategy:
matrix:
node-version: [16.x, 18.x, 20.x]
strategy:
matrix:
node-version: [16.x, 18.x, 20.x]

steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
- run: npm ci
- run: npm run lint
- run: npm test
- if: matrix.node-version == '20.x'
uses: actions/upload-artifact@v3
with:
name: Code coverage
path: coverage/
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm ci
- if: github.event_name == 'pull_request'
name: Lint commit messages
run: npx commitlint --from ${{ github.event.pull_request.head.sha }}~${{ github.event.pull_request.commits }} --to ${{ github.event.pull_request.head.sha }} --verbose
- if: matrix.node-version != '16.x' # eslint v9 requires node >= 18
run: npm run lint
- run: npm test
- run: npm run benchmark
- if: matrix.node-version == '20.x'
uses: actions/upload-artifact@v3
with:
name: Code coverage
path: coverage/
publish:
name: 'Publish'
needs: build
runs-on: ubuntu-latest
environment: npm_publish
if: github.ref == 'refs/heads/master'
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'npm'
- run: npm ci
- name: Publish new version
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: npx semantic-release
1 change: 1 addition & 0 deletions .husky/commit-msg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
npx --no -- commitlint --edit $1
2 changes: 2 additions & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
npx lint-staged
npm test
7 changes: 0 additions & 7 deletions .prettierrc

This file was deleted.

21 changes: 8 additions & 13 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,21 @@
There are multiple ways of getting involved:

- [Report a bug](#report-a-bug)
- [Suggest a feature](#suggest-a-feature)
- [Contribute code](#contribute-code)
- [Suggest a feature](#suggest-a-feature)
- [Contribute code](#contribute-code)

Below are a few guidelines we would like you to follow.
If you need help, please reach out to one or more of the maintainers.

## Report a bug
## Report a bug
Reporting bugs is one of the best ways to contribute. Before creating a bug report, please check that an issue reporting the same problem does not already exist. If there is an such an issue, you may add your information as a comment.

To report a new bug you should open an issue that summarizes the bug and set the label to "bug".

If you want to provide a fix along with your bug report: That is great! In this case please send us a pull request as described in section [Contribute Code] (#contribute-code).

## Suggest a feature
To request a new feature you should open a GitHub issue and summarize the desired functionality and its use case. Set the issue label to "feature".
To request a new feature you should open a GitHub issue and summarize the desired functionality and its use case. Set the issue label to "feature".

## Contribute code
This is a rough outline of what the workflow for code contributions looks like:
Expand All @@ -35,18 +35,13 @@ This is a rough outline of what the workflow for code contributions looks like:
Thanks for your contributions!

### Commit messages
Your commit messages ideally can answer two questions: what changed and why. The subject line should feature the “what” and the body of the commit should describe the “why”.
Your commit messages ideally can answer two questions: what changed and why. The subject line should feature the “what” and the body of the commit should describe the “why”.
Commit format must follow [Conventional Commits
spec](https://www.conventionalcommits.org/en/v1.0.0/)

When creating a pull request, its comment should reference the corresponding issue id.

**Have fun and enjoy hacking!**

## New version release
To release new version of package use the following steps:
```
$ npx -p conventional-changelog-angular -p conventional-changelog-preset-loader -p conventional-recommended-bump conventional-recommended-bump --preset angular
$ npm version [major | minor | patch]
# Review last commit
$ git push && git push --tags
$ npm publish
```
New version is released after Pull Request merged
8 changes: 8 additions & 0 deletions commitlint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
'use strict';

/**
* @type {import('@commitlint/types').UserConfig}
*/
module.exports = {
extends: ['@commitlint/config-conventional']
};
18 changes: 7 additions & 11 deletions eslint.config.js → eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
'use strict';
import prettier from 'eslint-plugin-prettier';
import globals from 'globals';
import babelParser from '@babel/eslint-parser';

const babelParser = require('@babel/eslint-parser');
const prettier = require('eslint-plugin-prettier');
const globals = require('globals');

/**
* @type {import('eslint').Linter.Config}
*/
module.exports = [
export default [
{
ignores: [
'src/pipe.min.js',
'eslint.config.js',
'prettier.config.js',
'**/coverage',
'examples/fragment-performance/hooks.js',
'examples/fragment-performance/test.js'
Expand All @@ -32,7 +28,7 @@ module.exports = [
},

parser: babelParser,
ecmaVersion: 5,
ecmaVersion: 6,
sourceType: 'script',

parserOptions: {
Expand Down
9 changes: 9 additions & 0 deletions lint-staged.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
'use strict';

/**
* @type {import('lint-staged').Config}
*/
module.exports = {
'*': 'prettier --ignore-unknown --write',
'*.js': 'npm run fix'
};
10 changes: 10 additions & 0 deletions nyc.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
'use strict';

module.exports = {
'check-coverage': true,
'per-file': true,
lines: 90,
statements: 80,
functions: 80,
branches: 70
};
Loading

0 comments on commit 1703a29

Please sign in to comment.