Skip to content
uupaa edited this page Oct 12, 2014 · 19 revisions

このエントリでは WebModule の命名制約について説明します。

WebModule には命名に制約があります。この制約は、WebModule が GitHubnpm という2つの異なるポリシーを持った環境にモジュールを登録する都合から発生しています。

  • 使用可能な文字種
    • GitHub リポジトリ名に利用できる文字種は、A-Z, a-z, 0-9, ドット(.), アンダーバー(_), ハイフン(-) です
    • npm パッケージ名に利用できる文字種は a-z, 0-9, ドット(.), アンダーバー(_) です
  • スコープ
    • GitHub はユーザごとのスコープを持ちます。ユーザA と ユーザB が個々に MyWebModule.js を作成することが可能です
    • npm はグローバルなスコープを持ちます。ユーザA が mywebmodule.js を作成すると、ユーザB はもうその名前では登録できません

これらを踏まえた、WebModule の命名規則は以下のようになっています。

WebModule の命名規則

WebModule のモジュール名は、MyExample.js のように、プリフィクス("My") + 機能名("Example") + 拡張子(".js") で構成されます。

  • プリフィクスには、 "My" などの適当な短い文字列を付けてください
    • 省略が可能ですが、省略した場合は、WebModule 名前空間における衝突が発生する可能性があります
  • 機能名には、モジュールの機能性を表す文字列を付けてください
    • PacalCase を使ってください
  • 拡張子には、開発環境を示す拡張子を指定します
    • JavaScript なら ".js" にします
    • npm の説明には「パッケージ名の末尾に".js"をつける必要はありません、不要です」と説明があります。が、気にせず付けてください
      • 拡張子を付けておくことで開発言語の特定が簡単になります。これは将来 WebModule が JavaScript 以外の環境(たとえばTypeScript)をサポートした場合に重要になります
      • GitHub リポジトリ名から npm パッケージ名を生成する式が簡単になります
        • "uupaa/MyExample.js".replace("/", ".").toLowerCase(); // -> "uupaa.myexample.js"

命名例

WebModule のモジュール名を "MyExample.js" とした場合を例に説明します。

GitHub のリポジトリ作成画面で指定するリポジトリ名を "MyExample.js" とします。

Owner                    Repository name
+-------------------+   +-------------------+
| uupp              | / | MyExample.js      |
+-------------------+   +-------------------+

この状態で node ../WebModule/clone コマンドを実行すると、このような package.json が生成されます。

{
  "name": "uupaa.myexample.js",
  "url":  "https://github.com/uupaa/MyExample.js",
  "repository": {
    "type": "git",
    "url":  "https://github.com/uupaa/MyExample.js.git"
  },
  ...
}

npm publish コマンドで npm に登録されるパッケージ名は uupaa.wmexample.js になります。

まとめるとこうなります

名前
GitHub ユーザ名 uupaa
WebModule 名 MyExample.js
GitHub リポジトリ名 MyExample.js
npm パッケージ名 uupaa.wmexample.js

Clone this wiki locally