2016-07-23 5 views
2

node.js cliに起動スクリプトを追加するにはどうすればよいですか?例えば。いくつかのオプションを設定していますか?NodeJS CLIの起動スクリプトを持っています

編集:私は上の(bashrcに似)つまり、私は私のシステムのどの部分でnode CLIを起動し、それが起動スクリプトをプリロード持つことができるようにしたい、サーバー側について話している グローバルレベル。

+0

クライアント側で[JavaScript require()が重複している可能性があります](http://stackoverflow.com/questions/5168451/javascript-require-on-client-side) – Arthur

+0

あなたはおそらく自分のエミュレートする必要がありますREPL(https://nodejs.org/api/repl.html)APIを使用してreplを実行します。すぐに私は家に帰るだろう。あなたがそれを理解しなければ、基本的なプロトタイプを書くだろう – MayorMonty

答えて

1

あなたの投稿を読んだとき、私は現在のNode.js REPLが吸うことに気付きました!そこで、あなたの投稿の機能の基本的なデモを行い、それをrattleと呼びました。

#!/usr/bin/env node 

これはシェバングは、それはあなたが知っている、それはノードとして

const repl = require("repl"), 
     vm  = require("vm"), 
     fs  = require("fs"), 
     path = require("path"), 
     spawn = require("child_process").spawn, 
     package = require("./package"); 

インポートすべてのパッケージを実行していますことを確認している。ここで

、私はコードの各行を説明しますドリル

function insertFile(file, context) { 
    fs.readFile(file, function(err, contents) { 
    if (err) 
     throw err; 
    vm.runInContext(contents, context); 
    }); 
} 

私は(REPLがある)VMコンテキストにファイルを挿入する機能を定義し

if (process.argv.includes("--global")) { 
    console.log(path.resolve(__dirname, ".noderc")); 

ディスプレイグローバル.noderc

/** Hijack the REPL, if asked **/ 
} else if (process.argv.length < 3 || process.argv.includes("-i") || process.argv.includes("--interactive")) { 

の場所これは、コードの肉が開始されます。ユーザがローカル.nodercあるかどう挿入がある場合は、標準のプロンプトで、REPLを作成REPLモードに

console.log(`rattle v${package.version}`); 

    var cmdline = repl.start("> "), 
     context = cmdline.context; 

を入力して、VMコンテキストに

/** Insert config files **/ 
    fs.access(localrc = path.resolve(process.cwd(), ".noderc"), function(noLocal) { 
    if (!noLocal) { 
     insertFile(localrc, context); 
    } 
    }); 

テストを取得したい場合、これは検出しグローバル.nodercのコンテキスト

fs.access(globalrc = path.resolve(__dirname, ".noderc"), function(noGlobal) { 
    if (!noGlobal && globalrc !== localrc) { 
     insertFile(globalrc, context); 

    } 
    }); 

テストにそれ、およびそれに

} else { 
    /** Defer to node.js **/ 

    var node = spawn("node", process.argv.slice(2)); 

    node.stdout.pipe(process.stdout); 

    node.stderr.pipe(process.stderr); 
} 
を挿入

残りの部分はREPLのものではないため、コードをノードに渡します

これは書くのは楽しいものでした。

Good Luck!

関連する問題