Cloud9 IDEには、NideのようなNPM Managerがありません。expressをインストールするには、コマンドラインを使う必要があります。IDEからnpmインストールできるといいですよね。
ローカル環境にインストールしたCloud9 IDEを拡張してみます。
ポイント
- npmコマンドは結局サーバ側のコマンドなので、クライアントとサーバの両方を拡張する必要がある。
- gittoolsが参考になる。
全体の流れ
- クライアント側からide.send(message)を使ってJSONでコマンド送信。サーバー側のthis.command(user, message, client)で受信。
- サーバ側でspawnCommandでコマンド実行。コールバック内でsendResultでストリーム出力をクライアントへ送信。
- クライアント側のonMessageで出力を受信。クライアントinit内でideのsocketMessageイベントとバインドしておく。
とりあえずで出来上がったのが、これ。
有効化するとEditからNPM Managerを選択できます。
ダイアログが開いて、パッケージ名を入力。
コンソールにNPMがインストール結果が表示されます。
もう少し理解を深めたらgithubに公開しようと思います。今回は一部だけ。サーバ側のコマンドの実装です。
this.command = function(user, message, client) {
if (message.command != "npmtools")
return false;
var _self = this;
var subcommand = message.subcommand;
if(subcommand !== "install") return false;
var packagename = message.packagename;
var argv = [subcommand, packagename];
var npmRoot = ".";
this.spawnCommand("npm", argv, npmRoot,
function(err) { // Error
_self.sendResult(0, message.command, {
code: 0,
err: err,
out: null
});
},
function(out) { }, // Data
function(code, err, out) { // Exit
_self.sendResult(0, message.command, {
code: code,
err: null,
out: out
});
}
);
return true;
};
あとは、コマンドラインからnpm打てるようにするのと、画面からパッケージの一覧、アンインストールできるようにしたいと思います。



0 件のコメント:
コメントを投稿