【Graunt】Grauntの可視化に関する試み
5762 ワード
<!--&菗13;
1,h 2,h 3,h 4,h 5,h 6,p,blockquot{magin:0;padding:0;}body{font-famimily:“Helvetica Neue”,Helvetica,“Hragino Sans GB”,Aril,sas-serif;font-size pzx 13 pze e e e e e e ppppphttttttttxxxxxxtttttpppppppppppppppppppppppppppze e e 13 ppppze e e e e e e e e 13 ppppppppppppppd 6;a:hover{color=ble 0050 a 3;text-decoration:none}a[border:none]p{magin-bottom:9 px;}h 1,h 2,h 3,h 4,h 5,h 6{カラー6}h 6{芮404040;line-height:36 px;h1{magin-bottm:18 px;font-size:30 px;h2{font-size:24 px}h 2}h 2{font- sizze:24 px;3 fozzzzzzzzzzzzzzzzzze:16 fottttttttttttttttttttttttttttttttttttttttttttttf:{16 fofox 13 px;}hr{margin:0 19 px;border:0;border-bottom:1 px sold咻咻blockquot;{padding:13 px 13 px 21 px 15 px;margin-bottom:18 px;font-family:georgia、serif;font-style:italic;C";font-size:40 px;magin-left:-10 px;font-famimimimiy:georgia、serif;カラー:\33801;本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本{background-カラー:(zhi fee 9 cc);(0、0、0、0.75)、padding:1 px 3 px;font-size:12 px;-webkit-border-radius:3 px;−moz-border-radius:3 px;pre{display:block;padding:14 pdlinx:16 ppdlinx:16 pdlinx:16 ppdlinx:18 18 pdlinx:18 pppdlinx:18 pppx;ppx:18 pdlinx:18 ppx;ppppx;pdlinx:16 px;ppdlinx;px:16 pppdlinx;px;pppppdlinx:16 ppx:16 px;9;white-space:pre-wrap;word-wrap:break-word;pre code{background}菗737373;font-size:11 px;padding:0;&啝13;
-->
Grauntを使って遭遇した問題?は をインストールしなければなりません.は をインストールしなければなりません.は、複雑な を作成する必要があります.各項目にnodejsが存在しなければならない は、gruntを含む各項目を管理するのに不便である .プロジェクトを早く開始できませんでした. 考えをまとめる直接 UIがあるインタフェースを利用して管理しますか? プログラムでgruntfileのルールを簡略化しますか? すべての項目に必要なgruntモジュールを一緒に含める? 標準的にいくつかの常用機能モジュールを内蔵しますか? ソリューション--nodewebkitは は を作成するのに便利です.フロントエンドの開発に適しています. の一回の開発は、三大平台window/mac/linux の互換性があります.
問題にぶつかる
一.どうやってNodeJSをGranctを実行させますか?は、NodeJSのspawnを利用してcmdコマンド に依存する必要がある.は、grunt-cliのモジュールを直接コードに導入し、nodejsを利用して を修正したいです.
二.どうやってサブプロセスでGrauntを実行しますか? NodeJSのchild upurcess.fork
child uprocess.fork is brook en
--囧、この方法は使えませんでしたか?Googleを続けて分かりました.
child upprocess.forkはjsファイルを実行できないので、直接実行命令
--そして、大きな問題が残されています.forkの通信インターフェースが使えなくなりました.囧、最後に
child uplocess.forkは
は、NodeJSのwebworkerを利用して
spawn node not foundは、実行する命令が見つからないです.
変です. HTML 5のwebworker
三.現在利用可能な方案 は非子プロセス方式を採用する. 複数のgruntタスクを同時に走れない gruntは終了方法を提供していません. 手動でgruntのwatchタスクと多くの変数値をクリアする必要があります.比較的に面倒です. エラーが発生しました.直接プログラムを終了する可能性があります.
独立して、childコンテンツを実行可能ファイルに包装し、child uplocess.spawnを用いて実行する. は実行可能ファイルを二つ開けなければなりません.二つを合わせて少なくとも80 M もあります.開発にはforkが必要です.包装にはspawn を使います.
NodeJSをインストールし、webworker方式を採用する. コンピュータはNodeJs をインストールしなければなりません.現在より良い方案 未来のNOdewebkitはサブプロセス方式をサポートしています.比較的に簡単に修正できます.
PS:まだ他の子プロセスが発見されていません.他の大神を助けてください.
1,h 2,h 3,h 4,h 5,h 6,p,blockquot{magin:0;padding:0;}body{font-famimily:“Helvetica Neue”,Helvetica,“Hragino Sans GB”,Aril,sas-serif;font-size pzx 13 pze e e e e e e ppppphttttttttxxxxxxtttttpppppppppppppppppppppppppppze e e 13 ppppze e e e e e e e e 13 ppppppppppppppd 6;a:hover{color=ble 0050 a 3;text-decoration:none}a[border:none]p{magin-bottom:9 px;}h 1,h 2,h 3,h 4,h 5,h 6{カラー6}h 6{芮404040;line-height:36 px;h1{magin-bottm:18 px;font-size:30 px;h2{font-size:24 px}h 2}h 2{font- sizze:24 px;3 fozzzzzzzzzzzzzzzzzze:16 fottttttttttttttttttttttttttttttttttttttttttttttf:{16 fofox 13 px;}hr{margin:0 19 px;border:0;border-bottom:1 px sold咻咻blockquot;{padding:13 px 13 px 21 px 15 px;margin-bottom:18 px;font-family:georgia、serif;font-style:italic;C";font-size:40 px;magin-left:-10 px;font-famimimimiy:georgia、serif;カラー:\33801;本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本{background-カラー:(zhi fee 9 cc);(0、0、0、0.75)、padding:1 px 3 px;font-size:12 px;-webkit-border-radius:3 px;−moz-border-radius:3 px;pre{display:block;padding:14 pdlinx:16 ppdlinx:16 pdlinx:16 ppdlinx:18 18 pdlinx:18 pppdlinx:18 pppx;ppx:18 pdlinx:18 ppx;ppppx;pdlinx:16 px;ppdlinx;px:16 pppdlinx;px;pppppdlinx:16 ppx:16 px;9;white-space:pre-wrap;word-wrap:break-word;pre code{background}菗737373;font-size:11 px;padding:0;&啝13;
-->
Grauntを使って遭遇した問題?
NodeJS
grunt-cli
Gruntfile.js
規則grunt
モジュールNodeJS
とgrunt-cli
を含める?nodejs
を集めています.NodeJSのインストールを省きます.webkit
カーネルを統合し、インタフェース問題にぶつかる
一.どうやってNodeJSをGranctを実行させますか?
//
process.chdir(" ");
// grunt
require("child_process").spawn("grunt");
を実行するのが最も簡単であるが、NodeJS
とgrunt-cli
var gruntpath = "grunt.js ";
var grunt = require(gruntpath);
grunt.cli();
を呼び出して直接実行し、grunt file.jsが見つからないことをヒントを与え、gruntフォルダのtask.js
を修正し、約430行ぐらいでvar old_path = process.cwd();//
process.chdir(' ');//
var gruntfile = allInit ? null : grunt.option('gruntfile') ||
grunt.file.findup('Gruntfile.{js,coffee}', {nocase: true});// gruntfile
process.chdir(old_path);//
n ~~~
(grunt.option('npm') || []).forEach(task.loadNpmTasks);// npm
process.chdir(' ');//
をプロジェクトファイル検索gruntfile.js
ファイルに切り替え、プログラムディレクトリのnodeモジュールに切り替えて、gruntを実行した後、プログラムが自動的に終了しました.Guntの下のexit.js
process.exit(0);//
二.どうやってサブプロセスでGrauntを実行しますか?
var child = require("child_process").fork("child.js");
child.onmessage = function(data){
console.log(data);
}
child.on("exit",function(exitCode){
console.log(exitCode);
});
--運転後のヒント:unzip the package xx/child.js、インターネット上の各種Googleを利用して、作者の結論を得ます.child uprocess.fork is brook en
--囧、この方法は使えませんでしたか?Googleを続けて分かりました.
child upprocess.forkはjsファイルを実行できないので、直接実行命令
nw
を実行します.だから修正して、child
フォルダの中にもpackage.json
ファイルを入れて、実行したら、本当に成功しました.--そして、大きな問題が残されています.forkの通信インターフェースが使えなくなりました.囧、最後に
tcp
を使ってプロセス通信を実現するしかありませんでした.child uplocess.forkは
child
コマンドを実行しますので、包装後はnwコマンドがありません.npm install node-webworker
を実行した後、nw
var Worker = require("worker.js");
var workker = new Worker("child.js");
worker.onmessage = function(data){
console.log(data);
}
worker.postmessage({msg:'hello'});
を引用して実行したところ、child.jsの中のいかなる情報も親プロセスに伝えられず、worker.js
に関連情報が保存されていることが分かりました.:spawn node not foundは、実行する命令が見つからないです.
変です.
worker.impl.buffer
を呼んでいませんでしたが、どこで見つけられませんでしたか?worker.jsのソースコードを調べてみます.囧、var timeId = setInterval(function(){
var msg = worker.impl.buffer;
if(!msg)return false;
console.log(msg);
worker.imple.buffer = "";
},1000);
囧、もとはspawn
のコマンドを実行して子プロセスを実現しました.お父さんを陥れました.child_process.spawn("node xxx.js");
を使ってテストしたところ、実行に成功し、メッセージも正常に受信されました.しかし、node
はwebworker
コードを実行していません.gruntは走れません.三.現在利用可能な方案