From 171b22143134fcfd74c5cf4a62b4a2aa3930d797 Mon Sep 17 00:00:00 2001 From: Timeless0911 <1604889533@qq.com> Date: Thu, 30 Nov 2023 13:16:27 +0800 Subject: [PATCH 1/2] chore: use pnpm install --- pnpm-lock.yaml | 280 ++++++++++++++++-- scripts/package.json | 2 +- scripts/src/main.ts | 4 +- scripts/src/pr-bench.ts | 4 +- .../{yarn-install.ts => pnpm-install.ts} | 61 ++-- 5 files changed, 296 insertions(+), 55 deletions(-) rename scripts/src/runners/{yarn-install.ts => pnpm-install.ts} (80%) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 30d37b5fd..141a1244f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,15 +10,15 @@ importers: scripts: dependencies: + '@pnpm/lockfile-file': + specifier: 8.1.4 + version: 8.1.4(@pnpm/logger@5.0.0) '@types/fs-extra': specifier: 9.0.13 version: 9.0.13 '@types/node': specifier: 17.0.35 version: 17.0.35 - '@yarnpkg/lockfile': - specifier: 1.1.0 - version: 1.1.0 axios: specifier: 0.27.2 version: 0.27.2 @@ -2355,7 +2355,7 @@ packages: terser-webpack-plugin: 5.3.9(esbuild@0.17.19)(webpack@5.89.0) ts-loader: 9.4.4(typescript@5.2.2)(webpack@5.89.0) tsconfig-paths-webpack-plugin: 4.1.0 - webpack: 5.89.0 + webpack: 5.89.0(esbuild@0.17.19) webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.5.3)(webpack@5.89.0) transitivePeerDependencies: - '@babel/traverse' @@ -2810,9 +2810,110 @@ packages: react-refresh: 0.14.0 schema-utils: 3.3.0 source-map: 0.7.4 - webpack: 5.89.0 + webpack: 5.89.0(esbuild@0.17.19) dev: true + /@pnpm/constants@7.1.1: + resolution: {integrity: sha512-31pZqMtjwV+Vaq7MaPrT1EoDFSYwye3dp6BiHIGRJmVThCQwySRKM7hCvqqI94epNkqFAAYoWrNynWoRYosGdw==} + engines: {node: '>=16.14'} + dev: false + + /@pnpm/crypto.base32-hash@2.0.0: + resolution: {integrity: sha512-3ttOeHBpmWRbgJrpDQ8Nwd3W8s8iuiP5YZM0JRyKWaMtX8lu9d7/AKyxPmhYsMJuN+q/1dwHa7QFeDZJ53b0oA==} + engines: {node: '>=16.14'} + dependencies: + rfc4648: 1.5.3 + dev: false + + /@pnpm/dependency-path@2.1.5: + resolution: {integrity: sha512-Ki7v96NDlUzkIkgujSl+3sDY/nMjujOaDOTmjEeBebPiow53Y9Bw/UnxI8C2KKsnm/b7kUJPeFVbOhg3HMp7/Q==} + engines: {node: '>=16.14'} + dependencies: + '@pnpm/crypto.base32-hash': 2.0.0 + '@pnpm/types': 9.4.0 + encode-registry: 3.0.1 + semver: 7.5.4 + dev: false + + /@pnpm/error@5.0.2: + resolution: {integrity: sha512-0TEm+tWNYm+9uh6DSKyRbv8pv/6b4NL0PastLvMxIoqZbBZ5Zj1cYi332R9xsSUi31ZOsu2wpgn/bC7DA9hrjg==} + engines: {node: '>=16.14'} + dependencies: + '@pnpm/constants': 7.1.1 + dev: false + + /@pnpm/git-utils@1.0.0: + resolution: {integrity: sha512-lUI+XrzOJN4zdPGOGnFUrmtXAXpXi8wD8OI0nWOZmlh+raqbLzC3VkXu1zgaduOK6YonOcnQW88O+ojav1rAdA==} + engines: {node: '>=16.14'} + dependencies: + execa: /safe-execa@0.1.2 + dev: false + + /@pnpm/lockfile-file@8.1.4(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-0HmooRDED6Kl3nliwDJXQ+ymhfvuPNgSOF9dEy7KcFn2iOm47eRqMugk7xOa3WvEXzHVIT54clqCSzF16OV54w==} + engines: {node: '>=16.14'} + peerDependencies: + '@pnpm/logger': ^5.0.0 + dependencies: + '@pnpm/constants': 7.1.1 + '@pnpm/dependency-path': 2.1.5 + '@pnpm/error': 5.0.2 + '@pnpm/git-utils': 1.0.0 + '@pnpm/lockfile-types': 5.1.3 + '@pnpm/logger': 5.0.0 + '@pnpm/merge-lockfile-changes': 5.0.5 + '@pnpm/types': 9.4.0 + '@pnpm/util.lex-comparator': 1.0.0 + '@zkochan/rimraf': 2.1.3 + comver-to-semver: 1.0.0 + js-yaml: /@zkochan/js-yaml@0.0.6 + normalize-path: 3.0.0 + ramda: /@pnpm/ramda@0.28.1 + semver: 7.5.4 + sort-keys: 4.2.0 + strip-bom: 4.0.0 + write-file-atomic: 5.0.1 + dev: false + + /@pnpm/lockfile-types@5.1.3: + resolution: {integrity: sha512-dOVvpqLwCKfKdH4Civ+FwM1jRfiNc3w8QfgbLemFXbpPIQxeIm6qt2HCGafz65SJGbRS5DOe9DKxSJg4QkmStQ==} + engines: {node: '>=16.14'} + dependencies: + '@pnpm/types': 9.4.0 + dev: false + + /@pnpm/logger@5.0.0: + resolution: {integrity: sha512-YfcB2QrX+Wx1o6LD1G2Y2fhDhOix/bAY/oAnMpHoNLsKkWIRbt1oKLkIFvxBMzLwAEPqnYWguJrYC+J6i4ywbw==} + engines: {node: '>=12.17'} + dependencies: + bole: 5.0.9 + ndjson: 2.0.0 + dev: false + + /@pnpm/merge-lockfile-changes@5.0.5: + resolution: {integrity: sha512-4jJnoWcWieq19+qTC1ydXTfHxkuP46FR6Rbhyu+uovyPGF764q44bp2RTMwxGbSrYjqTf6IQuN0Gl0ViKhi/1Q==} + engines: {node: '>=16.14'} + dependencies: + '@pnpm/lockfile-types': 5.1.3 + comver-to-semver: 1.0.0 + ramda: /@pnpm/ramda@0.28.1 + semver: 7.5.4 + dev: false + + /@pnpm/ramda@0.28.1: + resolution: {integrity: sha512-zcAG+lvU0fMziNeGXpPyCyCJYp5ZVrPElEE4t14jAmViaihohocZ+dDkcRIyAomox8pQsuZnv1EyHR+pOhmUWw==} + dev: false + + /@pnpm/types@9.4.0: + resolution: {integrity: sha512-IRDuIuNobLRQe0UyY2gbrrTzYS46tTNvOEfL6fOf0Qa8NyxUzeXz946v7fQuQE3LSBf8ENBC5SXhRmDl+mBEqA==} + engines: {node: '>=16.14'} + dev: false + + /@pnpm/util.lex-comparator@1.0.0: + resolution: {integrity: sha512-3aBQPHntVgk5AweBWZn+1I/fqZ9krK/w01197aYVkAJQGftb+BVWgEepxY5GChjSW12j52XX+CmfynYZ/p0DFQ==} + engines: {node: '>=12.22.0'} + dev: false + /@remix-run/node@1.19.3: resolution: {integrity: sha512-z5qrVL65xLXIUpU4mkR4MKlMeKARLepgHAk4W5YY3IBXOreRqOGUC70POViYmY7x38c2Ia1NwqL80H+0h7jbMw==} engines: {node: '>=14.0.0'} @@ -3544,8 +3645,26 @@ packages: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} dev: true - /@yarnpkg/lockfile@1.1.0: - resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} + /@zkochan/js-yaml@0.0.6: + resolution: {integrity: sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: false + + /@zkochan/rimraf@2.1.3: + resolution: {integrity: sha512-mCfR3gylCzPC+iqdxEA6z5SxJeOgzgbwmyxanKriIne5qZLswDe/M43aD3p5MNzwzXRhbZg/OX+MpES6Zk1a6A==} + engines: {node: '>=12.10'} + dependencies: + rimraf: 3.0.2 + dev: false + + /@zkochan/which@2.0.3: + resolution: {integrity: sha512-C1ReN7vt2/2O0fyTsx5xnbQuxBrmG5NMSbcIkPKCCfCTJgpZBsuRYzFXHj3nVq8vTfK7vxHUmzfCpSHgO7j4rg==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 dev: false /@zxing/text-encoding@0.9.0: @@ -3702,7 +3821,6 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true /arr-union@3.1.0: resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} @@ -3907,6 +4025,13 @@ packages: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} dev: true + /bole@5.0.9: + resolution: {integrity: sha512-35GeBG6T7GW9VmLDF2IoKAtFCqMjmmq1uICbsICI0pID7ZAyUKlf7dg1wpXmn9GcMKHtg0S19CPMU5yfY3tv+g==} + dependencies: + fast-safe-stringify: 2.1.1 + individual: 3.0.0 + dev: false + /boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: true @@ -4298,6 +4423,11 @@ packages: resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} dev: false + /comver-to-semver@1.0.0: + resolution: {integrity: sha512-gcGtbRxjwROQOdXLUWH1fQAXqThUVRZ219aAwgtX3KfYw429/Zv6EIJRf5TBSzWdAGwePmqH7w70WTaX4MDqag==} + engines: {node: '>=12.17'} + dev: false + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -4905,6 +5035,13 @@ packages: engines: {node: '>= 4'} dev: true + /encode-registry@3.0.1: + resolution: {integrity: sha512-6qOwkl1g0fv0DN3Y3ggr2EaZXN71aoAqPp3p/pVaWSBSIo+YjLOWN61Fva43oVyQNPf7kgm8lkudzlzojwE2jw==} + engines: {node: '>=10'} + dependencies: + mem: 8.1.1 + dev: false + /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -5250,6 +5387,10 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true + /fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + dev: false + /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: @@ -5700,7 +5841,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.89.0 + webpack: 5.89.0(esbuild@0.17.19) dev: true /htmlparser2@6.1.0: @@ -5816,13 +5957,16 @@ packages: /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - dev: true /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} dev: true + /individual@3.0.0: + resolution: {integrity: sha512-rUY5vtT748NMRbEMrTNiFfy29BgGZwGXUi2NFUVMWQrogSLzlJvQV9eeMWi+g1aVaQ53tpyLAQtd5x/JH0Nh1g==} + dev: false + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -5982,6 +6126,11 @@ packages: engines: {node: '>=8'} dev: true + /is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + dev: false + /is-plain-obj@3.0.0: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} engines: {node: '>=10'} @@ -6135,6 +6284,10 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true + /json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + dev: false + /json2module@0.0.3: resolution: {integrity: sha512-qYGxqrRrt4GbB8IEOy1jJGypkNsjWoIMlZt4bAsmUScCA507Hbc2p1JOhBzqn45u3PWafUgH2OnzyNU7udO/GA==} hasBin: true @@ -6329,7 +6482,6 @@ packages: engines: {node: '>=10'} dependencies: yallist: 4.0.0 - dev: true /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} @@ -6338,6 +6490,13 @@ packages: pify: 4.0.1 semver: 5.7.2 + /map-age-cleaner@0.1.3: + resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} + engines: {node: '>=6'} + dependencies: + p-defer: 1.0.0 + dev: false + /md5.js@1.3.5: resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} dependencies: @@ -6354,6 +6513,14 @@ packages: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} dev: true + /mem@8.1.1: + resolution: {integrity: sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==} + engines: {node: '>=10'} + dependencies: + map-age-cleaner: 0.1.3 + mimic-fn: 3.1.0 + dev: false + /memfs@3.5.3: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} @@ -6412,6 +6579,11 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + /mimic-fn@3.1.0: + resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} + engines: {node: '>=8'} + dev: false + /mini-css-extract-plugin@2.7.6(webpack@5.89.0): resolution: {integrity: sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==} engines: {node: '>= 12.13.0'} @@ -6419,7 +6591,7 @@ packages: webpack: ^5.0.0 dependencies: schema-utils: 4.2.0 - webpack: 5.89.0 + webpack: 5.89.0(esbuild@0.17.19) dev: true /minimalistic-assert@1.0.1: @@ -6520,6 +6692,18 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true + /ndjson@2.0.0: + resolution: {integrity: sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + json-stringify-safe: 5.0.1 + minimist: 1.2.8 + readable-stream: 3.6.2 + split2: 3.2.2 + through2: 4.0.2 + dev: false + /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true @@ -6682,6 +6866,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /p-defer@1.0.0: + resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} + engines: {node: '>=4'} + dev: false + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -6800,6 +6989,10 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + /path-name@1.0.0: + resolution: {integrity: sha512-/dcAb5vMXH0f51yvMuSUqFpxUcA8JelbRmE5mW/p4CUJxrNgK24IkstnV7ENtg2IDGBOu6izKTG6eilbnbNKWQ==} + dev: false + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -7357,7 +7550,6 @@ packages: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: true /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} @@ -7471,6 +7663,10 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + /rfc4648@1.5.3: + resolution: {integrity: sha512-MjOWxM065+WswwnmNONOT+bD1nXzY9Km6u3kzvnx8F8/HXGZdz3T6e6vZJ8Q/RIMUSp/nxqjH3GwvJDy8ijeQQ==} + dev: false + /right-align@0.1.3: resolution: {integrity: sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==} engines: {node: '>=0.10.0'} @@ -7483,7 +7679,6 @@ packages: hasBin: true dependencies: glob: 7.2.3 - dev: true /ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} @@ -7553,7 +7748,15 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true + + /safe-execa@0.1.2: + resolution: {integrity: sha512-vdTshSQ2JsRCgT8eKZWNJIL26C6bVqy1SOmuCMlKHegVeo8KYRobRrefOdUq9OozSPUUiSxrylteeRmLOMFfWg==} + engines: {node: '>=12'} + dependencies: + '@zkochan/which': 2.0.3 + execa: 5.1.1 + path-name: 1.0.0 + dev: false /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} @@ -7611,7 +7814,6 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 - dev: true /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} @@ -7730,6 +7932,11 @@ packages: /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: false + /simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} dependencies: @@ -7751,6 +7958,13 @@ packages: tslib: 2.6.2 dev: true + /sort-keys@4.2.0: + resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==} + engines: {node: '>=8'} + dependencies: + is-plain-obj: 2.1.0 + dev: false + /source-list-map@2.0.1: resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} dev: true @@ -7794,6 +8008,12 @@ packages: engines: {node: '>= 8'} dev: true + /split2@3.2.2: + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} + dependencies: + readable-stream: 3.6.2 + dev: false + /stackframe@1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} dev: true @@ -7868,7 +8088,6 @@ packages: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - dev: true /strip-ansi@3.0.1: resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} @@ -7889,6 +8108,11 @@ packages: engines: {node: '>=4'} dev: true + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: false + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -8080,7 +8304,7 @@ packages: schema-utils: 3.3.0 serialize-javascript: 6.0.1 terser: 5.22.0 - webpack: 5.89.0 + webpack: 5.89.0(esbuild@0.17.19) dev: true /terser-webpack-plugin@5.3.9(webpack@5.89.0): @@ -8122,6 +8346,12 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + dependencies: + readable-stream: 3.6.2 + dev: false + /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true @@ -8175,7 +8405,7 @@ packages: micromatch: 4.0.5 semver: 7.5.4 typescript: 5.2.2 - webpack: 5.89.0 + webpack: 5.89.0(esbuild@0.17.19) dev: true /tsconfig-paths-webpack-plugin@4.1.0: @@ -8382,7 +8612,6 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: true /util@0.10.4: resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} @@ -8466,7 +8695,7 @@ packages: dependencies: html-webpack-plugin: 5.5.3(webpack@5.89.0) typed-assert: 1.0.9 - webpack: 5.89.0 + webpack: 5.89.0(esbuild@0.17.19) dev: true /webpack@5.89.0: @@ -8598,6 +8827,14 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + /write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + dev: false + /ws@8.14.2: resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} engines: {node: '>=10.0.0'} @@ -8621,7 +8858,6 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} diff --git a/scripts/package.json b/scripts/package.json index 88f5c68fd..426c5cfc4 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -35,9 +35,9 @@ } }, "dependencies": { + "@pnpm/lockfile-file": "8.1.4", "@types/node": "17.0.35", "@types/fs-extra": "9.0.13", - "@yarnpkg/lockfile": "1.1.0", "get-folder-size": "2.0.1", "axios": "0.27.2", "execa": "5.1.1", diff --git a/scripts/src/main.ts b/scripts/src/main.ts index 427f01476..0cbe9fad6 100644 --- a/scripts/src/main.ts +++ b/scripts/src/main.ts @@ -3,7 +3,7 @@ import { dev } from './runners/dev'; import { build } from './runners/build'; import { cloneRepo, getDataPath, mergeMetrics } from './shared'; import { remove } from 'fs-extra'; -import { yarnInstall } from './runners/yarn-install'; +import { pnpmInstall } from './runners/pnpm-install'; const productName = process.argv[2]; const caseName = process.argv[3]; @@ -30,7 +30,7 @@ async function main() { } try { - await yarnInstall(productName, caseName); + await pnpmInstall(productName, caseName); } catch (err) { console.log('failed to collect install size metrics:', err); } diff --git a/scripts/src/pr-bench.ts b/scripts/src/pr-bench.ts index b1ea9e6a6..6d895456c 100644 --- a/scripts/src/pr-bench.ts +++ b/scripts/src/pr-bench.ts @@ -8,7 +8,7 @@ import { mergeMetrics, } from './shared'; import { remove } from 'fs-extra'; -import { yarnInstall } from './runners/yarn-install'; +import { pnpmInstall } from './runners/pnpm-install'; const productName = process.argv[2]; @@ -37,7 +37,7 @@ async function prBench() { !ValidMetricsForCase[caseName as keyof typeof ValidMetricsForCase] ) { try { - await yarnInstall(productName, caseName); + await pnpmInstall(productName, caseName); } catch (err) { console.log('failed to collect install size metrics:', err); } diff --git a/scripts/src/runners/yarn-install.ts b/scripts/src/runners/pnpm-install.ts similarity index 80% rename from scripts/src/runners/yarn-install.ts rename to scripts/src/runners/pnpm-install.ts index 7960ffccb..e7742379d 100644 --- a/scripts/src/runners/yarn-install.ts +++ b/scripts/src/runners/pnpm-install.ts @@ -3,12 +3,12 @@ import { copy, ensureDir, outputJson, - readFile, readJson, remove, + rename, + writeFile, } from 'fs-extra'; import { - ROOT_PATH, getCaseSrcPath, getRepoName, getRepoPath, @@ -114,24 +114,19 @@ const setPkgVersion = async (repoPath: string, pkgJsonPath: string) => { await outputJson(pkgJsonPath, pkgJson, { spaces: 2 }); }; -const parseLockFile = async (casePath: string) => { - const parser = require('@yarnpkg/lockfile'); - const lockFile = join(casePath, 'yarn.lock'); - const content = await readFile(lockFile, 'utf-8'); - const result = parser.parse(content); - if (result.type === 'success') { - return result.object; - } - throw new Error(`failed to parse ${lockFile}`); -}; - const runInstall = async (casePath: string) => { const coldStartTime = performance.now(); - await runCommand(casePath, 'yarn --registry https://registry.npmjs.org/'); + await runCommand( + casePath, + 'pnpm install --registry https://registry.npmjs.org/', + ); const coldInstallTime = performance.now() - coldStartTime; const hotStartTime = performance.now(); - await runCommand(casePath, 'yarn --registry https://registry.npmjs.org/'); + await runCommand( + casePath, + 'pnpm install --registry https://registry.npmjs.org/', + ); const hotInstallTime = performance.now() - hotStartTime; return { @@ -140,11 +135,6 @@ const runInstall = async (casePath: string) => { }; }; -const getDepCount = async (casePath: string) => { - const lockInfo = await parseLockFile(casePath); - return Object.keys(lockInfo).length; -}; - const getInstallSize = async (casePath: string) => { const nodeModulesPath = join(casePath, 'node_modules'); @@ -164,25 +154,40 @@ const getInstallSize = async (casePath: string) => { }); }; -export const yarnInstall = async (productName: string, caseName: string) => { +const getDepCount = async (casePath: string) => { + const { readWantedLockfile } = await import('@pnpm/lockfile-file'); + const lockfile = await readWantedLockfile(casePath, { + ignoreIncompatible: true, + }); + const packages = lockfile?.packages || {}; + + return Object.keys(packages).length; +}; + +export const pnpmInstall = async (productName: string, caseName: string) => { const repoPath = getRepoPath(getRepoName(productName)); const tempPath = getTempPath(productName); const casePath = join(tempPath, caseName); const pkgJsonPath = join(tempPath, caseName, 'package.json'); - const rootPkgJsonPath = join(ROOT_PATH, 'package.json'); await copyCase(productName, caseName, casePath); await setPkgVersion(repoPath, pkgJsonPath); - // to prevent Usage Error: This project is configured to use pnpm - const rootPkgJson = await readJson(rootPkgJsonPath); - const rootPkgJsonBak = await readJson(rootPkgJsonPath); - delete rootPkgJson.packageManager; - await outputJson(rootPkgJsonPath, rootPkgJson, { spaces: 2 }); + let workspacePath = join(casePath, '../../../pnpm-workspace.yaml'); + let backupPath = join(casePath, '../../../pnpm-workspace-backup.yaml'); + + await copy(workspacePath, backupPath); + await remove(workspacePath); + + let npmrcPath = join(casePath, '.npmrc'); + + let content = `auto-install-peers=false\npackage-import-method=copy\nshamefully-hoist=true\nnode-linker=hoisted`; + + await writeFile(npmrcPath, content); const { hotInstallTime, coldInstallTime } = await runInstall(casePath); - await outputJson(rootPkgJsonPath, rootPkgJsonBak, { spaces: 2 }); + await rename(backupPath, workspacePath); const installSize = await getInstallSize(casePath); const depCount = await getDepCount(casePath); From a5b32b239faeb73b7f7812014a9b9c33f4c6fae9 Mon Sep 17 00:00:00 2001 From: Timeless0911 <1604889533@qq.com> Date: Thu, 30 Nov 2023 13:20:01 +0800 Subject: [PATCH 2/2] test: 1 --- .github/workflows/manual.yaml | 32 ++++++++++++++--------------- pnpm-lock.yaml | 8 ++++++++ scripts/package.json | 1 + scripts/src/runners/pnpm-install.ts | 20 +++++++++++++++++- 4 files changed, 44 insertions(+), 17 deletions(-) diff --git a/.github/workflows/manual.yaml b/.github/workflows/manual.yaml index 9efa680ba..0794a9518 100644 --- a/.github/workflows/manual.yaml +++ b/.github/workflows/manual.yaml @@ -96,21 +96,21 @@ jobs: - name: 🚀 Run specified benchmark run: cd scripts && ONLY_INSTALL_SIZE=${{ github.event.inputs.onlyInstallSize }} GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} COMMIT_ID=${{ github.event.inputs.commitId }} pnpm start ${{ matrix.product }} ${{ matrix.case }} - - name: Setup git user - run: | - git config --global user.name "github-actions[bot]" - git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + # - name: Setup git user + # run: | + # git config --global user.name "github-actions[bot]" + # git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - - name: Install rsync - run: | - apt-get update && apt-get install -y rsync + # - name: Install rsync + # run: | + # apt-get update && apt-get install -y rsync - - name: Update data - uses: JamesIves/github-pages-deploy-action@v4.4.1 - with: - branch: gh-pages - folder: data - target-folder: data - git-config-name: gh-pages-bot - git-config-email: 41898282+github-actions[bot]@users.noreply.github.com - clean: false + # - name: Update data + # uses: JamesIves/github-pages-deploy-action@v4.4.1 + # with: + # branch: gh-pages + # folder: data + # target-folder: data + # git-config-name: gh-pages-bot + # git-config-email: 41898282+github-actions[bot]@users.noreply.github.com + # clean: false diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 141a1244f..c475386e8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,6 +25,9 @@ importers: consola: specifier: 2.15.3 version: 2.15.3 + detect-libc: + specifier: 2.0.2 + version: 2.0.2 execa: specifier: 5.1.1 version: 5.1.1 @@ -4902,6 +4905,11 @@ packages: resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} dev: false + /detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} + dev: false + /detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} dev: false diff --git a/scripts/package.json b/scripts/package.json index 426c5cfc4..887ce4528 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -38,6 +38,7 @@ "@pnpm/lockfile-file": "8.1.4", "@types/node": "17.0.35", "@types/fs-extra": "9.0.13", + "detect-libc": "2.0.2", "get-folder-size": "2.0.1", "axios": "0.27.2", "execa": "5.1.1", diff --git a/scripts/src/runners/pnpm-install.ts b/scripts/src/runners/pnpm-install.ts index e7742379d..99f2d5100 100644 --- a/scripts/src/runners/pnpm-install.ts +++ b/scripts/src/runners/pnpm-install.ts @@ -19,6 +19,7 @@ import { import fastGlob from 'fast-glob'; import { performance } from 'perf_hooks'; import getFolderSize from 'get-folder-size'; +import { familySync as getLibcFamilySync } from 'detect-libc'; const getAllDeps = (json: Record>) => ({ ...json.dependencies, @@ -99,7 +100,7 @@ const getPkgVersions = async (repoPath: string, pkgJsonPath: string) => { const setPkgVersion = async (repoPath: string, pkgJsonPath: string) => { const pkgVersions = await getPkgVersions(repoPath, pkgJsonPath); - const pkgJson = await readJson(pkgJsonPath); + let pkgJson = await readJson(pkgJsonPath); // override workspace protocol Object.keys(pkgVersions).forEach(key => { @@ -111,11 +112,25 @@ const setPkgVersion = async (repoPath: string, pkgJsonPath: string) => { } }); + // use supportedArchitectures, see https://github.com/pnpm/pnpm/releases/tag/v8.10.0 + pkgJson = { + ...pkgJson, + packageManager: 'pnpm@8.10.0', + pnpm: { + supportedArchitectures: { + os: ['linux'], + cpu: ['x64'], + libc: ['glibc'], + }, + }, + }; + await outputJson(pkgJsonPath, pkgJson, { spaces: 2 }); }; const runInstall = async (casePath: string) => { const coldStartTime = performance.now(); + await runCommand(casePath, 'corepack enable && pnpm -v'); await runCommand( casePath, 'pnpm install --registry https://registry.npmjs.org/', @@ -165,6 +180,7 @@ const getDepCount = async (casePath: string) => { }; export const pnpmInstall = async (productName: string, caseName: string) => { + console.log('getLibcFamilySync: ', getLibcFamilySync()); const repoPath = getRepoPath(getRepoName(productName)); const tempPath = getTempPath(productName); const casePath = join(tempPath, caseName); @@ -192,6 +208,8 @@ export const pnpmInstall = async (productName: string, caseName: string) => { const installSize = await getInstallSize(casePath); const depCount = await getDepCount(casePath); + await runCommand(join(casePath, 'node_modules/@rspack'), 'ls -l'); + return saveMetrics({ coldInstallTime: coldInstallTime, hotInstallTime: hotInstallTime,