【Docker】PhpStormでSCSSやWebPackが使える「File Watcher」をDockerコンテナと連携する方法

私はPhpStormで開発をしていますが、「File Watcher」という機能を使っています。

ファイルを変更したらSCSSやWebPack等にコマンドを送ってくれる便利機能なのですが、先日ローカルマシンをアップデートしたからかエラーが出てくるようになりました。

そこで各ライブラリ群をDockerに移し、PhpStormのFile Watcherと連携しました。

Dockerfile作成

SCSSとWebPackが入っているDockerコンテナを作成します。私は古いWebPackを使っているので、このあたりはプロジェクト毎にバージョンを合わせたほうが良いですね。

####################
FROM alpine:3.10
RUN apk update && apk upgrade --update-cache && apk add --no-cache nodejs npm \
####################
# SASS&WebPackインストール
#(npm configを設定しないとSASSでエラー)
####################
&& npm config set user 0 \
&& npm config set unsafe-perm true \
&& npm i -g node-sass@4.14.1 \
####################
# WebPackインストール(globalと/watcher内)
# -g がついたwebpackは直接叩く用。ついてないwebpackはjsからrequireする用です。
# (loader系はhttpdocsの親階層じゃないとエラーになるしNODE_PATH設定面倒なので)
####################
&& npm i -g webpack@1.15.0 \
&& mkdir /watcher && cd /watcher \
&& npm i webpack@1.15.0 \
&& npm i bower-webpack-plugin@0.1.9 \
&& npm i script-loader@0.6.1 \
&& npm i exports-loader@0.6.2 \

SCSS(File Watcher)設定

Program

docker

Arguments

run -i –rm -w=/watcher$FileDir$ -v $ProjectFileDir$:/watcher$ProjectFileDir$ phpstorm-file-watcher:builded-alpine3.10 node-sass –output-style compressed $FileName$ $FileNameWithoutExtension$.min.css

output paths to refresh

$FileNameWithoutExtension$.min.css

Working directory

$FileDir$

Environment Variables

なし

WebPack(File Watcher)設定

Program

docker

Arguments:run

run -i –rm -w=/watcher$FileDir$ -v $ProjectFileDir$:/watcher$ProjectFileDir$ phpstorm-file-watcher:builded-alpine3.10 webpack $FileName$ $FileNameWithoutExtension$.min.js

output paths to refresh

$FileNameWithoutExtension$.min.js

Working directory

$FileDir$

Environment Variables

なし