npm run scripts で current directory を参照したい。

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 中かつ、なんらかの他のランナーも使う予定がなかった)