build(): add lerna for dev builds (#24358)

This commit is contained in:
Liam DeBeasi
2021-12-10 17:17:53 -05:00
committed by GitHub
parent 4ff3477532
commit 179cbd334b
19 changed files with 46883 additions and 4180 deletions

View File

@ -6,13 +6,37 @@ on:
jobs: jobs:
dev-build: dev-build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs:
version: ${{ steps.dev-build.outputs.version }}
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-node@v1 - uses: actions/setup-node@v2
with: with:
node-version: 15.x node-version: 16
- name: Create Dev Build - name: Install Dependencies
run: npm run release.dev -- --skip-prompt run: npm ci --no-package-lock && lerna bootstrap --ignore-scripts -- --legacy-peer-deps
shell: bash
- name: Prepare NPM Token
run: echo //registry.npmjs.org/:_authToken=${NPM_TOKEN} > .npmrc
shell: bash shell: bash
env: env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Create Dev Hash
run: |
echo "HASH=$(git log -1 --format=%H | cut -c 1-7)" >> $GITHUB_ENV
echo "TIMESTAMP=$(date +%s)" >> $GITHUB_ENV
echo "CURRENT_VERSION=$(node -p -e "require('./core/package.json').version")" >> $GITHUB_ENV
shell: bash
- name: Create Dev Build
run: |
HUSKY_SKIP_HOOKS=1 lerna publish $(echo "${{ env.CURRENT_VERSION }}")-dev.$(echo "${{ env.TIMESTAMP }}").$(echo "${{ env.HASH }}") --no-verify-access --yes --force-publish='*' --dist-tag dev --no-git-tag-version --no-push
shell: bash
- id: dev-build
run: echo "::set-output name=version::$(echo "${{ env.CURRENT_VERSION }}")-dev.$(echo "${{ env.TIMESTAMP }}").$(echo "${{ env.HASH }}")"
get-build:
name: Get your dev build!
runs-on: ubuntu-latest
needs: dev-build
steps:
- run: echo ${{ needs.dev-build.outputs.version }}

2
.gitignore vendored
View File

@ -66,3 +66,5 @@ core/loader/
core/www/ core/www/
.stencil/ .stencil/
angular/build/ angular/build/
.npmrc

1
.npmrc
View File

@ -1 +0,0 @@
package-lock=false

View File

@ -22,8 +22,12 @@
"bugs": { "bugs": {
"url": "https://github.com/ionic-team/ionic/issues" "url": "https://github.com/ionic-team/ionic/issues"
}, },
"publishConfig": {
"directory": "dist"
},
"homepage": "https://ionicframework.com/", "homepage": "https://ionicframework.com/",
"scripts": { "scripts": {
"prepublishOnly": "npm run build",
"build": "npm run clean && npm run build.ng && npm run build.core && npm run clean-generated", "build": "npm run clean && npm run build.ng && npm run build.core && npm run clean-generated",
"build.core": "node scripts/build-core.js", "build.core": "node scripts/build-core.js",
"build.fesm": "rollup --config ./scripts/rollup.config.js", "build.fesm": "rollup --config ./scripts/rollup.config.js",

View File

@ -67,6 +67,7 @@
"typescript": "^4.0.5" "typescript": "^4.0.5"
}, },
"scripts": { "scripts": {
"prepublishOnly": "npm run build",
"build": "npm run clean && npm run build.css && stencil build --docs --es5 --docs-json dist/docs.json && npm run cdnloader", "build": "npm run clean && npm run build.css && stencil build --docs --es5 --docs-json dist/docs.json && npm run cdnloader",
"build.css": "npm run css.sass && npm run css.minify", "build.css": "npm run css.sass && npm run css.minify",
"build.debug": "npm run clean && stencil build --debug", "build.debug": "npm run clean && stencil build --debug",

View File

@ -1,6 +1,9 @@
{ {
"packages": [ "packages": [
"core",
"docs",
"angular",
"packages/*" "packages/*"
], ],
"version": "0.0.0" "version": "5.9.2"
} }

20287
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -3,8 +3,6 @@
"description": "Ionic mono-repo root package.json, used mainly to execute build scripts. This package is not published to npm.", "description": "Ionic mono-repo root package.json, used mainly to execute build scripts. This package is not published to npm.",
"scripts": { "scripts": {
"build": "node .scripts/build.js", "build": "node .scripts/build.js",
"release.dev": "node .scripts/release-dev.js",
"release.prepare": "node .scripts/prepare.js",
"release": "node .scripts/release.js", "release": "node .scripts/release.js",
"changelog": "conventional-changelog -p angular -i ./CHANGELOG.md -k core -s", "changelog": "conventional-changelog -p angular -i ./CHANGELOG.md -k core -s",
"commitizenBranches": "git-branch-is -q --not -r \"^(main|next|release-)\"" "commitizenBranches": "git-branch-is -q --not -r \"^(main|next|release-)\""
@ -22,6 +20,7 @@
"git-branch-is": "^4.0.0", "git-branch-is": "^4.0.0",
"husky": "^4.3.8", "husky": "^4.3.8",
"inquirer": "^6.0.0", "inquirer": "^6.0.0",
"lerna": "^4.0.0",
"listr": "^0.14.0", "listr": "^0.14.0",
"rimraf": "^2.6.3", "rimraf": "^2.6.3",
"semver": "^5.5.0" "semver": "^5.5.0"

View File

@ -16,7 +16,7 @@
"@angular/core": "8.2.13", "@angular/core": "8.2.13",
"@angular/platform-browser": "8.2.13", "@angular/platform-browser": "8.2.13",
"@angular/platform-server": "8.2.13", "@angular/platform-server": "8.2.13",
"@ionic/core": "5.9.1", "@ionic/core": "5.9.2",
"ng-packagr": "5.7.1", "ng-packagr": "5.7.1",
"tslint": "^5.12.1", "tslint": "^5.12.1",
"tslint-ionic-rules": "0.0.21", "tslint-ionic-rules": "0.0.21",
@ -26,7 +26,7 @@
"peerDependencies": { "peerDependencies": {
"@angular/core": ">=8.2.7", "@angular/core": ">=8.2.7",
"@angular/platform-server": ">=8.2.7", "@angular/platform-server": ">=8.2.7",
"@ionic/angular": "*", "@ionic/angular": "^5.9.2",
"rxjs": ">=6.2.0", "rxjs": ">=6.2.0",
"zone.js": ">=0.8.26" "zone.js": ">=0.8.26"
} }
@ -137,9 +137,9 @@
} }
}, },
"node_modules/@ionic/core": { "node_modules/@ionic/core": {
"version": "5.9.1", "version": "5.9.2",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.9.1.tgz", "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.9.2.tgz",
"integrity": "sha512-/jVO0N5ESs/iPFcrFZ/JFvW2Uh0ZV1uLFT2vtbtMfCaOMZK8Bmt36ZR1cDDFTuw14vPOLz/1wI2pbQru48JpkQ==", "integrity": "sha512-1ZqSBS8R6tGQsc+LsLxIRv0q3Ww6jwgJXLvdn6FmVWfpPbBvT+CjCuU9hqJ5qwM+atErblUMYSexvvpws8lGAA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@stencil/core": "^2.4.0", "@stencil/core": "^2.4.0",
@ -5424,9 +5424,9 @@
} }
}, },
"@ionic/core": { "@ionic/core": {
"version": "5.9.1", "version": "5.9.2",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.9.1.tgz", "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.9.2.tgz",
"integrity": "sha512-/jVO0N5ESs/iPFcrFZ/JFvW2Uh0ZV1uLFT2vtbtMfCaOMZK8Bmt36ZR1cDDFTuw14vPOLz/1wI2pbQru48JpkQ==", "integrity": "sha512-1ZqSBS8R6tGQsc+LsLxIRv0q3Ww6jwgJXLvdn6FmVWfpPbBvT+CjCuU9hqJ5qwM+atErblUMYSexvvpws8lGAA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@stencil/core": "^2.4.0", "@stencil/core": "^2.4.0",

View File

@ -21,6 +21,7 @@
}, },
"homepage": "https://ionicframework.com/", "homepage": "https://ionicframework.com/",
"scripts": { "scripts": {
"prepublishOnly": "npm run build.prod",
"test": "echo 'angular no tests yet'", "test": "echo 'angular no tests yet'",
"build": "ng-packagr -p package.json", "build": "ng-packagr -p package.json",
"build.prod": "npm run clean && npm run build", "build.prod": "npm run clean && npm run build",
@ -37,7 +38,7 @@
"peerDependencies": { "peerDependencies": {
"@angular/core": ">=8.2.7", "@angular/core": ">=8.2.7",
"@angular/platform-server": ">=8.2.7", "@angular/platform-server": ">=8.2.7",
"@ionic/angular": "*", "@ionic/angular": "^5.9.2",
"rxjs": ">=6.2.0", "rxjs": ">=6.2.0",
"zone.js": ">=0.8.26" "zone.js": ">=0.8.26"
}, },

View File

@ -1 +0,0 @@
package-lock=false

15358
packages/react-router/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -20,6 +20,7 @@
"url": "https://github.com/ionic-team/ionic.git" "url": "https://github.com/ionic-team/ionic.git"
}, },
"scripts": { "scripts": {
"prepublishOnly": "npm run build",
"build": "npm run clean && npm run compile", "build": "npm run clean && npm run compile",
"clean": "rimraf dist dist-transpiled", "clean": "rimraf dist dist-transpiled",
"compile": "npm run tsc && rollup -c", "compile": "npm run tsc && rollup -c",
@ -37,17 +38,16 @@
"dist/" "dist/"
], ],
"dependencies": { "dependencies": {
"@ionic/react": "5.9.2",
"tslib": "*" "tslib": "*"
}, },
"peerDependencies": { "peerDependencies": {
"@ionic/react": "5.9.2",
"react": ">=16.8.6", "react": ">=16.8.6",
"react-dom": ">=16.8.6", "react-dom": ">=16.8.6",
"react-router": "^5.0.1", "react-router": "^5.0.1",
"react-router-dom": "^5.0.1" "react-router-dom": "^5.0.1"
}, },
"devDependencies": { "devDependencies": {
"@ionic/react": "5.9.2",
"@rollup/plugin-node-resolve": "^8.1.0", "@rollup/plugin-node-resolve": "^8.1.0",
"@testing-library/jest-dom": "^5.11.6", "@testing-library/jest-dom": "^5.11.6",
"@testing-library/react": "^11.2.2", "@testing-library/react": "^11.2.2",

View File

@ -1 +0,0 @@
package-lock=false

15227
packages/react/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -20,6 +20,7 @@
"url": "https://github.com/ionic-team/ionic.git" "url": "https://github.com/ionic-team/ionic.git"
}, },
"scripts": { "scripts": {
"prepublishOnly": "npm run build",
"build": "npm run clean && npm run copy && npm run compile", "build": "npm run clean && npm run copy && npm run compile",
"clean": "rimraf dist && rimraf dist-transpiled && rimraf routing", "clean": "rimraf dist && rimraf dist-transpiled && rimraf routing",
"compile": "npm run tsc && rollup -c", "compile": "npm run tsc && rollup -c",

View File

@ -8,8 +8,10 @@
"name": "@ionic/vue-router", "name": "@ionic/vue-router",
"version": "5.9.2", "version": "5.9.2",
"license": "MIT", "license": "MIT",
"dependencies": {
"@ionic/vue": "^5.4.2"
},
"devDependencies": { "devDependencies": {
"@ionic/vue": "5.4.1",
"@types/jest": "^26.0.13", "@types/jest": "^26.0.13",
"@types/node": "^14.10.1", "@types/node": "^14.10.1",
"jest": "^27.0.4", "jest": "^27.0.4",
@ -561,22 +563,21 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@ionic/core": { "node_modules/@ionic/core": {
"version": "5.4.1", "version": "5.9.2",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.4.1.tgz", "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.9.2.tgz",
"integrity": "sha512-yONXeHjbVGUSL7zPgiCv0fQkw47VHJJ+8zVkYgTg4At+B0VhoLAMgS/ah3EUwSVTOATXdHa6Ak5+71uHPKpViQ==", "integrity": "sha512-1ZqSBS8R6tGQsc+LsLxIRv0q3Ww6jwgJXLvdn6FmVWfpPbBvT+CjCuU9hqJ5qwM+atErblUMYSexvvpws8lGAA==",
"dev": true,
"dependencies": { "dependencies": {
"ionicons": "^5.1.2", "@stencil/core": "^2.4.0",
"tslib": "^1.10.0" "ionicons": "^5.5.3",
"tslib": "^2.1.0"
} }
}, },
"node_modules/@ionic/vue": { "node_modules/@ionic/vue": {
"version": "5.4.1", "version": "5.9.2",
"resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-5.4.1.tgz", "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-5.9.2.tgz",
"integrity": "sha512-oUvP7z3D5b1bGksKFtlf9+WAwAxuNHdXN2hQ51T/CEXFdkkZvXbZ8eA4pIk+bIISqvMeh6v+O/1XOblgoUl8VQ==", "integrity": "sha512-H+R7u3wXUp19L8kpE9VSfNX5ujPTn9d7CLXjxYN4t0tEcVBlLG8lXMQi5X0GBhJ/Px43r2iaykaH3PkYhbkhHQ==",
"dev": true,
"dependencies": { "dependencies": {
"@ionic/core": "5.4.1", "@ionic/core": "5.9.2",
"ionicons": "^5.1.2" "ionicons": "^5.1.2"
} }
}, },
@ -1376,10 +1377,9 @@
} }
}, },
"node_modules/@stencil/core": { "node_modules/@stencil/core": {
"version": "2.9.0", "version": "2.11.0",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.9.0.tgz", "resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.11.0.tgz",
"integrity": "sha512-kY3xYolZoJO1MKslL0NQccHy72R3TIl1prHgfmIrEoGcnMgc6uiskdWaGMuI5/sCGz9T+QuTVz76B1H2ySyBZg==", "integrity": "sha512-/IubCWhVXCguyMUp/3zGrg3c882+RJNg/zpiKfyfJL3kRCOwe+/MD8OoAXVGdd+xAohZKIi1Ik+EHFlsptsjLg==",
"dev": true,
"bin": { "bin": {
"stencil": "bin/stencil" "stencil": "bin/stencil"
}, },
@ -2617,12 +2617,23 @@
"license": "ISC" "license": "ISC"
}, },
"node_modules/ionicons": { "node_modules/ionicons": {
"version": "5.5.3", "version": "5.5.4",
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.5.3.tgz", "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.5.4.tgz",
"integrity": "sha512-L71djrMi8pAad66tpwdnO1vwcyluCFvehzxU1PpH1k/HpYBZhZ5IaYhqXipmqUvu5aEbd4cbRguYyI5Fd4bxTw==", "integrity": "sha512-3ph8X9my3inhabWEZ7N0XRA0MnnNQ1v9a602mLNgWsIXnxE9G5BybIZ/pws/OZZ/hoNlvSjk801N03yL9/FNgQ==",
"dev": true,
"dependencies": { "dependencies": {
"@stencil/core": "^2.5.0" "@stencil/core": "~2.10.0"
}
},
"node_modules/ionicons/node_modules/@stencil/core": {
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.10.0.tgz",
"integrity": "sha512-15rWMTPQ/sp0lSV82HVCXkIya3QLN+uBl7pqK4JnTrp4HiLrzLmNbWjbvgCs55gw0lULbCIGbRIEsFz+Pe/Q+A==",
"bin": {
"stencil": "bin/stencil"
},
"engines": {
"node": ">=12.10.0",
"npm": ">=6.0.0"
} }
}, },
"node_modules/is-ci": { "node_modules/is-ci": {
@ -5980,10 +5991,9 @@
} }
}, },
"node_modules/tslib": { "node_modules/tslib": {
"version": "1.14.1", "version": "2.3.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
"dev": true
}, },
"node_modules/type-check": { "node_modules/type-check": {
"version": "0.3.2", "version": "0.3.2",
@ -6618,22 +6628,21 @@
"dev": true "dev": true
}, },
"@ionic/core": { "@ionic/core": {
"version": "5.4.1", "version": "5.9.2",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.4.1.tgz", "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.9.2.tgz",
"integrity": "sha512-yONXeHjbVGUSL7zPgiCv0fQkw47VHJJ+8zVkYgTg4At+B0VhoLAMgS/ah3EUwSVTOATXdHa6Ak5+71uHPKpViQ==", "integrity": "sha512-1ZqSBS8R6tGQsc+LsLxIRv0q3Ww6jwgJXLvdn6FmVWfpPbBvT+CjCuU9hqJ5qwM+atErblUMYSexvvpws8lGAA==",
"dev": true,
"requires": { "requires": {
"ionicons": "^5.1.2", "@stencil/core": "^2.4.0",
"tslib": "^1.10.0" "ionicons": "^5.5.3",
"tslib": "^2.1.0"
} }
}, },
"@ionic/vue": { "@ionic/vue": {
"version": "5.4.1", "version": "5.9.2",
"resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-5.4.1.tgz", "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-5.9.2.tgz",
"integrity": "sha512-oUvP7z3D5b1bGksKFtlf9+WAwAxuNHdXN2hQ51T/CEXFdkkZvXbZ8eA4pIk+bIISqvMeh6v+O/1XOblgoUl8VQ==", "integrity": "sha512-H+R7u3wXUp19L8kpE9VSfNX5ujPTn9d7CLXjxYN4t0tEcVBlLG8lXMQi5X0GBhJ/Px43r2iaykaH3PkYhbkhHQ==",
"dev": true,
"requires": { "requires": {
"@ionic/core": "5.4.1", "@ionic/core": "5.9.2",
"ionicons": "^5.1.2" "ionicons": "^5.1.2"
} }
}, },
@ -7230,10 +7239,9 @@
} }
}, },
"@stencil/core": { "@stencil/core": {
"version": "2.9.0", "version": "2.11.0",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.9.0.tgz", "resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.11.0.tgz",
"integrity": "sha512-kY3xYolZoJO1MKslL0NQccHy72R3TIl1prHgfmIrEoGcnMgc6uiskdWaGMuI5/sCGz9T+QuTVz76B1H2ySyBZg==", "integrity": "sha512-/IubCWhVXCguyMUp/3zGrg3c882+RJNg/zpiKfyfJL3kRCOwe+/MD8OoAXVGdd+xAohZKIi1Ik+EHFlsptsjLg=="
"dev": true
}, },
"@tootallnate/once": { "@tootallnate/once": {
"version": "1.1.2", "version": "1.1.2",
@ -8061,12 +8069,18 @@
"dev": true "dev": true
}, },
"ionicons": { "ionicons": {
"version": "5.5.3", "version": "5.5.4",
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.5.3.tgz", "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.5.4.tgz",
"integrity": "sha512-L71djrMi8pAad66tpwdnO1vwcyluCFvehzxU1PpH1k/HpYBZhZ5IaYhqXipmqUvu5aEbd4cbRguYyI5Fd4bxTw==", "integrity": "sha512-3ph8X9my3inhabWEZ7N0XRA0MnnNQ1v9a602mLNgWsIXnxE9G5BybIZ/pws/OZZ/hoNlvSjk801N03yL9/FNgQ==",
"dev": true,
"requires": { "requires": {
"@stencil/core": "^2.5.0" "@stencil/core": "~2.10.0"
},
"dependencies": {
"@stencil/core": {
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.10.0.tgz",
"integrity": "sha512-15rWMTPQ/sp0lSV82HVCXkIya3QLN+uBl7pqK4JnTrp4HiLrzLmNbWjbvgCs55gw0lULbCIGbRIEsFz+Pe/Q+A=="
}
} }
}, },
"is-ci": { "is-ci": {
@ -10385,10 +10399,9 @@
} }
}, },
"tslib": { "tslib": {
"version": "1.14.1", "version": "2.3.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
"dev": true
}, },
"type-check": { "type-check": {
"version": "0.3.2", "version": "0.3.2",

View File

@ -3,6 +3,7 @@
"version": "5.9.2", "version": "5.9.2",
"description": "Vue Router integration for @ionic/vue", "description": "Vue Router integration for @ionic/vue",
"scripts": { "scripts": {
"prepublishOnly": "npm run build",
"test.spec": "jest", "test.spec": "jest",
"lint": "echo add linter", "lint": "echo add linter",
"bundle": "rollup --config rollup.config.js", "bundle": "rollup --config rollup.config.js",
@ -42,8 +43,10 @@
"url": "https://github.com/ionic-team/ionic/issues" "url": "https://github.com/ionic-team/ionic/issues"
}, },
"homepage": "https://github.com/ionic-team/ionic#readme", "homepage": "https://github.com/ionic-team/ionic#readme",
"dependencies": {
"@ionic/vue": "^5.4.2"
},
"devDependencies": { "devDependencies": {
"@ionic/vue": "5.4.1",
"@types/jest": "^26.0.13", "@types/jest": "^26.0.13",
"@types/node": "^14.10.1", "@types/node": "^14.10.1",
"jest": "^27.0.4", "jest": "^27.0.4",

View File

@ -3,6 +3,7 @@
"version": "5.9.2", "version": "5.9.2",
"description": "Vue specific wrapper for @ionic/core", "description": "Vue specific wrapper for @ionic/core",
"scripts": { "scripts": {
"prepublishOnly": "npm run build",
"lint": "echo add linter", "lint": "echo add linter",
"lint.fix": "npm run lint -- --fix", "lint.fix": "npm run lint -- --fix",
"test": "jest", "test": "jest",