Compare commits

..

2 Commits

Author SHA1 Message Date
Anthony Fu
2b691b3662 v0.6.0 2021-03-15 01:53:48 +08:00
Anthony Fu
d11174c6dd feat: overhaul 2021-03-15 01:53:40 +08:00
18 changed files with 243 additions and 65 deletions

View File

@@ -3,6 +3,17 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
# [0.6.0](https://github.com/antfu/eslint-config/compare/v0.5.1...v0.6.0) (2021-03-14)
### Features
* overhaul ([d11174c](https://github.com/antfu/eslint-config/commit/d11174c6ddfa6fad5c3f47564985a65f46f83bff))
## [0.5.1](https://github.com/antfu/eslint-config/compare/v0.5.0...v0.5.1) (2021-03-13)
**Note:** Version bump only for package @antfu/eslint-config-monorepo

View File

@@ -2,5 +2,5 @@
"packages": [
"packages/*"
],
"version": "0.5.1"
"version": "0.6.0"
}

View File

@@ -1,12 +1,12 @@
{
"name": "@antfu/eslint-config-monorepo",
"version": "0.1.0",
"author": "Anthony Fu <anthonyfu117@hotmail.com> (https://github.com/antfu/)",
"license": "MIT",
"author": "Anthony Fu <anthonyfu117@hotmail.com> (https://github.com/antfu/)",
"private": true,
"scripts": {
"preinstall": "npx only-allow pnpm",
"lint": "npx eslint --ext .js --fix .",
"lint": "npx eslint --ext .js,.json,.vue --fix .",
"release": "lerna publish --conventional-commits"
},
"devDependencies": {

View File

@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
# [0.6.0](https://github.com/antfu/eslint-config/compare/v0.5.1...v0.6.0) (2021-03-14)
**Note:** Version bump only for package @antfu/eslint-config
## [0.5.1](https://github.com/antfu/eslint-config/compare/v0.5.0...v0.5.1) (2021-03-13)
**Note:** Version bump only for package @antfu/eslint-config

View File

@@ -1,6 +1,6 @@
{
"name": "@antfu/eslint-config",
"version": "0.5.1",
"version": "0.6.0",
"description": "",
"main": "index.js",
"keywords": [],
@@ -16,8 +16,8 @@
"access": "public"
},
"dependencies": {
"@antfu/eslint-config-react": "^0.5.1",
"@antfu/eslint-config-vue": "^0.5.1"
"@antfu/eslint-config-react": "^0.6.0",
"@antfu/eslint-config-vue": "^0.6.0"
},
"devDependencies": {
"eslint": "^7.22.0"

View File

@@ -3,6 +3,17 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
# [0.6.0](https://github.com/antfu/eslint-config/compare/v0.5.1...v0.6.0) (2021-03-14)
### Features
* overhaul ([d11174c](https://github.com/antfu/eslint-config/commit/d11174c6ddfa6fad5c3f47564985a65f46f83bff))
## [0.5.1](https://github.com/antfu/eslint-config/compare/v0.5.0...v0.5.1) (2021-03-13)
**Note:** Version bump only for package @antfu/eslint-config-basic

View File

@@ -9,13 +9,67 @@ module.exports = {
'plugin:import/errors',
'plugin:import/warnings',
'plugin:eslint-comments/recommended',
'plugin:jsonc/recommended-with-jsonc',
'plugin:yml/standard',
],
plugins: ['html', 'unicorn'],
plugins: ['unicorn'],
settings: {
'import/resolver': {
node: { extensions: ['.js', '.mjs'] },
node: { extensions: ['.js', '.mjs', '.ts', '.d.ts'] },
},
},
overrides: [
{
files: ['*.json', '*.json5'],
parser: 'jsonc-eslint-parser',
rules: {
'quotes': ['error', 'double'],
'quote-props': ['error', 'always'],
'comma-dangle': ['error', 'never'],
},
},
{
files: ['package.json'],
parser: 'jsonc-eslint-parser',
rules: {
'jsonc/sort-keys': [
'error',
{
pathPattern: '^$',
order: [
'name',
'version',
'description',
'keywords',
'license',
'repository',
'funding',
'author',
'type',
'files',
'exports',
'main',
'module',
'unpkg',
'bin',
'scripts',
'husky',
'lint-staged',
'peerDependencies',
'peerDependenciesMeta',
'dependencies',
'devDependencies',
'eslintConfig',
],
},
{
pathPattern: '^(?:dev|peer|optional|bundled)?[Dd]ependencies$',
order: { type: 'asc' },
},
],
},
},
],
rules: {
// import
'import/order': 'error',
@@ -25,15 +79,16 @@ module.exports = {
'import/no-absolute-path': 'off',
// Common
semi: [2, 'never'],
curly: [2, 'multi-or-nest', 'consistent'],
quotes: ['error', 'single'],
'semi': ['error', 'never'],
'curly': ['error', 'multi-or-nest', 'consistent'],
'quotes': ['error', 'single'],
'quote-props': ['error', 'consistent-as-needed'],
'no-unused-vars': 'warn',
'no-param-reassign': 'off',
'array-bracket-spacing': ['error', 'never'],
'brace-style': ['error', 'stroustrup', { allowSingleLine: true }],
'block-spacing': ['error', 'always'],
camelcase: 'off',
'camelcase': 'off',
'comma-spacing': ['error', { before: false, after: true }],
'comma-style': ['error', 'last'],
'comma-dangle': ['error', 'always-multiline'],
@@ -43,7 +98,7 @@ module.exports = {
'no-cond-assign': ['error', 'always'],
'func-call-spacing': ['off', 'never'],
'key-spacing': ['error', { beforeColon: false, afterColon: true }],
indent: ['error', 2, { SwitchCase: 1, VariableDeclarator: 1, outerIIFEBody: 1 }],
'indent': ['error', 2, { SwitchCase: 1, VariableDeclarator: 1, outerIIFEBody: 1 }],
'no-restricted-syntax': [
'error',
'DebuggerStatement',
@@ -91,19 +146,19 @@ module.exports = {
'array-callback-return': 'error',
'block-scoped-var': 'error',
'consistent-return': 'off',
complexity: ['off', 11],
eqeqeq: ['error', 'allow-null'],
'complexity': ['off', 11],
'eqeqeq': ['error', 'allow-null'],
'no-alert': 'warn',
'no-case-declarations': 'error',
'no-multi-spaces': 'error',
'no-multi-str': 'error',
'no-with': 'error',
'no-void': 'error',
'no-useless-escape': 'error',
'no-useless-escape': 'off',
'vars-on-top': 'error',
'require-await': 'off',
'no-return-assign': 'off',
'operator-linebreak': [2, 'before'],
'operator-linebreak': ['error', 'before'],
// unicorns
// Pass error message when throwing errors
@@ -116,7 +171,7 @@ module.exports = {
'unicorn/no-new-buffer': 'error',
// Keep regex literals safe!
'unicorn/no-unsafe-regex': 'off',
// Lowercase number formatting for octal, hex, binary (0x12 instead of 0X12)
// Lowercase number formatting for octal, hex, binary (0x1'error' instead of 0X1'error')
'unicorn/number-literal-case': 'error',
// ** instead of Math.pow()
'unicorn/prefer-exponentiation-operator': 'error',

View File

@@ -1,11 +1,11 @@
{
"name": "@antfu/eslint-config-basic",
"version": "0.5.1",
"version": "0.6.0",
"description": "",
"main": "index.js",
"keywords": [],
"author": "Anthony Fu <anthonyfu117@hotmail.com> (https://github.com/antfu/)",
"license": "MIT",
"author": "Anthony Fu <anthonyfu117@hotmail.com> (https://github.com/antfu/)",
"scripts": {
"lint": "eslint . --config=index.js"
},
@@ -21,12 +21,14 @@
"dependencies": {
"eslint-config-standard": "^16.0.2",
"eslint-plugin-eslint-comments": "^3.2.0",
"eslint-plugin-html": "^6.1.2",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jsonc": "^1.2.1",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^4.3.1",
"eslint-plugin-standard": "^5.0.0",
"eslint-plugin-unicorn": "^28.0.2"
"eslint-plugin-unicorn": "^28.0.2",
"eslint-plugin-yml": "^0.8.1",
"jsonc-eslint-parser": "^1.0.1",
"yaml-eslint-parser": "^0.3.2"
},
"devDependencies": {
"eslint": "^7.22.0"

View File

@@ -3,6 +3,17 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
# [0.6.0](https://github.com/antfu/eslint-config/compare/v0.5.1...v0.6.0) (2021-03-14)
### Features
* overhaul ([d11174c](https://github.com/antfu/eslint-config/commit/d11174c6ddfa6fad5c3f47564985a65f46f83bff))
## [0.5.1](https://github.com/antfu/eslint-config/compare/v0.5.0...v0.5.1) (2021-03-13)
**Note:** Version bump only for package @antfu/eslint-config-react

View File

@@ -5,7 +5,7 @@ module.exports = {
],
settings: {
react: {
version: 'detect',
version: '17.0',
},
},
rules: {

View File

@@ -1,6 +1,6 @@
{
"name": "@antfu/eslint-config-react",
"version": "0.5.1",
"version": "0.6.0",
"description": "",
"main": "index.js",
"keywords": [],
@@ -19,7 +19,7 @@
"access": "public"
},
"dependencies": {
"@antfu/eslint-config-ts": "^0.5.1",
"@antfu/eslint-config-ts": "^0.6.0",
"eslint-plugin-react": "^7.22.0"
},
"devDependencies": {

View File

@@ -3,6 +3,17 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
# [0.6.0](https://github.com/antfu/eslint-config/compare/v0.5.1...v0.6.0) (2021-03-14)
### Features
* overhaul ([d11174c](https://github.com/antfu/eslint-config/commit/d11174c6ddfa6fad5c3f47564985a65f46f83bff))
## [0.5.1](https://github.com/antfu/eslint-config/compare/v0.5.0...v0.5.1) (2021-03-13)
**Note:** Version bump only for package @antfu/eslint-config-ts

View File

@@ -1,8 +1,4 @@
module.exports = {
plugins: [
'@typescript-eslint',
],
parser: '@typescript-eslint/parser',
extends: [
'@antfu/eslint-config-basic',
'plugin:@typescript-eslint/recommended',
@@ -20,7 +16,6 @@ module.exports = {
'no-redeclare': 'off',
'@typescript-eslint/no-redeclare': 'error',
// off
'@typescript-eslint/camelcase': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',

View File

@@ -1,6 +1,6 @@
{
"name": "@antfu/eslint-config-ts",
"version": "0.5.1",
"version": "0.6.0",
"description": "",
"main": "index.js",
"keywords": [],
@@ -17,7 +17,7 @@
"typescript": ">=3.9"
},
"dependencies": {
"@antfu/eslint-config-basic": "^0.5.1",
"@antfu/eslint-config-basic": "^0.6.0",
"@typescript-eslint/eslint-plugin": "^4.17.0",
"@typescript-eslint/parser": "^4.17.0"
},

View File

@@ -3,6 +3,17 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
# [0.6.0](https://github.com/antfu/eslint-config/compare/v0.5.1...v0.6.0) (2021-03-14)
### Features
* overhaul ([d11174c](https://github.com/antfu/eslint-config/commit/d11174c6ddfa6fad5c3f47564985a65f46f83bff))
## [0.5.1](https://github.com/antfu/eslint-config/compare/v0.5.0...v0.5.1) (2021-03-13)
**Note:** Version bump only for package @antfu/eslint-config-vue

View File

@@ -1,17 +1,20 @@
module.exports = {
parser: 'vue-eslint-parser',
parserOptions: {
parser: '@typescript-eslint/parser',
},
overrides: [
{
files: ['*.vue'],
parser: 'vue-eslint-parser',
parserOptions: {
parser: '@typescript-eslint/parser',
},
},
],
extends: [
'plugin:vue/vue3-recommended',
'@antfu/eslint-config-ts',
],
plugins: [
'vue',
],
rules: {
'vue/max-attributes-per-line': ['warn', { singleline: 5 }],
'vue/html-self-closing': 'off'
'vue/html-self-closing': 'off',
'vue/no-v-html': 'off',
},
}

View File

@@ -1,6 +1,6 @@
{
"name": "@antfu/eslint-config-vue",
"version": "0.5.1",
"version": "0.6.0",
"description": "",
"main": "index.js",
"keywords": [],
@@ -16,7 +16,7 @@
"access": "public"
},
"dependencies": {
"@antfu/eslint-config-ts": "^0.5.1",
"@antfu/eslint-config-ts": "^0.6.0",
"eslint-plugin-vue": "7.7.0"
},
"devDependencies": {

104
pnpm-lock.yaml generated
View File

@@ -17,8 +17,8 @@ importers:
devDependencies:
eslint: 7.22.0
specifiers:
'@antfu/eslint-config-react': ^0.5.0
'@antfu/eslint-config-vue': ^0.5.0
'@antfu/eslint-config-react': ^0.5.1
'@antfu/eslint-config-vue': ^0.5.1
eslint: ^7.22.0
packages/basic:
dependencies:
@@ -26,10 +26,13 @@ importers:
eslint-plugin-eslint-comments: 3.2.0_eslint@7.22.0
eslint-plugin-html: 6.1.2
eslint-plugin-import: 2.22.1_eslint@7.22.0
eslint-plugin-jsonc: 1.2.1_eslint@7.22.0
eslint-plugin-node: 11.1.0_eslint@7.22.0
eslint-plugin-promise: 4.3.1
eslint-plugin-standard: 5.0.0_eslint@7.22.0
eslint-plugin-unicorn: 28.0.2_eslint@7.22.0
eslint-plugin-yml: 0.8.1_eslint@7.22.0
jsonc-eslint-parser: 1.0.1
yaml-eslint-parser: 0.3.2
devDependencies:
eslint: 7.22.0
specifiers:
@@ -38,10 +41,13 @@ importers:
eslint-plugin-eslint-comments: ^3.2.0
eslint-plugin-html: ^6.1.2
eslint-plugin-import: ^2.22.1
eslint-plugin-jsonc: ^1.2.1
eslint-plugin-node: ^11.1.0
eslint-plugin-promise: ^4.3.1
eslint-plugin-standard: ^5.0.0
eslint-plugin-unicorn: ^28.0.2
eslint-plugin-yml: ^0.8.1
jsonc-eslint-parser: ^1.0.1
yaml-eslint-parser: ^0.3.2
packages/react:
dependencies:
'@antfu/eslint-config-ts': link:../typescript
@@ -51,7 +57,7 @@ importers:
react: 17.0.1
typescript: 4.2.3
specifiers:
'@antfu/eslint-config-ts': ^0.5.0
'@antfu/eslint-config-ts': ^0.5.1
eslint: ^7.22.0
eslint-plugin-react: ^7.22.0
react: ^17.0.1
@@ -64,7 +70,7 @@ importers:
devDependencies:
eslint: 7.22.0
specifiers:
'@antfu/eslint-config-basic': ^0.5.0
'@antfu/eslint-config-basic': ^0.5.1
'@typescript-eslint/eslint-plugin': ^4.17.0
'@typescript-eslint/parser': ^4.17.0
eslint: ^7.22.0
@@ -75,7 +81,7 @@ importers:
devDependencies:
eslint: 7.22.0
specifiers:
'@antfu/eslint-config-ts': ^0.5.0
'@antfu/eslint-config-ts': ^0.5.1
eslint: ^7.22.0
eslint-plugin-vue: 7.7.0
lockfileVersion: 5.2
@@ -1385,20 +1391,26 @@ packages:
acorn: ^6.0.0 || ^7.0.0
resolution:
integrity: sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==
/acorn-jsx/5.3.1_acorn@7.4.0:
/acorn-jsx/5.3.1_acorn@7.4.1:
dependencies:
acorn: 7.4.0
dev: true
acorn: 7.4.1
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
resolution:
integrity: sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==
/acorn/7.4.0:
dev: false
engines:
node: '>=0.4.0'
hasBin: true
resolution:
integrity: sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==
/acorn/7.4.1:
engines:
node: '>=0.4.0'
hasBin: true
resolution:
integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
/add-stream/1.0.0:
dev: true
resolution:
@@ -2090,6 +2102,19 @@ packages:
deprecated: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
resolution:
integrity: sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
/debug/4.3.1:
dependencies:
ms: 2.1.2
dev: false
engines:
node: '>=6.0'
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
resolution:
integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
/debuglog/1.0.1:
dev: true
resolution:
@@ -2428,6 +2453,17 @@ packages:
eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0
resolution:
integrity: sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==
/eslint-plugin-jsonc/1.2.1_eslint@7.22.0:
dependencies:
eslint: 7.22.0
eslint-utils: 2.1.0
jsonc-eslint-parser: 1.0.1
natural-compare: 1.4.0
dev: false
peerDependencies:
eslint: ^5.0.0 || >=6.0.0
resolution:
integrity: sha512-m7o4gaNKojSwRJDNP0/7HK1vGfGgynX6DeTHTXhYGxWn2DB8E2RU5jeK95CYw1/mwej4ku2Xd9Tevn6WOlI6Dg==
/eslint-plugin-node/11.1.0_eslint@7.22.0:
dependencies:
eslint: 7.22.0
@@ -2471,15 +2507,6 @@ packages:
eslint: ^3 || ^4 || ^5 || ^6 || ^7
resolution:
integrity: sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA==
/eslint-plugin-standard/5.0.0_eslint@7.22.0:
dependencies:
eslint: 7.22.0
deprecated: 'standard 16.0.0 and eslint-config-standard 16.0.0 no longer require the eslint-plugin-standard package. You can remove it from your dependencies with ''npm rm eslint-plugin-standard''. More info here: https://github.com/standard/standard/issues/1316'
dev: false
peerDependencies:
eslint: '>=5.0.0'
resolution:
integrity: sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg==
/eslint-plugin-unicorn/28.0.2_eslint@7.22.0:
dependencies:
ci-info: 2.0.0
@@ -2517,6 +2544,18 @@ packages:
eslint: ^6.2.0 || ^7.0.0
resolution:
integrity: sha512-mYz4bpLGv5jx6YG/GvKkqbGSfV7uma2u1P3mLA41Q5vQl8W1MeuTneB8tfsLq6xxxesFubcrOC0BZBJ5R+eaCQ==
/eslint-plugin-yml/0.8.1_eslint@7.22.0:
dependencies:
debug: 4.3.1
eslint: 7.22.0
lodash: 4.17.21
natural-compare: 1.4.0
yaml-eslint-parser: 0.3.2
dev: false
peerDependencies:
eslint: '>=6.0.0'
resolution:
integrity: sha512-Cmqj/8eUoQ3ryesaOgsS2wdhYJJ6NCCBiO1BtCMZ8d3LRvnW0J2aImfiAtgqkpXEbmfL8P9wI1FqxSVOdujbSA==
/eslint-scope/5.1.0:
dependencies:
esrecurse: 4.3.0
@@ -2621,10 +2660,9 @@ packages:
integrity: sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==
/espree/7.3.1:
dependencies:
acorn: 7.4.0
acorn-jsx: 5.3.1_acorn@7.4.0
acorn: 7.4.1
acorn-jsx: 5.3.1_acorn@7.4.1
eslint-visitor-keys: 1.3.0
dev: true
engines:
node: ^10.12.0 || >=12.0.0
resolution:
@@ -3554,6 +3592,14 @@ packages:
hasBin: true
resolution:
integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
/jsonc-eslint-parser/1.0.1:
dependencies:
eslint-utils: 2.1.0
eslint-visitor-keys: 2.0.0
espree: 7.3.1
dev: false
resolution:
integrity: sha512-mh5LY5byThmc692EqJS3Ss9sViNoNeCLNG5VQUgJLoAFFM3FzdIetd99qEiiQ+NXBVAIUgX5sWeK9leniS8RbQ==
/jsonfile/6.1.0:
dependencies:
universalify: 2.0.0
@@ -5963,12 +6009,26 @@ packages:
/yallist/4.0.0:
resolution:
integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
/yaml-eslint-parser/0.3.2:
dependencies:
eslint-visitor-keys: 1.3.0
lodash: 4.17.21
yaml: 1.10.2
dev: false
resolution:
integrity: sha512-32kYO6kJUuZzqte82t4M/gB6/+11WAuHiEnK7FreMo20xsCKPeFH5tDBU7iWxR7zeJpNnMXfJyXwne48D0hGrg==
/yaml/1.10.1:
dev: true
engines:
node: '>= 6'
resolution:
integrity: sha512-z/asvd+V08l1ywhaemZVirCwjdzLo6O1/0j2JbYCsGjiezupNQqjs5IIPyNtctbHjPEckqzVGd4jvpU5Lr25vQ==
/yaml/1.10.2:
dev: false
engines:
node: '>= 6'
resolution:
integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
/yargs-parser/20.2.4:
dev: true
engines: