Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save kako-jun/c878eba1b124f1694296552a4ac2be35 to your computer and use it in GitHub Desktop.
Save kako-jun/c878eba1b124f1694296552a4ac2be35 to your computer and use it in GitHub Desktop.
Node.jsで、execSyncの中でだけカレントディレクトリを変更する

kako-junです

好きなものは 高台から発見してのマルミサクイボコンボです


Gistを一括ダウンロードするバックアップツール gist-exporter

を作ってるんだけど

イイ感じに動いてきたところ


1つ

ゲゲッ

って詰まるところがあったよ


ダウンロードには git clone を使うけど

gist-exporterの実行ファイルの場所にcloneしてきたら汚いので

どこのディレクトリにcloneするかを 引数で指定できるよーにしたんよ


そしたら git clone する前に

gist-exporterのスクリプト内で カレントディレクトリを変更しとかなきゃいけないワケだけど

その方法が すぐに見つからんかったんよ


Rubyなら Dir.chdir

Goなら os.Chdir

なのに Node.jsだと

ググって見つかるのは カレントディレクトリの取得ばかり


やっと見つけて解決

https://stackoverflow.com/questions/19803748/change-working-directory-in-my-current-shell-context-when-running-node-script

process.chdir


これでカレントディレクトリを変えると

path.resolve の計算にも影響あるみたいで

ループで回すと どんどんパスが深くなってったの

path.resolve の前に、毎回 process.chdir(__dirname) すれば解決


このスコープの中でだけ カレントディレクトリを変えて

みたいな指定があればなー


無いみたいだったので

その用途に使える Go製のコマンドラインツールも作ったよ

そのツールを execSync で呼び出すことで 擬似的に

execSync のたびに別カレントディレクトリ

を実現できたにゃー


そのツールもpublic repositoryで公開するの

cdand って名付けた

Node.jsがマルチプラットフォーム

Goもマルチプラットフォームだから

呼べない環境が無いわけで


すごく馴染むわ

ウッチャンに対するナンチャン ってヤツ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment