[{"data":1,"prerenderedAt":1818},["ShallowReactive",2],{"docs-navigation:en":3,"content-page:docs:ePGdaiSV3hrOp68RvdINm9aAjXRh1VIu9gkUgTjIr9A":72,"content-page-surround:docs:ePGdaiSV3hrOp68RvdINm9aAjXRh1VIu9gkUgTjIr9A":1807,"i-lucide:terminal":1810,"i-lucide:clipboard":1814,"i-lucide:file":1816},[4,12,18,24,30,36,42,48,54,60,66],{"title":5,"id":6,"canonicalKey":7,"locale":8,"draft":9,"icon":10,"path":11},"Overview","content:docs:1.overview.md","1","en",false,"lucide:compass","\u002Fdocs\u002Foverview",{"title":13,"id":14,"canonicalKey":15,"locale":8,"draft":9,"icon":16,"path":17},"Checklist","content:docs:2.checklist.md","2","lucide:list-checks","\u002Fdocs\u002Fchecklist",{"title":19,"id":20,"canonicalKey":21,"locale":8,"draft":9,"icon":22,"path":23},"Set up a repository","content:docs:3.set-up-a-repository.md","3","lucide:folder-plus","\u002Fdocs\u002Fset-up-a-repository",{"title":25,"id":26,"canonicalKey":27,"locale":8,"draft":9,"icon":28,"path":29},"Migrate a repository","content:docs:4.migrate-a-repository.md","4","lucide:arrow-right-left","\u002Fdocs\u002Fmigrate-a-repository",{"title":31,"id":32,"canonicalKey":33,"locale":8,"draft":9,"icon":34,"path":35},"Releasing","content:docs:5.releasing.md","5","lucide:rocket","\u002Fdocs\u002Freleasing",{"title":37,"id":38,"canonicalKey":39,"locale":8,"draft":9,"icon":40,"path":41},"Write library docs","content:docs:6.writing-docs.md","6","lucide:book-open","\u002Fdocs\u002Fwriting-docs",{"title":43,"id":44,"canonicalKey":45,"locale":8,"draft":9,"icon":46,"path":47},"Dependencies","content:docs:7.dependencies.md","7","lucide:package-search","\u002Fdocs\u002Fdependencies",{"title":49,"id":50,"canonicalKey":51,"locale":8,"draft":9,"icon":52,"path":53},"Security reports and incidents","content:docs:8.security.md","8","lucide:shield-alert","\u002Fdocs\u002Fsecurity",{"title":55,"id":56,"canonicalKey":57,"locale":8,"draft":9,"icon":58,"path":59},"Adding tooling","content:docs:9.adding-tooling.md","9","lucide:hammer","\u002Fdocs\u002Fadding-tooling",{"title":61,"id":62,"canonicalKey":63,"locale":8,"draft":9,"icon":64,"path":65},"Maintain the fleet","content:docs:10.maintain-the-fleet.md","10","lucide:calendar-check","\u002Fdocs\u002Fmaintain-the-fleet",{"title":67,"id":68,"canonicalKey":69,"locale":8,"draft":9,"icon":70,"path":71},"Troubleshooting","content:docs:11.troubleshooting.md","11","lucide:wrench","\u002Fdocs\u002Ftroubleshooting",{"title":31,"description":73,"icon":34,"redirectFrom":74,"body":84,"type":1796,"id":32,"canonicalKey":33,"draft":9,"partial":9,"locale":8,"collection":1797,"navigationFile":9,"file":1798,"route":1802,"resolution":1804},"The two-click release flow, prereleases, hotfixes, the first publication of a new package, and what to do when publishing fails.",[75,76,77,78,79,80,81,82,83],"\u002Fdocs\u002Fstandards\u002Flazy-maintainer-releases","\u002Fdocs\u002Fstandards\u002Frelease-security","\u002Fdocs\u002Fstandards\u002Fpackage-previews","\u002Fdocs\u002Fprocedures\u002Ffirst-npm-release","\u002Fdocs\u002Fprocedures\u002Fnormal-release","\u002Fdocs\u002Fprocedures\u002Fprerelease","\u002Fdocs\u002Fprocedures\u002Fhotfix","\u002Fdocs\u002Fprocedures\u002Frollback","\u002Fdocs\u002Fchecklists\u002Ffirst-release",{"type":85,"children":86,"toc":1784},"root",[87,112,119,360,382,418,455,461,491,576,595,685,737,754,760,778,784,854,878,915,932,973,989,995,1011,1043,1146,1157,1163,1168,1186,1507,1512,1518,1523,1768,1779],{"type":88,"tag":89,"props":90,"children":91},"element","p",{},[92,95,102,104,110],{"type":93,"value":94},"text","Releases use ",{"type":88,"tag":96,"props":97,"children":99},"a",{"href":98},"https:\u002F\u002Fgithub.com\u002Fchangesets\u002Fchangesets",[100],{"type":93,"value":101},"Changesets",{"type":93,"value":103},". The\nmaintainer does two things: merge the ",{"type":88,"tag":105,"props":106,"children":107},"strong",{},[108],{"type":93,"value":109},"Version packages",{"type":93,"value":111}," pull request, then\napprove the publish.",{"type":88,"tag":113,"props":114,"children":116},"h2",{"id":115},"the-flow",[117],{"type":93,"value":118},"The flow",{"type":88,"tag":120,"props":121,"children":122},"ol",{},[123,137,242,291,307,343,355],{"type":88,"tag":124,"props":125,"children":126},"li",{},[127,129,135],{"type":93,"value":128},"Every pull request that changes published behavior adds a changeset\n(",{"type":88,"tag":130,"props":131,"children":132},"code",{},[133],{"type":93,"value":134},"pnpm changeset",{"type":93,"value":136},"). Agents do this as part of the change.",{"type":88,"tag":124,"props":138,"children":139},{},[140,171],{"type":88,"tag":89,"props":141,"children":142},{},[143,145,150,152,156,158,163,165,169],{"type":93,"value":144},"After merge, ",{"type":88,"tag":130,"props":146,"children":147},{},[148],{"type":93,"value":149},"release.yml",{"type":93,"value":151}," keeps one open ",{"type":88,"tag":105,"props":153,"children":154},{},[155],{"type":93,"value":109},{"type":93,"value":157}," pull request\nup to date. It contains the new versions and the generated ",{"type":88,"tag":130,"props":159,"children":160},{},[161],{"type":93,"value":162},"CHANGELOG.md",{"type":93,"value":164},".\nNo formatter runs on it, so keep ",{"type":88,"tag":130,"props":166,"children":167},{},[168],{"type":93,"value":162},{"type":93,"value":170}," out of formatters and\nlinters that check Markdown. Two jobs build it:",{"type":88,"tag":172,"props":173,"children":174},"ul",{},[175,192],{"type":88,"tag":124,"props":176,"children":177},{},[178,183,185,190],{"type":88,"tag":105,"props":179,"children":180},{},[181],{"type":93,"value":182},"Prepare version",{"type":93,"value":184}," installs dependencies and runs ",{"type":88,"tag":130,"props":186,"children":187},{},[188],{"type":93,"value":189},"changeset version",{"type":93,"value":191},"\nwith a read-only token. It only uploads the result as a patch.",{"type":88,"tag":124,"props":193,"children":194},{},[195,199,201,206,208,212,214,219,221,226,228,233,235,240],{"type":88,"tag":105,"props":196,"children":197},{},[198],{"type":93,"value":109},{"type":93,"value":200}," installs and runs nothing from the repository. It\nrejects the patch if it changes anything in a ",{"type":88,"tag":130,"props":202,"children":203},{},[204],{"type":93,"value":205},"package.json",{"type":93,"value":207}," besides its\nversion and the ranges of the repository's own packages, or touches\nanything other than ",{"type":88,"tag":130,"props":209,"children":210},{},[211],{"type":93,"value":162},{"type":93,"value":213}," files and changeset files (not\n",{"type":88,"tag":130,"props":215,"children":216},{},[217],{"type":93,"value":218},".changeset\u002Fconfig.json",{"type":93,"value":220},"). Then it force-pushes\n",{"type":88,"tag":130,"props":222,"children":223},{},[224],{"type":93,"value":225},"changeset-release\u002Fmain",{"type":93,"value":227}," and opens or updates the pull request with ",{"type":88,"tag":130,"props":229,"children":230},{},[231],{"type":93,"value":232},"gh",{"type":93,"value":234},".\nA last small job starts ",{"type":88,"tag":130,"props":236,"children":237},{},[238],{"type":93,"value":239},"ci",{"type":93,"value":241}," on it.",{"type":88,"tag":124,"props":243,"children":244},{},[245,250,252,256,258,262,264,269,271,275,277,282,284,289],{"type":88,"tag":105,"props":246,"children":247},{},[248],{"type":93,"value":249},"Click 1:",{"type":93,"value":251}," merge the Version packages pull request. Look at its diff\nfirst: ",{"type":88,"tag":130,"props":253,"children":254},{},[255],{"type":93,"value":205},{"type":93,"value":257}," files should change only versions (and the ranges of\nthe repository's own packages), plus ",{"type":88,"tag":130,"props":259,"children":260},{},[261],{"type":93,"value":162},{"type":93,"value":263}," files and ",{"type":88,"tag":130,"props":265,"children":266},{},[267],{"type":93,"value":268},".changeset\u002F",{"type":93,"value":270},".\nAnything else means stop: close it and find out what pushed it. Read the new\nchangelog sections too: they must list only changes since the last release.\nIf its ",{"type":88,"tag":130,"props":272,"children":273},{},[274],{"type":93,"value":239},{"type":93,"value":276}," run waits for approval, approve it under ",{"type":88,"tag":105,"props":278,"children":279},{},[280],{"type":93,"value":281},"Actions",{"type":93,"value":283},"; see\n",{"type":88,"tag":96,"props":285,"children":287},{"href":286},"\u002Fdocs\u002Ftroubleshooting#github-actions",[288],{"type":93,"value":67},{"type":93,"value":290},".",{"type":88,"tag":124,"props":292,"children":293},{},[294,298,300,305],{"type":88,"tag":130,"props":295,"children":296},{},[297],{"type":93,"value":149},{"type":93,"value":299}," builds and packs every package whose new version is not on npm\nyet, and rehearses the publish with ",{"type":88,"tag":130,"props":301,"children":302},{},[303],{"type":93,"value":304},"npm publish --dry-run",{"type":93,"value":306},". This job has no\nsecrets.",{"type":88,"tag":124,"props":308,"children":309},{},[310,315,317,322,324,329,331,335,337,341],{"type":88,"tag":105,"props":311,"children":312},{},[313],{"type":93,"value":314},"Click 2:",{"type":93,"value":316}," approve the deployment to the ",{"type":88,"tag":130,"props":318,"children":319},{},[320],{"type":93,"value":321},"npm",{"type":93,"value":323}," environment in the Actions\nrun. Read the run's summary first: \"Release files unchanged since vX.Y.Z\"\nmeans approve. \"Release files changed\" lists changed workflows,\n",{"type":88,"tag":130,"props":325,"children":326},{},[327],{"type":93,"value":328},"scripts\u002Frelease.mjs",{"type":93,"value":330}," or ",{"type":88,"tag":130,"props":332,"children":333},{},[334],{"type":93,"value":218},{"type":93,"value":336},"; look at each change\nbefore you approve. A changed release workflow is how a compromised\ndependency, app or agent would try to publish something else.\nThe comparison starts at the tag of the version npm has now, and the tag\nruleset keeps that tag from moving. You can approve before ",{"type":88,"tag":130,"props":338,"children":339},{},[340],{"type":93,"value":239},{"type":93,"value":342}," on the merge\ncommit has finished: the publish job waits up to an hour for it. Approve one release at a time; when\ntwo runs wait, approve the newest one. An older run then fails its\nstale-version check and publishes nothing.",{"type":88,"tag":124,"props":344,"children":345},{},[346,348,353],{"type":93,"value":347},"The publish job downloads the packed tarballs and runs\n",{"type":88,"tag":130,"props":349,"children":350},{},[351],{"type":93,"value":352},"npm publish \u003Ctgz> --provenance --access public --ignore-scripts",{"type":93,"value":354},". It does\nnot check out the repository and does not install anything, so no\ndependency code runs while it can publish. Authentication is npm trusted\npublishing (OIDC); there is no token.",{"type":88,"tag":124,"props":356,"children":357},{},[358],{"type":93,"value":359},"The last job creates the Git tag on the commit that was packed and a GitHub\nrelease with the changelog section. If the tag already exists on another\ncommit, the job fails instead.",{"type":88,"tag":89,"props":361,"children":362},{},[363,367,369,374,376,380],{"type":88,"tag":130,"props":364,"children":365},{},[366],{"type":93,"value":149},{"type":93,"value":368}," offers a release only when no non-empty changesets are pending\non ",{"type":88,"tag":130,"props":370,"children":371},{},[372],{"type":93,"value":373},"main",{"type":93,"value":375}," and no Version packages pull request is open. It never packs ",{"type":88,"tag":130,"props":377,"children":378},{},[379],{"type":93,"value":373},{"type":93,"value":381},"\nahead of its versions. A Version packages pull request left open after its\nchangesets were removed blocks releases until you close it.",{"type":88,"tag":89,"props":383,"children":384},{},[385,387,391,393,397,399,404,406,410,412,416],{"type":93,"value":386},"To not release, leave the Version packages pull request open. To reject a\nrelease after merging, reject the deployment; nothing is published. The\nunpublished version is offered again by the next push to ",{"type":88,"tag":130,"props":388,"children":389},{},[390],{"type":93,"value":373},{"type":93,"value":392}," that has no\npending changesets, or at once when you run ",{"type":88,"tag":130,"props":394,"children":395},{},[396],{"type":93,"value":149},{"type":93,"value":398}," by hand (",{"type":88,"tag":105,"props":400,"children":401},{},[402],{"type":93,"value":403},"Actions →\nrelease → Run workflow",{"type":93,"value":405}," on ",{"type":88,"tag":130,"props":407,"children":408},{},[409],{"type":93,"value":373},{"type":93,"value":411},"). A manual run follows the same rule: it\nre-offers a release that is already versioned on ",{"type":88,"tag":130,"props":413,"children":414},{},[415],{"type":93,"value":373},{"type":93,"value":417},", and does nothing\nelse while changesets are pending.",{"type":88,"tag":89,"props":419,"children":420},{},[421,425,427,432,434,439,441,446,448,453],{"type":88,"tag":130,"props":422,"children":423},{},[424],{"type":93,"value":149},{"type":93,"value":426}," finds packages through ",{"type":88,"tag":130,"props":428,"children":429},{},[430],{"type":93,"value":431},"pnpm-workspace.yaml",{"type":93,"value":433},". Fixed-version\npackage sets use a Changesets ",{"type":88,"tag":130,"props":435,"children":436},{},[437],{"type":93,"value":438},"fixed",{"type":93,"value":440}," group, so all packages in the set share\none version, one ",{"type":88,"tag":130,"props":442,"children":443},{},[444],{"type":93,"value":445},"vX.Y.Z",{"type":93,"value":447}," tag and one GitHub release. Packages that version\nindependently get one ",{"type":88,"tag":130,"props":449,"children":450},{},[451],{"type":93,"value":452},"name@X.Y.Z",{"type":93,"value":454}," tag and GitHub release each.",{"type":88,"tag":113,"props":456,"children":458},{"id":457},"writing-a-changeset",[459],{"type":93,"value":460},"Writing a changeset",{"type":88,"tag":89,"props":462,"children":463},{},[464,466,471,473,478,479,484,485,490],{"type":93,"value":465},"One summary line that a user of the library can understand. Present tense.\nStart with ",{"type":88,"tag":105,"props":467,"children":468},{},[469],{"type":93,"value":470},"Fix",{"type":93,"value":472},", ",{"type":88,"tag":105,"props":474,"children":475},{},[476],{"type":93,"value":477},"Add",{"type":93,"value":472},{"type":88,"tag":105,"props":480,"children":481},{},[482],{"type":93,"value":483},"Remove",{"type":93,"value":330},{"type":88,"tag":105,"props":486,"children":487},{},[488],{"type":93,"value":489},"Change",{"type":93,"value":290},{"type":88,"tag":492,"props":493,"children":496},"pre",{"language":494,"class":495},"md","shiki shiki-themes light-plus dark-plus dark:dark-plus",[497],{"type":88,"tag":130,"props":498,"children":500},{"class":499},"language-md",[501,513,515,535,536,543,544,547,548],{"type":88,"tag":502,"props":503,"children":506},"span",{"class":504,"style":505},"line","display: inline",[507],{"type":88,"tag":502,"props":508,"children":510},{"style":509},"color:#000000;--shiki-dark:#D4D4D4",[511],{"type":93,"value":512},"---",{"type":93,"value":514},"\n",{"type":88,"tag":502,"props":516,"children":517},{"class":504,"style":505},[518,524,530],{"type":88,"tag":502,"props":519,"children":521},{"style":520},"color:#0000FF;--shiki-dark:#CE9178",[522],{"type":93,"value":523},"'@lupinum\u002Fexample'",{"type":88,"tag":502,"props":525,"children":527},{"style":526},"color:#000000FF;--shiki-dark:#D4D4D4",[528],{"type":93,"value":529},": ",{"type":88,"tag":502,"props":531,"children":532},{"style":520},[533],{"type":93,"value":534},"minor",{"type":93,"value":514},{"type":88,"tag":502,"props":537,"children":538},{"class":504,"style":505},[539],{"type":88,"tag":502,"props":540,"children":541},{"style":509},[542],{"type":93,"value":512},{"type":93,"value":514},{"type":88,"tag":502,"props":545,"children":546},{"class":504,"style":505},[],{"type":93,"value":514},{"type":88,"tag":502,"props":549,"children":550},{"class":504,"style":505},[551,556,562,567,572],{"type":88,"tag":502,"props":552,"children":553},{"style":509},[554],{"type":93,"value":555},"Add a ",{"type":88,"tag":502,"props":557,"children":559},{"style":558},"color:#800000;--shiki-dark:#CE9178",[560],{"type":93,"value":561},"`delay`",{"type":88,"tag":502,"props":563,"children":564},{"style":509},[565],{"type":93,"value":566}," option to ",{"type":88,"tag":502,"props":568,"children":569},{"style":558},[570],{"type":93,"value":571},"`useTour()`",{"type":88,"tag":502,"props":573,"children":574},{"style":509},[575],{"type":93,"value":290},{"type":88,"tag":89,"props":577,"children":578},{},[579,581,586,588,593],{"type":93,"value":580},"A short body may follow after a blank line, for details users need. A breaking\nchange (a ",{"type":88,"tag":130,"props":582,"children":583},{},[584],{"type":93,"value":585},"major",{"type":93,"value":587}," bump, or any breaking change before 1.0) adds a ",{"type":88,"tag":130,"props":589,"children":590},{},[591],{"type":93,"value":592},"Migration:",{"type":93,"value":594},"\nline:",{"type":88,"tag":492,"props":596,"children":597},{"language":494,"class":495},[598],{"type":88,"tag":130,"props":599,"children":600},{"class":499},[601,608,609,624,625,632,633,636,637,655,656,659,660],{"type":88,"tag":502,"props":602,"children":603},{"class":504,"style":505},[604],{"type":88,"tag":502,"props":605,"children":606},{"style":509},[607],{"type":93,"value":512},{"type":93,"value":514},{"type":88,"tag":502,"props":610,"children":611},{"class":504,"style":505},[612,616,620],{"type":88,"tag":502,"props":613,"children":614},{"style":520},[615],{"type":93,"value":523},{"type":88,"tag":502,"props":617,"children":618},{"style":526},[619],{"type":93,"value":529},{"type":88,"tag":502,"props":621,"children":622},{"style":520},[623],{"type":93,"value":585},{"type":93,"value":514},{"type":88,"tag":502,"props":626,"children":627},{"class":504,"style":505},[628],{"type":88,"tag":502,"props":629,"children":630},{"style":509},[631],{"type":93,"value":512},{"type":93,"value":514},{"type":88,"tag":502,"props":634,"children":635},{"class":504,"style":505},[],{"type":93,"value":514},{"type":88,"tag":502,"props":638,"children":639},{"class":504,"style":505},[640,645,650],{"type":88,"tag":502,"props":641,"children":642},{"style":509},[643],{"type":93,"value":644},"Remove the deprecated ",{"type":88,"tag":502,"props":646,"children":647},{"style":558},[648],{"type":93,"value":649},"`useLegacyTour()`",{"type":88,"tag":502,"props":651,"children":652},{"style":509},[653],{"type":93,"value":654}," composable.",{"type":93,"value":514},{"type":88,"tag":502,"props":657,"children":658},{"class":504,"style":505},[],{"type":93,"value":514},{"type":88,"tag":502,"props":661,"children":662},{"class":504,"style":505},[663,668,672,677,681],{"type":88,"tag":502,"props":664,"children":665},{"style":509},[666],{"type":93,"value":667},"Migration: replace ",{"type":88,"tag":502,"props":669,"children":670},{"style":558},[671],{"type":93,"value":649},{"type":88,"tag":502,"props":673,"children":674},{"style":509},[675],{"type":93,"value":676}," with ",{"type":88,"tag":502,"props":678,"children":679},{"style":558},[680],{"type":93,"value":571},{"type":88,"tag":502,"props":682,"children":683},{"style":509},[684],{"type":93,"value":290},{"type":88,"tag":89,"props":686,"children":687},{},[688,690,695,697,701,703,708,710,715,716,721,723,728,730,735],{"type":93,"value":689},"CI lints new changesets. When published code changed, CI also runs\n",{"type":88,"tag":130,"props":691,"children":692},{},[693],{"type":93,"value":694},"changeset status",{"type":93,"value":696}," against ",{"type":88,"tag":130,"props":698,"children":699},{},[700],{"type":93,"value":373},{"type":93,"value":702},", which fails if no changeset exists. For a\nchange users cannot notice (tests, internal refactors), add an empty one with\n",{"type":88,"tag":130,"props":704,"children":705},{},[706],{"type":93,"value":707},"pnpm changeset --empty",{"type":93,"value":709},". A change to ",{"type":88,"tag":130,"props":711,"children":712},{},[713],{"type":93,"value":714},"dependencies",{"type":93,"value":330},{"type":88,"tag":130,"props":717,"children":718},{},[719],{"type":93,"value":720},"peerDependencies",{"type":93,"value":722}," of a\npublished package needs a changeset that bumps that package, at least ",{"type":88,"tag":130,"props":724,"children":725},{},[726],{"type":93,"value":727},"patch",{"type":93,"value":729},";\nan empty one does not count (see ",{"type":88,"tag":96,"props":731,"children":733},{"href":732},"\u002Fdocs\u002Fdependencies#updates",[734],{"type":93,"value":43},{"type":93,"value":736},").",{"type":88,"tag":89,"props":738,"children":739},{},[740,742,747,749,753],{"type":93,"value":741},"When a contributor's pull request has no changeset, the maintainer, or an\nagent the maintainer asks, pushes one to the contributor's branch (",{"type":88,"tag":105,"props":743,"children":744},{},[745],{"type":93,"value":746},"Allow\nedits by maintainers",{"type":93,"value":748}," makes this work for forks). Otherwise ask the\ncontributor to run ",{"type":88,"tag":130,"props":750,"children":751},{},[752],{"type":93,"value":134},{"type":93,"value":290},{"type":88,"tag":113,"props":755,"children":757},{"id":756},"previews",[758],{"type":93,"value":759},"Previews",{"type":88,"tag":89,"props":761,"children":762},{},[763,768,770,776],{"type":88,"tag":130,"props":764,"children":765},{},[766],{"type":93,"value":767},"preview.yml",{"type":93,"value":769}," publishes every pull request to\n",{"type":88,"tag":96,"props":771,"children":773},{"href":772},"https:\u002F\u002Fpkg.pr.new",[774],{"type":93,"value":775},"pkg.pr.new",{"type":93,"value":777}," and comments install commands. It runs only for\nbranches in the repository, not for forks. Use it to try a change in a real\nproject before release.",{"type":88,"tag":113,"props":779,"children":781},{"id":780},"prereleases",[782],{"type":93,"value":783},"Prereleases",{"type":88,"tag":492,"props":785,"children":787},{"language":786,"class":495},"bash",[788],{"type":88,"tag":130,"props":789,"children":791},{"class":790},"language-bash",[792,828,829],{"type":88,"tag":502,"props":793,"children":794},{"class":504,"style":505},[795,801,807,812,817,822],{"type":88,"tag":502,"props":796,"children":798},{"style":797},"color:#795E26;--shiki-dark:#DCDCAA",[799],{"type":93,"value":800},"pnpm",{"type":88,"tag":502,"props":802,"children":804},{"style":803},"color:#A31515;--shiki-dark:#CE9178",[805],{"type":93,"value":806}," changeset",{"type":88,"tag":502,"props":808,"children":809},{"style":803},[810],{"type":93,"value":811}," pre",{"type":88,"tag":502,"props":813,"children":814},{"style":803},[815],{"type":93,"value":816}," enter",{"type":88,"tag":502,"props":818,"children":819},{"style":803},[820],{"type":93,"value":821}," next",{"type":88,"tag":502,"props":823,"children":825},{"style":824},"color:#008000;--shiki-dark:#6A9955",[826],{"type":93,"value":827},"   # following Version packages PRs produce x.y.z-next.n",{"type":93,"value":514},{"type":88,"tag":502,"props":830,"children":831},{"class":504,"style":505},[832,836,840,844,849],{"type":88,"tag":502,"props":833,"children":834},{"style":797},[835],{"type":93,"value":800},{"type":88,"tag":502,"props":837,"children":838},{"style":803},[839],{"type":93,"value":806},{"type":88,"tag":502,"props":841,"children":842},{"style":803},[843],{"type":93,"value":811},{"type":88,"tag":502,"props":845,"children":846},{"style":803},[847],{"type":93,"value":848}," exit",{"type":88,"tag":502,"props":850,"children":851},{"style":824},[852],{"type":93,"value":853},"         # back to stable versions",{"type":88,"tag":89,"props":855,"children":856},{},[857,859,864,866,871,873,877],{"type":93,"value":858},"Use ",{"type":88,"tag":130,"props":860,"children":861},{},[862],{"type":93,"value":863},"next",{"type":93,"value":865}," as the prerelease name. A prerelease line that started with\nanother name, such as ",{"type":88,"tag":130,"props":867,"children":868},{},[869],{"type":93,"value":870},"beta",{"type":93,"value":872},", keeps it until its stable release; the\nprerelease after that uses ",{"type":88,"tag":130,"props":874,"children":875},{},[876],{"type":93,"value":863},{"type":93,"value":290},{"type":88,"tag":89,"props":879,"children":880},{},[881,883,888,890,894,896,901,903,907,909,914],{"type":93,"value":882},"Commit the command's change through a normal pull request. After ",{"type":88,"tag":130,"props":884,"children":885},{},[886],{"type":93,"value":887},"pre exit",{"type":93,"value":889},"\nis merged, ",{"type":88,"tag":130,"props":891,"children":892},{},[893],{"type":93,"value":149},{"type":93,"value":895}," opens the Version packages pull request with the\nstable versions, even when no new changeset is pending. Versions that\ncontain ",{"type":88,"tag":130,"props":897,"children":898},{},[899],{"type":93,"value":900},"-",{"type":93,"value":902}," publish under the ",{"type":88,"tag":130,"props":904,"children":905},{},[906],{"type":93,"value":863},{"type":93,"value":908}," dist-tag, and their GitHub release is\nmarked as a prerelease. Stable versions publish under ",{"type":88,"tag":130,"props":910,"children":911},{},[912],{"type":93,"value":913},"latest",{"type":93,"value":290},{"type":88,"tag":89,"props":916,"children":917},{},[918,920,924,926,930],{"type":93,"value":919},"After ",{"type":88,"tag":130,"props":921,"children":922},{},[923],{"type":93,"value":887},{"type":93,"value":925}," and the stable release, ",{"type":88,"tag":130,"props":927,"children":928},{},[929],{"type":93,"value":863},{"type":93,"value":931}," still points at the last\nprerelease. The maintainer removes it, or points it at the new stable version\n(2FA):",{"type":88,"tag":492,"props":933,"children":934},{"language":786,"class":495},[935],{"type":88,"tag":130,"props":936,"children":937},{"class":790},[938,964,965],{"type":88,"tag":502,"props":939,"children":940},{"class":504,"style":505},[941,945,950,955,960],{"type":88,"tag":502,"props":942,"children":943},{"style":797},[944],{"type":93,"value":321},{"type":88,"tag":502,"props":946,"children":947},{"style":803},[948],{"type":93,"value":949}," dist-tag",{"type":88,"tag":502,"props":951,"children":952},{"style":803},[953],{"type":93,"value":954}," rm",{"type":88,"tag":502,"props":956,"children":957},{"style":803},[958],{"type":93,"value":959}," @lupinum\u002Fexample",{"type":88,"tag":502,"props":961,"children":962},{"style":803},[963],{"type":93,"value":821},{"type":93,"value":514},{"type":88,"tag":502,"props":966,"children":967},{"class":504,"style":505},[968],{"type":88,"tag":502,"props":969,"children":970},{"style":824},[971],{"type":93,"value":972},"# or: npm dist-tag add @lupinum\u002Fexample@1.0.0 next",{"type":88,"tag":89,"props":974,"children":975},{},[976,978,982,984,988],{"type":93,"value":977},"The audit warns while ",{"type":88,"tag":130,"props":979,"children":980},{},[981],{"type":93,"value":863},{"type":93,"value":983}," is behind ",{"type":88,"tag":130,"props":985,"children":986},{},[987],{"type":93,"value":913},{"type":93,"value":290},{"type":88,"tag":113,"props":990,"children":992},{"id":991},"hotfix",[993],{"type":93,"value":994},"Hotfix",{"type":88,"tag":89,"props":996,"children":997},{},[998,1000,1004,1006,1010],{"type":93,"value":999},"A hotfix is a normal release: a pull request with the fix and a ",{"type":88,"tag":130,"props":1001,"children":1002},{},[1003],{"type":93,"value":727},{"type":93,"value":1005},"\nchangeset, then the two clicks. Our own code has no waiting period. Only new\nthird-party dependency versions wait 24 hours; see\n",{"type":88,"tag":96,"props":1007,"children":1008},{"href":47},[1009],{"type":93,"value":43},{"type":93,"value":290},{"type":88,"tag":89,"props":1012,"children":1013},{},[1014,1016,1021,1023,1028,1030,1035,1037,1041],{"type":93,"value":1015},"We fix the latest major only, as ",{"type":88,"tag":130,"props":1017,"children":1018},{},[1019],{"type":93,"value":1020},".github\u002FSECURITY.md",{"type":93,"value":1022}," says. The standard does not\nautomate releases from an older major. If one needs a fix anyway, record a\ndecision in ",{"type":88,"tag":130,"props":1024,"children":1025},{},[1026],{"type":93,"value":1027},"internals\u002Fdecisions.md",{"type":93,"value":1029}," and set up a branch for it, for example ",{"type":88,"tag":130,"props":1031,"children":1032},{},[1033],{"type":93,"value":1034},"v1",{"type":93,"value":1036}," from\nthe last ",{"type":88,"tag":130,"props":1038,"children":1039},{},[1040],{"type":93,"value":1034},{"type":93,"value":1042}," tag:",{"type":88,"tag":172,"props":1044,"children":1045},{},[1046,1102,1117],{"type":88,"tag":124,"props":1047,"children":1048},{},[1049,1051,1055,1057,1061,1062,1066,1068,1073,1075,1080,1082,1087,1089,1094,1096,1100],{"type":93,"value":1050},"In that branch's ",{"type":88,"tag":130,"props":1052,"children":1053},{},[1054],{"type":93,"value":149},{"type":93,"value":1056},": replace every ",{"type":88,"tag":130,"props":1058,"children":1059},{},[1060],{"type":93,"value":373},{"type":93,"value":676},{"type":88,"tag":130,"props":1063,"children":1064},{},[1065],{"type":93,"value":1034},{"type":93,"value":1067}," (the trigger,\nthe job condition, and in the version jobs the branch check, the push to\n",{"type":88,"tag":130,"props":1069,"children":1070},{},[1071],{"type":93,"value":1072},"changeset-release\u002Fv1",{"type":93,"value":1074},", the ",{"type":88,"tag":130,"props":1076,"children":1077},{},[1078],{"type":93,"value":1079},"gh pr",{"type":93,"value":1081}," base and the ",{"type":88,"tag":130,"props":1083,"children":1084},{},[1085],{"type":93,"value":1086},"gh workflow run",{"type":93,"value":1088}," ref), and\nuse the dist-tag ",{"type":88,"tag":130,"props":1090,"children":1091},{},[1092],{"type":93,"value":1093},"v1-latest",{"type":93,"value":1095}," instead of ",{"type":88,"tag":130,"props":1097,"children":1098},{},[1099],{"type":93,"value":913},{"type":93,"value":1101}," in the pack and publish steps.",{"type":88,"tag":124,"props":1103,"children":1104},{},[1105,1106,1110,1111,1116],{"type":93,"value":1050},{"type":88,"tag":130,"props":1107,"children":1108},{},[1109],{"type":93,"value":218},{"type":93,"value":529},{"type":88,"tag":130,"props":1112,"children":1113},{},[1114],{"type":93,"value":1115},"\"baseBranch\": \"v1\"",{"type":93,"value":290},{"type":88,"tag":124,"props":1118,"children":1119},{},[1120,1122,1126,1128,1132,1134,1138,1140,1144],{"type":93,"value":1121},"A ruleset for ",{"type":88,"tag":130,"props":1123,"children":1124},{},[1125],{"type":93,"value":1034},{"type":93,"value":1127}," like the one for ",{"type":88,"tag":130,"props":1129,"children":1130},{},[1131],{"type":93,"value":373},{"type":93,"value":1133},", and ",{"type":88,"tag":130,"props":1135,"children":1136},{},[1137],{"type":93,"value":1034},{"type":93,"value":1139}," in the ",{"type":88,"tag":130,"props":1141,"children":1142},{},[1143],{"type":93,"value":321},{"type":93,"value":1145},"\nenvironment's deployment branches.",{"type":88,"tag":89,"props":1147,"children":1148},{},[1149,1151,1155],{"type":93,"value":1150},"Remove the deployment branch when the fix is out. The audit fails while the\nenvironment allows more than ",{"type":88,"tag":130,"props":1152,"children":1153},{},[1154],{"type":93,"value":373},{"type":93,"value":1156},", as a reminder.",{"type":88,"tag":113,"props":1158,"children":1160},{"id":1159},"first-publication-of-a-new-package",[1161],{"type":93,"value":1162},"First publication of a new package",{"type":88,"tag":89,"props":1164,"children":1165},{},[1166],{"type":93,"value":1167},"npm can only attach a trusted publisher to a package that exists, so the very\nfirst version of a package is published by hand. That version has no\nprovenance. Every later version does.",{"type":88,"tag":89,"props":1169,"children":1170},{},[1171,1173,1177,1179,1184],{"type":93,"value":1172},"The run that packs it is the first push to ",{"type":88,"tag":130,"props":1174,"children":1175},{},[1176],{"type":93,"value":373},{"type":93,"value":1178}," for a new repository (the\nstarting version, such as ",{"type":88,"tag":130,"props":1180,"children":1181},{},[1182],{"type":93,"value":1183},"0.1.0",{"type":93,"value":1185},", is not on npm yet), or the merge of the\nVersion packages pull request that adds a package to an existing repository.",{"type":88,"tag":120,"props":1187,"children":1188},{},[1189,1200,1327,1338],{"type":88,"tag":124,"props":1190,"children":1191},{},[1192,1194,1198],{"type":93,"value":1193},"Reject the ",{"type":88,"tag":130,"props":1195,"children":1196},{},[1197],{"type":93,"value":321},{"type":93,"value":1199}," deployment of that run.",{"type":88,"tag":124,"props":1201,"children":1202},{},[1203,1215,1316],{"type":88,"tag":89,"props":1204,"children":1205},{},[1206,1208,1213],{"type":93,"value":1207},"Download its ",{"type":88,"tag":130,"props":1209,"children":1210},{},[1211],{"type":93,"value":1212},"release",{"type":93,"value":1214}," artifact and publish only the tarballs of packages\nthat do not exist on npm yet, with your 2FA code:",{"type":88,"tag":492,"props":1216,"children":1217},{"language":786,"class":495},[1218],{"type":88,"tag":130,"props":1219,"children":1220},{"class":790},[1221,1273,1274],{"type":88,"tag":502,"props":1222,"children":1223},{"class":504,"style":505},[1224,1228,1233,1238,1243,1249,1254,1259,1264,1269],{"type":88,"tag":502,"props":1225,"children":1226},{"style":797},[1227],{"type":93,"value":232},{"type":88,"tag":502,"props":1229,"children":1230},{"style":803},[1231],{"type":93,"value":1232}," run",{"type":88,"tag":502,"props":1234,"children":1235},{"style":803},[1236],{"type":93,"value":1237}," download",{"type":88,"tag":502,"props":1239,"children":1240},{"style":803},[1241],{"type":93,"value":1242}," RUN_ID",{"type":88,"tag":502,"props":1244,"children":1246},{"style":1245},"color:#0000FF;--shiki-dark:#569CD6",[1247],{"type":93,"value":1248}," --repo",{"type":88,"tag":502,"props":1250,"children":1251},{"style":803},[1252],{"type":93,"value":1253}," OWNER\u002FREPO",{"type":88,"tag":502,"props":1255,"children":1256},{"style":1245},[1257],{"type":93,"value":1258}," --name",{"type":88,"tag":502,"props":1260,"children":1261},{"style":803},[1262],{"type":93,"value":1263}," release",{"type":88,"tag":502,"props":1265,"children":1266},{"style":1245},[1267],{"type":93,"value":1268}," --dir",{"type":88,"tag":502,"props":1270,"children":1271},{"style":803},[1272],{"type":93,"value":1263},{"type":93,"value":514},{"type":88,"tag":502,"props":1275,"children":1276},{"class":504,"style":505},[1277,1281,1286,1291,1296,1301,1306,1311],{"type":88,"tag":502,"props":1278,"children":1279},{"style":797},[1280],{"type":93,"value":321},{"type":88,"tag":502,"props":1282,"children":1283},{"style":803},[1284],{"type":93,"value":1285}," publish",{"type":88,"tag":502,"props":1287,"children":1288},{"style":803},[1289],{"type":93,"value":1290}," .\u002Frelease\u002FPACKAGE.tgz",{"type":88,"tag":502,"props":1292,"children":1293},{"style":1245},[1294],{"type":93,"value":1295}," --access",{"type":88,"tag":502,"props":1297,"children":1298},{"style":803},[1299],{"type":93,"value":1300}," public",{"type":88,"tag":502,"props":1302,"children":1303},{"style":1245},[1304],{"type":93,"value":1305}," --ignore-scripts",{"type":88,"tag":502,"props":1307,"children":1308},{"style":1245},[1309],{"type":93,"value":1310}," --tag",{"type":88,"tag":502,"props":1312,"children":1313},{"style":803},[1314],{"type":93,"value":1315}," latest",{"type":88,"tag":89,"props":1317,"children":1318},{},[1319,1320,1325],{"type":93,"value":858},{"type":88,"tag":130,"props":1321,"children":1322},{},[1323],{"type":93,"value":1324},"--tag next",{"type":93,"value":1326}," if the first version is a prerelease.",{"type":88,"tag":124,"props":1328,"children":1329},{},[1330,1332,1337],{"type":93,"value":1331},"Configure trusted publishing and publishing access for the new package as in\n",{"type":88,"tag":96,"props":1333,"children":1335},{"href":1334},"\u002Fdocs\u002Fset-up-a-repository#npm-settings",[1336],{"type":93,"value":19},{"type":93,"value":290},{"type":88,"tag":124,"props":1339,"children":1340},{},[1341,1379],{"type":88,"tag":89,"props":1342,"children":1343},{},[1344,1346,1350,1352,1356,1358,1363,1365,1370,1372,1377],{"type":93,"value":1345},"If the artifact also held packages that already existed on npm, run\n",{"type":88,"tag":130,"props":1347,"children":1348},{},[1349],{"type":93,"value":149},{"type":93,"value":1351}," by hand on ",{"type":88,"tag":130,"props":1353,"children":1354},{},[1355],{"type":93,"value":373},{"type":93,"value":1357}," (",{"type":88,"tag":105,"props":1359,"children":1360},{},[1361],{"type":93,"value":1362},"Run workflow",{"type":93,"value":1364},") while no changesets are\npending, and approve the deployment. It skips the version you published,\npublishes the others with provenance and creates the tag and GitHub\nrelease. If every package was new, create the release by hand from the\nartifact, with the commit that run built (repeat with ",{"type":88,"tag":130,"props":1366,"children":1367},{},[1368],{"type":93,"value":1369},".[1]",{"type":93,"value":1371}," and so on if\n",{"type":88,"tag":130,"props":1373,"children":1374},{},[1375],{"type":93,"value":1376},"releases.json",{"type":93,"value":1378}," has more entries):",{"type":88,"tag":492,"props":1380,"children":1381},{"language":786,"class":495},[1382],{"type":88,"tag":130,"props":1383,"children":1384},{"class":790},[1385,1435,1436,1475,1476],{"type":88,"tag":502,"props":1386,"children":1387},{"class":504,"style":505},[1388,1392,1396,1401,1406,1411,1416,1421,1425,1429],{"type":88,"tag":502,"props":1389,"children":1390},{"style":797},[1391],{"type":93,"value":232},{"type":88,"tag":502,"props":1393,"children":1394},{"style":803},[1395],{"type":93,"value":1263},{"type":88,"tag":502,"props":1397,"children":1398},{"style":803},[1399],{"type":93,"value":1400}," create",{"type":88,"tag":502,"props":1402,"children":1403},{"style":803},[1404],{"type":93,"value":1405}," \"$(",{"type":88,"tag":502,"props":1407,"children":1408},{"style":797},[1409],{"type":93,"value":1410},"jq",{"type":88,"tag":502,"props":1412,"children":1413},{"style":1245},[1414],{"type":93,"value":1415}," -r",{"type":88,"tag":502,"props":1417,"children":1418},{"style":803},[1419],{"type":93,"value":1420}," '.[0].tag' release\u002Freleases.json)\"",{"type":88,"tag":502,"props":1422,"children":1423},{"style":1245},[1424],{"type":93,"value":1248},{"type":88,"tag":502,"props":1426,"children":1427},{"style":803},[1428],{"type":93,"value":1253},{"type":88,"tag":502,"props":1430,"children":1432},{"style":1431},"color:#EE0000;--shiki-dark:#D7BA7D",[1433],{"type":93,"value":1434}," \\",{"type":93,"value":514},{"type":88,"tag":502,"props":1437,"children":1438},{"class":504,"style":505},[1439,1444,1449,1454,1458,1462,1466,1471],{"type":88,"tag":502,"props":1440,"children":1441},{"style":1245},[1442],{"type":93,"value":1443},"  --target",{"type":88,"tag":502,"props":1445,"children":1446},{"style":803},[1447],{"type":93,"value":1448}," COMMIT_SHA",{"type":88,"tag":502,"props":1450,"children":1451},{"style":1245},[1452],{"type":93,"value":1453}," --notes",{"type":88,"tag":502,"props":1455,"children":1456},{"style":803},[1457],{"type":93,"value":1405},{"type":88,"tag":502,"props":1459,"children":1460},{"style":797},[1461],{"type":93,"value":1410},{"type":88,"tag":502,"props":1463,"children":1464},{"style":1245},[1465],{"type":93,"value":1415},{"type":88,"tag":502,"props":1467,"children":1468},{"style":803},[1469],{"type":93,"value":1470}," '.[0].notes' release\u002Freleases.json)\"",{"type":88,"tag":502,"props":1472,"children":1473},{"style":1431},[1474],{"type":93,"value":1434},{"type":93,"value":514},{"type":88,"tag":502,"props":1477,"children":1478},{"class":504,"style":505},[1479,1484,1488,1492,1497,1502],{"type":88,"tag":502,"props":1480,"children":1481},{"style":509},[1482],{"type":93,"value":1483},"  $(",{"type":88,"tag":502,"props":1485,"children":1486},{"style":797},[1487],{"type":93,"value":1410},{"type":88,"tag":502,"props":1489,"children":1490},{"style":1245},[1491],{"type":93,"value":1415},{"type":88,"tag":502,"props":1493,"children":1494},{"style":803},[1495],{"type":93,"value":1496}," 'if .[0].prerelease then \"--prerelease\" else empty end'",{"type":88,"tag":502,"props":1498,"children":1499},{"style":803},[1500],{"type":93,"value":1501}," release\u002Freleases.json",{"type":88,"tag":502,"props":1503,"children":1504},{"style":509},[1505],{"type":93,"value":1506},")",{"type":88,"tag":89,"props":1508,"children":1509},{},[1510],{"type":93,"value":1511},"Publish the CI-built tarball, not a local build, so the bytes still come from\nCI.",{"type":88,"tag":113,"props":1513,"children":1515},{"id":1514},"when-publishing-fails",[1516],{"type":93,"value":1517},"When publishing fails",{"type":88,"tag":89,"props":1519,"children":1520},{},[1521],{"type":93,"value":1522},"Read the first failing step. Then:",{"type":88,"tag":1524,"props":1525,"children":1526},"table",{},[1527,1546],{"type":88,"tag":1528,"props":1529,"children":1530},"thead",{},[1531],{"type":88,"tag":1532,"props":1533,"children":1534},"tr",{},[1535,1541],{"type":88,"tag":1536,"props":1537,"children":1538},"th",{},[1539],{"type":93,"value":1540},"Situation",{"type":88,"tag":1536,"props":1542,"children":1543},{},[1544],{"type":93,"value":1545},"What to do",{"type":88,"tag":1547,"props":1548,"children":1549},"tbody",{},[1550,1581,1634,1657,1683,1703,1735],{"type":88,"tag":1532,"props":1551,"children":1552},{},[1553,1559],{"type":88,"tag":1554,"props":1555,"children":1556},"td",{},[1557],{"type":93,"value":1558},"Pack job failed",{"type":88,"tag":1554,"props":1560,"children":1561},{},[1562,1564,1568,1570,1574,1575,1579],{"type":93,"value":1563},"Nothing was published. Fix the cause in a pull request. After merge, ",{"type":88,"tag":130,"props":1565,"children":1566},{},[1567],{"type":93,"value":149},{"type":93,"value":1569}," packs the versions that are not on npm yet. You can also start it by hand on ",{"type":88,"tag":130,"props":1571,"children":1572},{},[1573],{"type":93,"value":373},{"type":93,"value":1357},{"type":88,"tag":105,"props":1576,"children":1577},{},[1578],{"type":93,"value":1362},{"type":93,"value":1580},") once no changesets are pending.",{"type":88,"tag":1532,"props":1582,"children":1583},{},[1584,1608],{"type":88,"tag":1554,"props":1585,"children":1586},{},[1587,1592,1594,1599,1601,1606],{"type":88,"tag":130,"props":1588,"children":1589},{},[1590],{"type":93,"value":1591},"E403",{"type":93,"value":1593},"\u002F",{"type":88,"tag":130,"props":1595,"children":1596},{},[1597],{"type":93,"value":1598},"E404",{"type":93,"value":1600}," from ",{"type":88,"tag":130,"props":1602,"children":1603},{},[1604],{"type":93,"value":1605},"npm publish",{"type":93,"value":1607}," with OIDC",{"type":88,"tag":1554,"props":1609,"children":1610},{},[1611,1613,1619,1621,1626,1628,1633],{"type":93,"value":1612},"The trusted publisher does not match. Fix it on ",{"type":88,"tag":96,"props":1614,"children":1616},{"href":1615},"https:\u002F\u002Fwww.npmjs.com",[1617],{"type":93,"value":1618},"npmjs.com",{"type":93,"value":1620}," (see ",{"type":88,"tag":96,"props":1622,"children":1624},{"href":1623},"\u002Fdocs\u002Ftroubleshooting#npm-trusted-publishing",[1625],{"type":93,"value":67},{"type":93,"value":1627},"), then ",{"type":88,"tag":105,"props":1629,"children":1630},{},[1631],{"type":93,"value":1632},"Re-run failed jobs",{"type":93,"value":290},{"type":88,"tag":1532,"props":1635,"children":1636},{},[1637,1642],{"type":88,"tag":1554,"props":1638,"children":1639},{},[1640],{"type":93,"value":1641},"Some packages published, some not",{"type":88,"tag":1554,"props":1643,"children":1644},{},[1645,1649,1651,1655],{"type":88,"tag":105,"props":1646,"children":1647},{},[1648],{"type":93,"value":1632},{"type":93,"value":1650}," on the same run, not a new run. It publishes the remaining tarballs built with the others and skips versions already on npm. A new run would pack the missing packages again from the current ",{"type":88,"tag":130,"props":1652,"children":1653},{},[1654],{"type":93,"value":373},{"type":93,"value":1656},". Packages publish in dependency order, so a dependent is never on npm without the sibling it pins.",{"type":88,"tag":1532,"props":1658,"children":1659},{},[1660,1665],{"type":88,"tag":1554,"props":1661,"children":1662},{},[1663],{"type":93,"value":1664},"\"cannot publish over the previously published version\"",{"type":88,"tag":1554,"props":1666,"children":1667},{},[1668,1670,1675,1677,1681],{"type":93,"value":1669},"First check whether the version is already there: ",{"type":88,"tag":130,"props":1671,"children":1672},{},[1673],{"type":93,"value":1674},"npm view @lupinum\u002Fexample@1.2.3 version",{"type":93,"value":1676},". Right after a publish, npm can take minutes to show it; wait and ",{"type":88,"tag":105,"props":1678,"children":1679},{},[1680],{"type":93,"value":1632},{"type":93,"value":1682},", which then skips it. If it is on npm from somewhere else (a hand publish, an older run of different code), npm versions are immutable: add a changeset and release the next version.",{"type":88,"tag":1532,"props":1684,"children":1685},{},[1686,1691],{"type":88,"tag":1554,"props":1687,"children":1688},{},[1689],{"type":93,"value":1690},"Version packages job failed: \"version.patch changes files it must not change\"",{"type":88,"tag":1554,"props":1692,"children":1693},{},[1694,1696,1702],{"type":93,"value":1695},"Something other than Changesets changed files in the prepare job. Do not work around it. Treat it as a ",{"type":88,"tag":96,"props":1697,"children":1699},{"href":1698},"\u002Fdocs\u002Fsecurity#a-dependency-is-compromised",[1700],{"type":93,"value":1701},"compromised dependency",{"type":93,"value":290},{"type":88,"tag":1532,"props":1704,"children":1705},{},[1706,1711],{"type":88,"tag":1554,"props":1707,"children":1708},{},[1709],{"type":93,"value":1710},"npm published, tag or GitHub release failed",{"type":88,"tag":1554,"props":1712,"children":1713},{},[1714,1719,1721,1726,1728,1734],{"type":88,"tag":105,"props":1715,"children":1716},{},[1717],{"type":93,"value":1718},"Re-run failed jobs.",{"type":93,"value":1720}," It skips a release that already exists. If the tag exists on another commit, find out who created it; never move it. Or create the release by hand with ",{"type":88,"tag":130,"props":1722,"children":1723},{},[1724],{"type":93,"value":1725},"gh release create",{"type":93,"value":1727}," as in ",{"type":88,"tag":96,"props":1729,"children":1731},{"href":1730},"#first-publication-of-a-new-package",[1732],{"type":93,"value":1733},"First publication",{"type":93,"value":290},{"type":88,"tag":1532,"props":1736,"children":1737},{},[1738,1743],{"type":88,"tag":1554,"props":1739,"children":1740},{},[1741],{"type":93,"value":1742},"A published version is broken",{"type":88,"tag":1554,"props":1744,"children":1745},{},[1746,1748,1753,1755,1759,1761,1766],{"type":93,"value":1747},"Release a fix. Mark the bad version: ",{"type":88,"tag":130,"props":1749,"children":1750},{},[1751],{"type":93,"value":1752},"npm deprecate @lupinum\u002Fexample@1.2.3 \"Broken, use 1.2.4\"",{"type":93,"value":1754},". If needed, point ",{"type":88,"tag":130,"props":1756,"children":1757},{},[1758],{"type":93,"value":913},{"type":93,"value":1760}," back: ",{"type":88,"tag":130,"props":1762,"children":1763},{},[1764],{"type":93,"value":1765},"npm dist-tag add @lupinum\u002Fexample@1.2.2 latest",{"type":93,"value":1767},". Do not unpublish unless it is a security or legal problem.",{"type":88,"tag":89,"props":1769,"children":1770},{},[1771,1773,1777],{"type":93,"value":1772},"A re-run uses the workflow file from the original run. If you changed\n",{"type":88,"tag":130,"props":1774,"children":1775},{},[1776],{"type":93,"value":149},{"type":93,"value":1778}," itself, merge the change and let a new run start.",{"type":88,"tag":89,"props":1780,"children":1781},{},[1782],{"type":93,"value":1783},"Never add a token, publish a local build, or turn off a required check to get\na release out.",{"title":1785,"searchDepth":1786,"depth":1786,"links":1787},"",4,[1788,1790,1791,1792,1793,1794,1795],{"id":115,"depth":1789,"text":118},2,{"id":457,"depth":1789,"text":460},{"id":756,"depth":1789,"text":759},{"id":780,"depth":1789,"text":783},{"id":991,"depth":1789,"text":994},{"id":1159,"depth":1789,"text":1162},{"id":1514,"depth":1789,"text":1517},"markdown","docs",{"source":1799,"path":1800,"stem":1801,"dir":1797,"extension":494},"content","docs\u002F5.releasing.md","docs\u002F5.releasing",{"requestedPath":35,"resolvedPath":35,"alternates":1803},[],{"requested":1805,"resolved":1806,"usedFallback":9},{},{"locale":8},{"previous":1808,"next":1809},{"title":25,"id":26,"canonicalKey":27,"locale":8,"draft":9,"path":29},{"title":37,"id":38,"canonicalKey":39,"locale":8,"draft":9,"path":41},{"left":1811,"top":1811,"width":1812,"height":1812,"rotate":1811,"vFlip":9,"hFlip":9,"body":1813},0,24,"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 19h8M4 17l6-6l-6-6\"\u002F>",{"left":1811,"top":1811,"width":1812,"height":1812,"rotate":1811,"vFlip":9,"hFlip":9,"body":1815},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"8\" height=\"4\" x=\"8\" y=\"2\" rx=\"1\" ry=\"1\"\u002F>\u003Cpath d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"\u002F>\u003C\u002Fg>",{"left":1811,"top":1811,"width":1812,"height":1812,"rotate":1811,"vFlip":9,"hFlip":9,"body":1817},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"\u002F>\u003Cpath d=\"M14 2v5a1 1 0 0 0 1 1h5\"\u002F>\u003C\u002Fg>",1791448770817]