NPM配布タグの使用正しい方法


私は過去数週間の仕事でNPMパッケージ配布タグについて多くを学びました、そして、私はこのブログ柱で私の学習を共有すると思いました.
NPMのパッケージを公開するのは簡単です.必要なのはNPMJSのアカウントです.COMとAを含むプロジェクトpackage.json ファイル.それから、いくつかの簡単なコマンドでNPMにパッケージを公開できます.
npm login
npm publish
上記のコマンドは、プロジェクトをパックし、NPMレジストリに展開します.さらに、それはそれを作ることですlatest NPMパッケージの配布タグは、package.json ファイル
// Example package.json file
{
  "version": "0.1.0"
}

But what is a distribution tag?


これはあなたのパッケージのユーザがインストールしたときのことですnpm i my-awesome-package or npm i my-awesome-package@latest バージョン2.0をインストールします0.1.0 上の例から.だから、実行時npm publish プロジェクトの中でversion インpackage.json0.1.0 , the latest パッケージ配布タグは0.1.0 パッケージのバージョン.
しかし、あなたがNPMにあなたのパッケージのバージョンを出版したいならば、あなたはlatest エイリアス、そのバージョンをポイントするには?例えば、リリース候補版を公開することができます1.0.0-rc.0 ) あなたのユーザーがそれをダウンロードできるようにnpm i [email protected] ) そして、あなたのパッケージの新しいパッチ/マイナー/メジャーバージョンを公開する前に、最新の変更をテストします.しかし、あなたはあなたのリリース候補がNPMJsで利用できるようにしたいです.COMの人々を見つけるとダウンロードするには、このバージョンは、ユーザーがパッケージをアップグレードしているときに表示するには、例えばnpm outdated and npm upgrade , また、ユーザーがそれをインストールするnpm i my-awesome-package .
答えはdocs of npm publish . 走るnpm publish と同じですnpm publish --tag latest . だから、パッケージのバージョンは常にlatest 配布タグ.簡単にこれをオーバーライドすることができます、単に異なる配布タグを提供することによって.私が犯した間違いは、読んでいない罪であるdistribution tags docs OK、私はちょうどタグとして私のパッケージのバージョンを通過することができますlatest “それを指すことはありません”.そこで試してみました.
npm publish --tag 1.0.0-rc.0
エラーメッセージを受け取るには
npm ERR! Tag name must not be a valid SemVer range
戻るthe docs その問題をもっとよく理解してくれた.でもこれはStackOverflow answer それは本当に問題を家にもたらした.

Package distribution tags are not meant to be version numbers. They are aliases to version numbers. They are words like latest, stable, next, rc, experimental, etc.


それで、NPMにリリース候補を発表する正しい方法latest それへのエイリアスポイントは走ることです
npm publish --tag rc

バージョン管理と出版のためのワークフロー


全体として、これは私のパッケージのバージョンに従ってNPMで公開するワークフローです.
ステップ1 :パッケージのバージョンをバンプnpm version Git commitとgitタグを作成するには、上記のパッケージ配布タグと混同する必要はありません.
npm version patch # for a patch version
npm version minor # for a minor version
npm version major # for a major version
npm version prerelease --pre-id rc # for a release candidate version
Step 2 : GitHubのタグを押すときに実行されるGithubアクションのワークフローを持つ.ワークフロー:
  • 押されたタグの名前を読み込む
  • 配布タグを定義します(latest タグがパターンにマッチするならX.Y.Z or rc パターンに一致する場合X.Y.Z-rcN )
  • ランnpm publish --tag [latest|rc]
  • ステップ3:ワークフローをトリガするためにGithubの上に生成されたタグを押してください
    ステップ4:利益✅

    ヒント


    私の頭の中で物事をクリアするのを助けた何かが、コマンドでしたnpm view . あなたはNPM上の任意の公開パッケージを検査するためにそれを実行することができます.たとえば、パッケージのディストリビューションタグを検査するために使用できます.
    $ npm view web3 dist-tags
    { latest: '1.7.1', next: '2.0.0-alpha.1', rc: '1.7.2-rc.0' }