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 件のコメント:
コメントを投稿