ゆるふわ技術日誌

ゆるくふわっと広く浅く。

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においておいたのでもしよろしければ。

github.com

動かしてみたらこうなる。(見切れてるけど…)

f:id:uutarou:20170622233402g:plain

なぜかイベントが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を利用しました。

github.com

使い方はREADME.mdを。

日本語訳に頼るのはホントは良くない気がしますが、いい感じに翻訳されたドキュメントもあるので見ながら書けば良さそう。

Dockerfile リファレンス — Docker-docs-ja 1.13.RC ドキュメント

雑談

課題が終わらない!!


LaTeX環境を作ってくれるDockerfile+自分の使うスタイルファイルとかを作っておけば

みたいなときに便利だからつ〜くろ、と思ったんですが我が家の回線でその作業し始めると数時間コースなので延期。