-
Notifications
You must be signed in to change notification settings - Fork 8
ModuleName
uupaa edited this page Oct 12, 2014
·
19 revisions
このエントリでは WebModule の命名制約について説明します。
WebModule の命名には制約があります。
この制約は、WebModule が GitHub と npm という2つの異なるポリシーを持った環境にモジュールを登録する都合から発生しています。
-
使用可能な文字種の違い
- GitHub リポジトリ名に利用できる文字種は、A-Z, a-z, 0-9, ドット(.), アンダーバー(_), ハイフン(-) です
- npm パッケージ名に利用できる文字種は、a-z, 0-9, ドット(.), アンダーバー(_) です
-
スコープの違い
- GitHub はユーザごとのスコープを持ちます。各ユーザが思い思いに
MyWebModule.js
を作成できます - npm はグローバルなスコープを持ちます。あるユーザが
mywebmodule.js
を作成すると、もうその名前は使用できません。先願制です
- GitHub はユーザごとのスコープを持ちます。各ユーザが思い思いに
これらを踏まえ、WebModule の命名規則は以下のようになっています。
WebModule のモジュール名は、MyExample.js
のように、プリフィクス("My") + 機能名("Example") + 拡張子(".js") で構成されます。
- プリフィクスには "My" などの適当な短い文字列を付けてください
- 省略可能ですが、省略した場合は、WebModule 名前空間における衝突が発生する可能性があります
- WebModule 初期に生成されたモジュールはプリフィクスを持っていませんが、2014-08 以降に生成されたモジュールは "WM" プリフィクスが設定されています
- 機能名にはモジュールの機能性を表す文字列を付けてください
- 基本的に PacalCase で命名してください
- iPhone や AKB などの広く一般に認識されている単語や略語は無理に加工せずそのまま利用します(例:
MyiPhoneDevice
,MyAKBMemberList
)
- 拡張子には開発環境を示す拡張子を指定します
- 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.myexample.js
になります。
まとめるとこうなります
名前 | |
---|---|
GitHub ユーザ名 | uupaa |
WebModule 名 | MyExample.js |
GitHub リポジトリ名 |
uupaa/MyExample.js または単に MyExample.js
|
npm パッケージ名 | uupaa.myexample.js |
JavaScript Class名 | window["MyExample"] new MyExample() |
require名 | require("path/MyExample.js") |