nodejsは自分で編纂してモジュールを発表します.

4620 ワード

1新規モジュールディレクトリ構造
アルバムmgr
--lib(フォルダ)
--test(フォルダ)
package.json
Readkme.md
2 package.jsonファイルを作成する
{
	"name": "album-manager",
	"version": "1.0.0",
	"main": "./lib/albums.js",//  main    
	//"private": true
}
このファイルは少なくともモジュール名nameとmain jsファイルを含んで、nodeはこのファイルからモジュールをロードすることができます.
nodeがpackage.jsonファイルが見つからない場合、または指定されたmain jsファイルがない場合、index.jsまたはindex.nodeを探してモジュールのコンパイルを完了します.
同時に、npmモジュール名はalbum-managerで、デフォルトの起動jsファイルはalbums.jsで、libサブディレクトリの下にあります.
3 Readme.md(オプション)
モジュールは、ドキュメント、github.comで使用される標準ファイルのフォーマットを説明します.
4コアjsファイルを作成する
  albums.jsとalbum.jsを編纂してlibディレクトリの下に入れます.
  albums.js
	var fs = require('fs'),album = require('./album.js');
	exports.version = "1.0.0";
	exports.albums = function (root, callback) {...};
  album.js
var path = require('path'),fs = require('fs');
	function Album(album_path){
		this.name = path.basename(album_path);
		this.path = album_path;
	}
	Album.prototype.name = null;
	Album.prototype.path = null;
	Album.prototype._photos = null;
	Album.prototype.photos = function(callback){...};
	exports.create_album = function(path){
		return new Album(path);
	}
5テスト用の例を書いてテストします.
test.js
	var amgr = require('./album_mgr');
	amgr.albums('./',function(err,albums){
		if(err){
			console.log('unexpected error: ' + JSON.stringify(err));
			return;
		}
		
		(function iterator(index){
			if(index == albums.length){
				console.log('Done');
				return;
			}
			albums[index].photos(function(err,photos){
				if(err){
					console.log('Err loading albums: ' + JSON.stringify(err));
					return;
				}
				console.log(albums[index].name);
				console.log(photos);
				console.log('');
				iterator(index +1);
			});
		})(0);
	})
node node\test.js
結果:
American
[]
China
[’CA Technologies.png’、
  'Caterpillar.jpg'
  'Charter.jpg'は、
  'chbb.png'
  'Chunghwa Telecome.jpg'は、
  'CIFIN.png'は、
  'Cinti.png'は、
  'CMC.jpg'は、
  'Coca Cola.png'
インディアン
[]
ドーン
6ローカル展開モジュール
  package.jsonに「prvate」を追加します.trueはnpmにmoduleをまだnpmライブラリに配置していないと伝えました.今はnpm linkでnpmにローカルのデフォルトライブラリにlinkを置いてalbum-managerカバンに接続します.
  C:\Users\xode\albumumgr>npm link
C:\Users\xxx\Appdata\Romingpmodes\album-manager->C:\Users\xode\albumumgr
7モジュールの使用
  上に配置したローカルモジュールを使うには、まだ二つの仕事が必要です.
  (1)コードの中で「album-manager」を引用するのは「albumumgr」ではなく、npmはpackage.jsonの中のname値を使うからです.
  (2)モジュールを使用する各プロジェクトのために、npmでalbum-managerモジュールへの参照を作成する.
C:\Users\xxx>mkdir testuploject
C:\Users\xxx>cd testuproject
C:\Users\xxx\testuploject>npm link album-manager
C:\Users\xodemumodules\album-manager->C:\Users\xxx\Appdata\Romingpmodemumodules\album-manager->C:\Users\xode\albumumgr
C:\Users\xxx>dir nodemumodules
Volume in drive C hasのlabel.
Volume Serial Number is 2 CD-F 330
Directory of C:\Users\xxodeumodules
07/07/2014  11:03 AM              .
07/07/2014  11:03 AM              ..
07/07/2014  11:03 AM         album-manager[C:\Users\xxx\アプリData\Romingpmodes\album-manager]
06/24/2014  03:01 PM              formidable
               0 File(s)              0 bytes
               4 Dir(s)   5,949,730,816 bytes free
8モジュールのリリース
作成したモジュールを他の人に共有したいなら、npm publishコマンドで公式のnpmに登録してください.
(1)package.jsonのprvate行を削除する
(2)npm adduserでnpm登録サーバにアカウントを作成する
(3)モジュールディレクトリでnpm pblishを実行してnpmにプッシュします.
C:\Users\xxx>npm adduser
Username:myname
Password:
Email:(this IS public)[email protected]
C:\Users\xode\albumuumgr>npm pblish
[email protected]
npm登録からキャンセルしたいなら、発表も簡単です.
C:\Users\xode\albumumgr>npm unpublish
npm ERR!Refusing to delete entire project.
npm ERR!Run with--force to do this.
npm ERR!npm unpublish<project>[@npm ERR!not ok code 0
C:\Users\xode\albumumgr>npm unpublish--force
npm WARN using--force I sure hope you know what you are dong.
[email protected]
フォースで強制的にリリースをキャンセルします.