LoginSignup
24
10

More than 5 years have passed since last update.

npmのorganizationアカウント運営

Last updated at Posted at 2018-02-04

npmのorganizationアカウントを作成するタイミングがあったので、調べた内容をメモとして残します。

0. organizationアカウントとは

企業やプロジェクトなどの組織として、npmのパッケージ管理を行うための仕組み。
組織名をスコープ(namespace)としたパッケージの作成や、有料プランを使用する場合の支払いの一元管理が可能となる。

Googleのorganizationページ
https://www.npmjs.com/org/google

@googleをスコープにしたmapsパッケージ
https://www.npmjs.com/package/@google/maps

1. organizationアカウント作成方法

1.1 個人アカウントの用意

organizationアカウントは個人アカウントをベースに作成する。
ということで、まず個人アカウントが必要となる。

個人アカウント登録ページ
https://www.npmjs.com/signup

ベースとした個人アカウントが、organizationアカウントの最初のOwnerとなる。
Owner権限は後から別のアカウントに変更可能(それほど慎重に考えなくて良い)

1.2 organizationアカウント作成

組織名と料金プランを登録するだけでOK。
登録は個人アカウントページの右下、 [ create an organization ] から行う。

個人アカウントページ
https://www.npmjs.com/~

create an organization 直リンク
https://www.npmjs.com/org/create

1.2.1 組織名について

登録済みのorganizationアカウント、個人アカウントと重複しない名前のみ使用可能。
ベースの個人アカウント名を組織アカウント名としてコンバートすることも可能。(その場合、ベースの個人アカウント名を新たに付け直すフローになる)

組織名はorganizationページのURLとして使われる。

組織ページURLの例
https://www.npmjs.com/org/組織名

1.2.2 料金プランについて

publicなパッケージの管理なら無料プランでOK。
有料プランでは、privateなパッケージの管理が出来るようになる。

有料プランの月額 : 所属メンバー数 × $7

2. メンバーについて

組織メンバーとして個人アカウントを登録することができる。
組織パッケージの管理者は組織メンバーである必要がある。
メンバーの追加はOwner権限のあるアカウントで行う。
ベースとした個人アカウントがOwner権限のメンバーとしてあらかじめ登録されている。

2.1 メンバー追加方法

Owner権限のあるアカウントを使用し、organizationページのmembersタブから追加する。
各メンバーの権限もこの画面で設定できる。

2.2 権限について

メンバーの権限は3種類

  • Owner
  • Admin
  • Member
出来ること Owner Admin Member
パッケージ管理
チーム管理
メンバー管理
料金プラン管理

3. チームについて

チームという単位で組織メンバーをグループ分けすることが出来る。
組織のパッケージは1つ以上のチームに割り当てられ、そのチームに所属するメンバーに管理権限が与えられる。
チーム作成やメンバー追加は、OwnerかAdmin権限のあるアカウントで行う。

3.1 チーム作成方法

OwnerかAdmin権限のあるアカウントで、organizationページのteamsタブから作成する。
チームへのメンバー追加やパッケージ追加もこの画面で行える。

4. 組織パッケージについて

組織スコープだけでなく、スコープなしや個人スコープのパッケージも組織管理にすることができる。
それぞれのパターンで手順が若干異なるので簡単にまとめる。

npmの公開手順自体がわからない方はこちらの記事が参考になります。
3分でできるnpmモジュール

組織スコープのパッケージ登録

  1. package.jsonのnameを"@組織名/パッケージ名"にする
  2. 組織メンバーのアカウントでnpm publishする
    • 有料プランならprivateパッケージとして登録される
    • 無料プランはprivateが使えないのでnpm publish --access publicとする
    • 初期チームはpublishしたメンバーの最初のチームになる(publish時に指定する方法が見当たらない・・・)
  3. OwnerかAdmin権限のあるアカウントで、organizationページのteamsタブから任意のチームに管理を移す

スコープ無しのパッケージ登録

  1. package.jsonのnameを"パッケージ名"にする
  2. npm publishする
  3. publishしたアカウントにAdmin権限を与える
  4. publishしたアカウントで任意のチームにパッケージを登録する(パッケージ公開したアカウントでしか行えない)

個人スコープのパッケージ登録

  1. package.jsonのnameを"@個人アカウント名/パッケージ名"にする
  2. npm publishする
    • 個人アカウントが有料プランならprivateパッケージとして登録される
    • 無料プランはprivateが使えないのでnpm publish --access publicとする
  3. publishしたアカウントにAdmin権限を与える
  4. publishしたアカウントで任意のチームにパッケージを登録する(パッケージ公開したアカウントでしか行えない)

5. 特殊な運用メモ

Ownerアカウント変更

  1. Owner権限を与えるアカウントを、Owner権限でメンバーに追加する
  2. 追加したアカウントで、元のOwnerを別の権限に変更する

メンバーの削除

  • Owner権限を与えるアカウントでチーム管理画面から削除できる
  • メンバーが作成したスコープ無しパッケージや個人スコープパッケージは組織に残る

組織パッケージの削除

  • スコープ無しパッケージや個人スコープパッケージはチーム管理から外すと作成した個人アカウントの管理に戻る(作成アカウントがメンバーにいないとパッケージが消失したが、バグかもしれない。)
  • 組織スコープのパッケージも個人パッケージと同様、公開から24時間以内は npm unpublish --force パッケージ名 で物理削除することは可能(それ以降は問い合わせで対応)
24
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
10