npmにパッケージを公開する方法

自作したライブラリをNPMで公開する方法になります。

npm公開用のアカウントの作成

CLI上から以下のようにNPMのアカウントを作成することができる。

npm adduser

以下の形式でユーザー情報を求められるので入力していく。

npm notice Log in on https://registry.npmjs.org/ Username: <ユーザー名を入力> Password: <パスワードを入力> Email: (this IS public) <メールアドレスを入力>

最後まで入力すると、登録したメールアドレス宛にワンタイムパスワードが記載されたメールが届くのでそれを入力する。

実際のメール

メールに記載されていたワンタイムパスワードを入力する

npm notice Please check your email for a one-time password (OTP) Enter one-time password: <ワンタイムパスワードを入力する> Logged in as ... on https://registry.npmjs.org/.

これでNPM公開用のアカウントが作成されます。

GitHubリポジトリを作成

注意点

NPMにパッケージ公開を行う際にパッケージ名を決める必要があるが、このパッケージ名は他のNPMパッケージと被ってはいけない。

基本的にはリポジトリ名をパッケージ名にしたいはず。

リポジトリを作成していざNPMに公開しようとしてパッケージ名が被ってたので希望するパッケージ名で公開できなかったなんてことにならないように

リポジトリを作成する前に、NPMに公開しようとしているパッケージ名がすでに登録されていないかを確認しておく。

そのためにはNPMの公式サイトから登録したいパッケージ名で検索をかけます。検索でヒットしなければOKです。

作成手順

公開パッケージ用のリポジトリをGithubに作成します。

  1. Github内のマイページにある、repositories をクリック

  2. Newのボタンをクリックして新規リポジトリ作成ページへ

  3. リポジトリの情報を入力してCreate Repository をクリックすれば完了

  4. ローカル環境にクローンする

package.jsonを作成する

NPMにパッケージを公開する際には、package.jsonが必要になり、このファイルに記載されている情報をもとに公開用ページの内容やパッケージ名が決まります。

以下のコマンドでpackage.jsonの雛形を作成します。

npm init

色々聞かれるが基本はエンターキー連打で問題ないです。(package.jsonを作成するだけなので、仮に間違っていても後で直接ファイルを修正すればOK)

今回の例では、基本エンターキー連打だが、versionは0.1.0licenseはMIT
に変更した。

npm initした後に作成されたpackage.jsonが以下。

{ "name": "react-cursor", "version": "0.1.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "git+https://github.com/takutakuaoao/react-cursor.git" }, "author": "", "license": "MIT", "bugs": { "url": "https://github.com/takutakuaoao/react-cursor/issues" }, "homepage": "https://github.com/takutakuaoao/react-cursor#readme" }

(補足)pacakge.jsonのバージョン表記は0.1.0にしておいた方がいい理由

まず前提として、バージョン表記のルールには互換性がない破壊的な変更を行う場合、メジャーバージョン(一番左側の最初の数字部分)を上げるというルールがあります。

開発初期の段階では、破壊的変更なんてしょっちゅう発生します。なので、このルールに従うとどんどんメジャーバージョンのみが上がっていってしまいます。

この問題に対処するためにさきほどのバージョンアップのルールには適用されない特例が存在します。

それが、バージョンが0.x.xの範囲内であればメジャーバージョンを上げずに破壊的変更を行ってもいいというものです。

なので、package.json作成時のバージョンは0.0.1にしておいた方が無難かと思います。

パッケージを公開する

それではいよいよパッケージを公開していきます。

  1. タグをつける

    git tag -a v0.1.0 -m "My first version v0.1.0"
  2. Github側に反映

    git push origin tags/v0.1.0
  3. パッケージを公開する

    npm publish ./

パッケージ公開が完了して、https://www.npmjs.com/package/<パッケージ名> にアクセスしてページが表示されればOKです。これで完了です。