表題の通りです。
正統派な使い方ではないとは思うのですが、
htmlを普通に書くのが面倒なので
phpで書いていました。
書いている途中で気付いたのですが
変数とかループとか開発とか修正時には
楽だけど、運用面を考えると動的な動きほとんどないし、
最終的にはhtmlにしたいなと思いつつ、
開発中はphpで書けた方が楽なので、
gulpを使ってhtmlに自動変換することにしました。
ただプラグインであるphp2htmlだと希望の動きをしてくれません。
希望の動きとは
/src/index.php
を
/dist/index.html
に変換することでそれだけなら上記のプラグインで
問題ないのですが、自分が作っている
index.phpはサブディレクトリにある
phpファイルの内容を拾ってきてincludeする
ようにしていて、そのためサブディレクトリの
ファイルを編集してもindex.phpの記述は
変わらないため、変更なしとgulpに判断されて
変換が発生しません。
で、プラグインを使うことは諦めて
代わりに自作したphpファイル(実行するとphpをhtmlに変換)
を実行しようと思い調べたところ
どうやらchild_processを使えば任意のコマンドを実行できる
ところまではわかりました。
検索するとサンプルはいくつか見つかったのですが
いずれもgulp4以前のものでgulp4に対応した書き方の
サンプルがわかりませんでした。
一応stackoverflowでそれっぽいものを見つけて
書いてみたのが以下の内容になります。
なお自作のphpファイル自体は動いていて、gulpで実行するとエラーになります。
gulp
1const {exec} = require('child_process'); 2const php = exec('php',['src/generate.php']); 3function execPhpToHtml(done) { 4 exec(php, function (err, stdout, stderr) { 5 console.log(stdout); 6 console.log(stderr); 7 done(err); 8 }); 9} 10exports.phptohtml = execPhpToHtml;
エラー内容↓
TypeError [ERR_INVALID_ARG_TYPE]: The "file" argument must be of type string. Received an instance of ChildProcess
多分すごい初歩的なところでつまづいているんだろうなとは
思うのですが、どうにも分からず、お手数ですがご存知の方がいらっしゃいましたら
お力をお借りできれば幸いです。
※今は自作のphpファイルを実行する方向で考えていますが、
プラグインの設定など別の方法で目的を達成できればそれはそれで良いかなと思っています。
回答1件
あなたの回答
tips
プレビュー