Add WIP pre-release workflow

master
Brad Cornes 2023-08-21 16:28:54 +01:00
parent 4c702acf85
commit 1fb0019928
4 changed files with 195 additions and 68 deletions

View File

@ -0,0 +1,44 @@
import latestSemver from 'latest-semver'
import * as fs from 'fs/promises'
import assert from 'assert'
async function bumpVersion() {
let res = await fetch(
'https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery',
{
method: 'POST',
headers: {
accept: 'application/json;api-version=7.2-preview.1;excludeUrls=true',
'content-type': 'application/json',
},
body: JSON.stringify({
assetTypes: null,
flags: 2151,
filters: [
{
criteria: [{ filterType: 7, value: 'bradlc.vscode-tailwindcss' }],
direction: 2,
pageSize: 100,
pageNumber: 1,
sortBy: 0,
sortOrder: 0,
pagingToken: null,
},
],
}),
}
)
let { results } = await res.json()
let versions = results[0].extensions[0].versions.map(({ version }) => version)
let latest = latestSemver(versions)
let parts = latest.split('.')
assert(Number(parts[1]) % 2 === 1)
let nextVersion = `${parts[0]}.${parts[1]}.${Number(parts[2]) + 1}`
let pkgFilename = 'packages/vscode-tailwindcss/package.json'
let pkg = JSON.parse(await fs.readFile(pkgFilename, 'utf8'))
await fs.writeFile(pkgFilename, JSON.stringify({ ...pkg, version: nextVersion }, null, 2), 'utf8')
}
bumpVersion()

View File

@ -0,0 +1,38 @@
name: Publish pre-release
concurrency: publish
on:
push:
branches: [master]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Install dependencies
run: npm install && npm run bootstrap
- name: Bump version
run: >
node .github/workflows/bump-version.mjs &&
cat packages/vscode-tailwindcss/package.json
# - name: Publish
# env:
# VSCODE_TOKEN: ${{ secrets.VSCODE_TOKEN }}
# run: npx lerna run publish --scope=vscode-tailwindcss -- --pre-release -p $VSCODE_TOKEN
- name: Build LSP
run: npx lerna run build --scope=tailwindcss-language-server
- name: Resolve LSP version
run: |
echo "SHA_SHORT=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
- name: 'Version LSP based on commit: 0.0.0-insiders.${{ env.SHA_SHORT }}'
run: >
cd packages/tailwindcss-language-server &&
npm version 0.0.0-insiders.${{ env.SHA_SHORT }} --force --no-git-tag-version
- name: Publish LSP
run: >
cd packages/tailwindcss-language-server &&
npm publish --tag insiders
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

180
package-lock.json generated
View File

@ -71,6 +71,7 @@
}, },
"devDependencies": { "devDependencies": {
"esbuild": "0.14.11", "esbuild": "0.14.11",
"latest-semver": "^4.0.0",
"lerna": "^3.22.1", "lerna": "^3.22.1",
"mri": "1.2.0" "mri": "1.2.0"
} }
@ -6403,9 +6404,9 @@
} }
}, },
"node_modules/caniuse-lite": { "node_modules/caniuse-lite": {
"version": "1.0.30001521", "version": "1.0.30001522",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001521.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001522.tgz",
"integrity": "sha512-fnx1grfpEOvDGH+V17eccmNjucGUnCbP6KL+l5KqBIerp26WK/+RQ7CIDE37KGJjaPyqWXXlFUyKiWmvdNNKmQ==", "integrity": "sha512-TKiyTVZxJGhsTszLuzb+6vUZSjVOAhClszBr2Ta2k9IwtNBT/4dzmL6aywt0HCgEZlmwJzXJd8yNiob6HgwTRg==",
"funding": [ "funding": [
{ {
"type": "opencollective", "type": "opencollective",
@ -6643,6 +6644,18 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/clean-semver": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/clean-semver/-/clean-semver-2.1.0.tgz",
"integrity": "sha512-a5sIRLwP078fc3/AEDfSxD8GmMBJlxYCUnRfXjldyy9RjwXxNVuK9hLwDar4sceJhZp6G+66ukNZsVFIqN28jg==",
"dev": true,
"dependencies": {
"semver": "^7.3.2"
},
"engines": {
"node": ">=10"
}
},
"node_modules/cli-cursor": { "node_modules/cli-cursor": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
@ -7462,11 +7475,11 @@
} }
}, },
"node_modules/core-js-compat": { "node_modules/core-js-compat": {
"version": "3.32.0", "version": "3.32.1",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.0.tgz", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.1.tgz",
"integrity": "sha512-7a9a3D1k4UCVKnLhrgALyFcP7YCsLOQIxPd0dKjf/6GuPcgyiGP70ewWdCGrSK7evyhymi0qO4EqCmSJofDeYw==", "integrity": "sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==",
"dependencies": { "dependencies": {
"browserslist": "^4.21.9" "browserslist": "^4.21.10"
}, },
"funding": { "funding": {
"type": "opencollective", "type": "opencollective",
@ -8040,9 +8053,9 @@
} }
}, },
"node_modules/electron-to-chromium": { "node_modules/electron-to-chromium": {
"version": "1.4.493", "version": "1.4.496",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.493.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.496.tgz",
"integrity": "sha512-T1k9mhYPdjnmS4VAz4J1oKVn6/M6LxoqQEVtYRL0swJVj73bA2NzqF0HjwxGsW3zL3ir0oPmLfd7lyi/RYzreg==" "integrity": "sha512-qeXC3Zbykq44RCrBa4kr8v/dWzYJA8rAwpyh9Qd+NKWoJfjG5vvJqy9XOJ9H4P/lqulZBCgUWAYi+FeK5AuJ8g=="
}, },
"node_modules/emoji-regex": { "node_modules/emoji-regex": {
"version": "9.2.2", "version": "9.2.2",
@ -8744,9 +8757,9 @@
} }
}, },
"node_modules/eslint-plugin-import": { "node_modules/eslint-plugin-import": {
"version": "2.28.0", "version": "2.28.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.0.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz",
"integrity": "sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==", "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==",
"dependencies": { "dependencies": {
"array-includes": "^3.1.6", "array-includes": "^3.1.6",
"array.prototype.findlastindex": "^1.2.2", "array.prototype.findlastindex": "^1.2.2",
@ -8757,13 +8770,12 @@
"eslint-import-resolver-node": "^0.3.7", "eslint-import-resolver-node": "^0.3.7",
"eslint-module-utils": "^2.8.0", "eslint-module-utils": "^2.8.0",
"has": "^1.0.3", "has": "^1.0.3",
"is-core-module": "^2.12.1", "is-core-module": "^2.13.0",
"is-glob": "^4.0.3", "is-glob": "^4.0.3",
"minimatch": "^3.1.2", "minimatch": "^3.1.2",
"object.fromentries": "^2.0.6", "object.fromentries": "^2.0.6",
"object.groupby": "^1.0.0", "object.groupby": "^1.0.0",
"object.values": "^1.1.6", "object.values": "^1.1.6",
"resolve": "^1.22.3",
"semver": "^6.3.1", "semver": "^6.3.1",
"tsconfig-paths": "^3.14.2" "tsconfig-paths": "^3.14.2"
}, },
@ -8805,22 +8817,6 @@
"node": "*" "node": "*"
} }
}, },
"node_modules/eslint-plugin-import/node_modules/resolve": {
"version": "1.22.4",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz",
"integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==",
"dependencies": {
"is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
"bin": {
"resolve": "bin/resolve"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/eslint-plugin-import/node_modules/semver": { "node_modules/eslint-plugin-import/node_modules/semver": {
"version": "6.3.1", "version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
@ -14200,9 +14196,9 @@
} }
}, },
"node_modules/jiti": { "node_modules/jiti": {
"version": "1.19.1", "version": "1.19.3",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.1.tgz", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.3.tgz",
"integrity": "sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==", "integrity": "sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==",
"bin": { "bin": {
"jiti": "bin/jiti.js" "jiti": "bin/jiti.js"
} }
@ -14444,6 +14440,21 @@
"language-subtag-registry": "~0.3.2" "language-subtag-registry": "~0.3.2"
} }
}, },
"node_modules/latest-semver": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/latest-semver/-/latest-semver-4.0.0.tgz",
"integrity": "sha512-flUamL125jFTL9xLuEI/hvzdMhBGCUOwqT3Y2km3fyDiiEFaEnlfwiuxUvQ7BhHdwXWLrqXTytX3UNNd095kxA==",
"dev": true,
"dependencies": {
"to-semver": "^4.0.0"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/lerna": { "node_modules/lerna": {
"version": "3.22.1", "version": "3.22.1",
"resolved": "https://registry.npmjs.org/lerna/-/lerna-3.22.1.tgz", "resolved": "https://registry.npmjs.org/lerna/-/lerna-3.22.1.tgz",
@ -15667,9 +15678,9 @@
} }
}, },
"node_modules/node-abi": { "node_modules/node-abi": {
"version": "3.46.0", "version": "3.47.0",
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.46.0.tgz", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.47.0.tgz",
"integrity": "sha512-LXvP3AqTIrtvH/jllXjkNVbYifpRbt9ThTtymSMSuHmhugQLAWr99QQFTm+ZRht9ziUvdGOgB+esme1C6iE6Lg==", "integrity": "sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==",
"dependencies": { "dependencies": {
"semver": "^7.3.5" "semver": "^7.3.5"
}, },
@ -20499,6 +20510,22 @@
"node": ">=8.0" "node": ">=8.0"
} }
}, },
"node_modules/to-semver": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/to-semver/-/to-semver-4.0.0.tgz",
"integrity": "sha512-qARDZe0teB+/7EXkXE2cWnQddhLzunD72n+LGvSOHvti21kk9YHUSOjJpWDTLJ44MP7VNWFzo5n10PUwr2r3zA==",
"dev": true,
"dependencies": {
"clean-semver": "^2.1.0",
"semver": "^7.3.5"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/tough-cookie": { "node_modules/tough-cookie": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz",
@ -27084,9 +27111,9 @@
} }
}, },
"caniuse-lite": { "caniuse-lite": {
"version": "1.0.30001521", "version": "1.0.30001522",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001521.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001522.tgz",
"integrity": "sha512-fnx1grfpEOvDGH+V17eccmNjucGUnCbP6KL+l5KqBIerp26WK/+RQ7CIDE37KGJjaPyqWXXlFUyKiWmvdNNKmQ==" "integrity": "sha512-TKiyTVZxJGhsTszLuzb+6vUZSjVOAhClszBr2Ta2k9IwtNBT/4dzmL6aywt0HCgEZlmwJzXJd8yNiob6HgwTRg=="
}, },
"capture-exit": { "capture-exit": {
"version": "2.0.0", "version": "2.0.0",
@ -27264,6 +27291,15 @@
} }
} }
}, },
"clean-semver": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/clean-semver/-/clean-semver-2.1.0.tgz",
"integrity": "sha512-a5sIRLwP078fc3/AEDfSxD8GmMBJlxYCUnRfXjldyy9RjwXxNVuK9hLwDar4sceJhZp6G+66ukNZsVFIqN28jg==",
"dev": true,
"requires": {
"semver": "^7.3.2"
}
},
"cli-cursor": { "cli-cursor": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
@ -27911,11 +27947,11 @@
"integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
}, },
"core-js-compat": { "core-js-compat": {
"version": "3.32.0", "version": "3.32.1",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.0.tgz", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.1.tgz",
"integrity": "sha512-7a9a3D1k4UCVKnLhrgALyFcP7YCsLOQIxPd0dKjf/6GuPcgyiGP70ewWdCGrSK7evyhymi0qO4EqCmSJofDeYw==", "integrity": "sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==",
"requires": { "requires": {
"browserslist": "^4.21.9" "browserslist": "^4.21.10"
} }
}, },
"core-util-is": { "core-util-is": {
@ -28362,9 +28398,9 @@
} }
}, },
"electron-to-chromium": { "electron-to-chromium": {
"version": "1.4.493", "version": "1.4.496",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.493.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.496.tgz",
"integrity": "sha512-T1k9mhYPdjnmS4VAz4J1oKVn6/M6LxoqQEVtYRL0swJVj73bA2NzqF0HjwxGsW3zL3ir0oPmLfd7lyi/RYzreg==" "integrity": "sha512-qeXC3Zbykq44RCrBa4kr8v/dWzYJA8rAwpyh9Qd+NKWoJfjG5vvJqy9XOJ9H4P/lqulZBCgUWAYi+FeK5AuJ8g=="
}, },
"emoji-regex": { "emoji-regex": {
"version": "9.2.2", "version": "9.2.2",
@ -29112,9 +29148,9 @@
} }
}, },
"eslint-plugin-import": { "eslint-plugin-import": {
"version": "2.28.0", "version": "2.28.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.0.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz",
"integrity": "sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==", "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==",
"requires": { "requires": {
"array-includes": "^3.1.6", "array-includes": "^3.1.6",
"array.prototype.findlastindex": "^1.2.2", "array.prototype.findlastindex": "^1.2.2",
@ -29125,13 +29161,12 @@
"eslint-import-resolver-node": "^0.3.7", "eslint-import-resolver-node": "^0.3.7",
"eslint-module-utils": "^2.8.0", "eslint-module-utils": "^2.8.0",
"has": "^1.0.3", "has": "^1.0.3",
"is-core-module": "^2.12.1", "is-core-module": "^2.13.0",
"is-glob": "^4.0.3", "is-glob": "^4.0.3",
"minimatch": "^3.1.2", "minimatch": "^3.1.2",
"object.fromentries": "^2.0.6", "object.fromentries": "^2.0.6",
"object.groupby": "^1.0.0", "object.groupby": "^1.0.0",
"object.values": "^1.1.6", "object.values": "^1.1.6",
"resolve": "^1.22.3",
"semver": "^6.3.1", "semver": "^6.3.1",
"tsconfig-paths": "^3.14.2" "tsconfig-paths": "^3.14.2"
}, },
@ -29161,16 +29196,6 @@
"brace-expansion": "^1.1.7" "brace-expansion": "^1.1.7"
} }
}, },
"resolve": {
"version": "1.22.4",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz",
"integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==",
"requires": {
"is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
}
},
"semver": { "semver": {
"version": "6.3.1", "version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
@ -33053,9 +33078,9 @@
} }
}, },
"jiti": { "jiti": {
"version": "1.19.1", "version": "1.19.3",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.1.tgz", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.3.tgz",
"integrity": "sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==" "integrity": "sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w=="
}, },
"jpjs": { "jpjs": {
"version": "1.2.1", "version": "1.2.1",
@ -33245,6 +33270,15 @@
"language-subtag-registry": "~0.3.2" "language-subtag-registry": "~0.3.2"
} }
}, },
"latest-semver": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/latest-semver/-/latest-semver-4.0.0.tgz",
"integrity": "sha512-flUamL125jFTL9xLuEI/hvzdMhBGCUOwqT3Y2km3fyDiiEFaEnlfwiuxUvQ7BhHdwXWLrqXTytX3UNNd095kxA==",
"dev": true,
"requires": {
"to-semver": "^4.0.0"
}
},
"lerna": { "lerna": {
"version": "3.22.1", "version": "3.22.1",
"resolved": "https://registry.npmjs.org/lerna/-/lerna-3.22.1.tgz", "resolved": "https://registry.npmjs.org/lerna/-/lerna-3.22.1.tgz",
@ -34237,9 +34271,9 @@
} }
}, },
"node-abi": { "node-abi": {
"version": "3.46.0", "version": "3.47.0",
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.46.0.tgz", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.47.0.tgz",
"integrity": "sha512-LXvP3AqTIrtvH/jllXjkNVbYifpRbt9ThTtymSMSuHmhugQLAWr99QQFTm+ZRht9ziUvdGOgB+esme1C6iE6Lg==", "integrity": "sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==",
"requires": { "requires": {
"semver": "^7.3.5" "semver": "^7.3.5"
} }
@ -37936,6 +37970,16 @@
"is-number": "^7.0.0" "is-number": "^7.0.0"
} }
}, },
"to-semver": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/to-semver/-/to-semver-4.0.0.tgz",
"integrity": "sha512-qARDZe0teB+/7EXkXE2cWnQddhLzunD72n+LGvSOHvti21kk9YHUSOjJpWDTLJ44MP7VNWFzo5n10PUwr2r3zA==",
"dev": true,
"requires": {
"clean-semver": "^2.1.0",
"semver": "^7.3.5"
}
},
"tough-cookie": { "tough-cookie": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz",

View File

@ -7,6 +7,7 @@
}, },
"devDependencies": { "devDependencies": {
"esbuild": "0.14.11", "esbuild": "0.14.11",
"latest-semver": "^4.0.0",
"lerna": "^3.22.1", "lerna": "^3.22.1",
"mri": "1.2.0" "mri": "1.2.0"
} }