私は、Javascriptファイルstartup.jsを評価することから始まるnode.js(v0.6.12)アプリケーションを持っています。startup.jsの評価には長い時間がかかります。可能であれば、Nodeのカスタムビルドに「焼き付け」たいと思います。
Nodeとともに配布されるv8ソースディレクトリnode/deps / v8 / srcには、これを行うためにほぼ使用できるSconScriptが含まれています。302行目には
LIBRARY_FILES = '''
runtime.js
v8natives.js
array.js
string.js
uri.js
math.js
messages.js
apinatives.js
date.js
regexp.js
json.js
liveedit-debugger.js
mirror-debugger.js
debug-debugger.js
'''.split()
これらのjavascriptファイルは同じディレクトリにあります。ビルドプロセスの何かが明らかにそれらを評価し、状態のスナップショットを取り、それをバイト文字列としてnode / out / Release / obj / release / snapshot.cc(Mac OSの場合)に保存します。このファイルはノードにベイクされているようです。
SconScriptを変更することで、起動スナップショットをある程度カスタマイズできます。たとえば、date.jsを変更することで、組み込みのDate.toStringの定義を変更できます。内容を含むライブラリファイルのリストにstartup.jsを追加することで、新しいグローバル変数を追加することもできますglobal.test = 1
。
ただし、JavaScriptコードだけをに入れることはできませんstartup.js
。が含まれている場合Date.toString = 1;
、コードがノードreplで有効であっても、エラーが発生します。
Build failed: -> task failed (err #2):
{task: libv8.a SConstruct -> libv8.a}
make: *** [program] Error 1
そして明らかに、Nodeがv8に追加するライブラリに依存するコードを利用することはできません。global.underscore = require('underscore');
同じエラーが発生します。
customSnapshot startup.js
理想的には、Nodeでstartup.jsを評価し、スナップショットをファイルsnapshot.ccにダンプするツールcustomSnapshotが必要です。このファイルは、Nodeのソースディレクトリに配置できます。次に、ノードを構築して、スナップショットを再構築しないように指示できます。