Nodeでファイル変更検知/はじめてのDocker #39
今日やったこと
Nodeでファイル変更検知
ちょっとした用事があってファイルの変更検知、やりたいなぁ…と思って。
最初シェル芸で片付けようかと思ってファイルのチェックサムを定期的に確認して変更があったらファイル変更って感じのスクリプトを書こうとしたのですが、例えば指定ディレクトリ下のファイルのどれかに変更があったら検知…とかやろうとするとどうしたらいいのかわからず。(全ファイルのチェックサム計算する???)
そしたら、Node.jsのfsには標準でwatchがついてるという情報をキャッチしたので使ってみました。
const fs = require('fs') fs.watch('./src', (eventType, fileName) => { switch (eventType) { case 'rename': console.log(`${fileName} is renamed!`) break; case 'change': console.log(`${fileName} is changed!`) break; } }) console.log('Watching...')
こんな感じ。一応GitHubにおいておいたのでもしよろしければ。
動かしてみたらこうなる。(見切れてるけど…)
なぜかイベントがrenameしか拾えてないのですが、その辺はまた明日。
File System | Node.js v8.1.2 Documentation
これがドキュメント。なんかFSWatcherがなんとかとか書いてる気がしますね。明日やります。
Docker使ってますか?
便利ですよね。
なんだかんだちゃんと使ったことがなかったのでかんたんなDockerfileを書いてみました。
FROM ubuntu:16.04 RUN apt update && \ apt install -y curl &&\ curl -sL https://deb.nodesource.com/setup_6.x | bash &&\ apt install -y nodejs ENV APP /app ADD . $APP WORKDIR $APP CMD ["npm", "start"]
こんな感じ。(実は某別件で触れてる構成とほぼ同じ感じだったりするのでう〜ん。)
UbuntuベースにNode.jsをインストールしてカレントディレクトリのファイルをコンテナの/app下に配置する感じ。
こうやって見てみると何も難しいことはしてないのが分かる。
ちなみにNode.jsは apt update
した上で apt install nodejs npm
で入れてあげることもできるのですが、降ってきたバージョンが4.xとかでめっちゃ古かったので(現状の安定版は6.11.0)NodeSourceを利用しました。
使い方はREADME.mdを。
日本語訳に頼るのはホントは良くない気がしますが、いい感じに翻訳されたドキュメントもあるので見ながら書けば良さそう。
Dockerfile リファレンス — Docker-docs-ja 1.13.RC ドキュメント
雑談
課題が終わらない!!
LaTeX環境を作ってくれるDockerfile+自分の使うスタイルファイルとかを作っておけば
- Macが急に故障
- クリーンインストールしたい衝動に駆られたけど課題がある
みたいなときに便利だからつ〜くろ、と思ったんですが我が家の回線でその作業し始めると数時間コースなので延期。