ci
Version:
Run npm ci using the appropriate Node package manager (npm, yarn, pnpm)
4 lines (3 loc) • 1.75 kB
JavaScript
;var c=require("fs"),p=require("child_process");function m(n){return n&&typeof n=="object"&&"default"in n?n:{default:n}}var y=m(c);const g=()=>{try{const{packageManager:n}=JSON.parse(c.readFileSync("package.json","utf8"));if(n.startsWith("pnpm"))return n.slice(4)}catch{}},u=(n,e)=>n[0]-e[0]||n[1]-e[1]||n[2]-e[2]||0,k=[["8",{node:[16,14,0],lock:[6,0]}],["7",{node:[14,19,0],lock:[5,4]}],["6",{node:[12,17,0],lock:[5,3]}],["5",{node:[10,13,0],lock:[5,1]}]],S=(n,e)=>{const a=k.find(([d,{node:l,lock:o}])=>{const t=u(n,l)>=0,r=!e||u(e,o)===0;return t&&r});return a?`@${a[0]}`:""};function h(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}const w=y.default;var V=(n,e)=>{const i={encoding:"utf8",lineEnding:`
`};return Object.assign(i,e),new Promise((a,d)=>{const l=w.createReadStream(n,{encoding:i.encoding});let o="",t=0,r;l.on("data",s=>{r=s.indexOf(i.lineEnding),o+=s,r===-1?t+=s.length:(t+=r,l.close())}).on("close",()=>a(o.slice(o.charCodeAt(0)===65279?1:0,t))).on("error",s=>d(s))})},b=h(V);const f=n=>n.split(".").map(Number),F=async()=>{const e=(await b("pnpm-lock.yaml")).match(/\d+\.\d+/);if(e)return f(e[0])},j=async()=>{const n={stdio:"inherit",shell:!0};if(c.existsSync("package-lock.json"))return p.spawnSync("npm",["ci"],n);if(c.existsSync("yarn.lock"))return p.spawnSync("npx",["yarn","--immutable"],n);if(c.existsSync("pnpm-lock.yaml")){const e=g()||S(f(process.versions.node),await F());return p.spawnSync("npx",[`pnpm${e}`,"i","--frozen-lockfile"],n)}throw new Error("Error: No lock file (package-lock.json, yarn.lock, pnpm-lock.yaml) found")};(async()=>{try{const{status:n}=await j();process.exit(n)}catch(n){console.error(n.message),process.exitCode=1}})();