npm run scripts で current directory を参照したい。
環境変数を使います。
$PWD
ではダメ
npm run foo
は常に基準となるディレクトリで実行されるので、たとえば以下の npm run here
は、配下のディレクトリに潜っても同じ結果を返します。
"scripts": { "here": "echo $PWD" }
これは current directory を考慮せずに node_modules を一定の条件で使えるので、とても便利です。
なので先に設定しておく
便利ですが、 current directory が欲しい場合もありますので、別個に環境変数を設定し、それを参照します。
"scripts": { "here": "echo $C_D" }
$ C_D=$PWD npm run build
これで実行したディレクトリを得られます。(しかし調べればビルトインで参照できる変数がありそうである)
おわり。
なぜ
watchify
いまは watchify
でコンパイル行為を行なっており、こういう build
を用意しています。
"scripts": { "build": "watchify -t babelify --extension=js ./index.js -o ./built.js -v" }
特定のディレクトリを指定して watchify
SPA を作成している時分にはこれでよかったのですが、今は自習として、共通のライブラリを使う別々の小さな js ファイルを作成するということをやっています。
いっぱいあるし、個々の build
は書きたくない。
このようにしておいて
"scripts": { "build": "watchify -t babelify --extension=js $C_D/index.js -o $C_D/built.js -v" }
$ C_D=$PWD npm run build
余分な js を書く必要がなくてハッピーでした。(脱 Gulp
中かつ、なんらかの他のランナーも使う予定がなかった)