1. ホーム
  2. node.js

[解決済み] npmスクリプトの作業ディレクトリを変更する

2023-02-05 05:58:30

質問

Q: npmがスクリプトを実行する際のコンテキストを変更することは可能でしょうか?

私がしたいのは以下のようなことです。

"scripts": {
   "test": "gulp mocha",
   "pre-install": "./deps/2.7/cpython/configure --prefix=$(pwd)/build --exec-prefix=$(pwd)/build && make -C deps/2.7/cpython && make -C deps/2.7/cpython install",
   "install": "node-gyp rebuild"
},

明らかに cd deps/2.7/cpython/ && ./configure はUNIXのようなシステムでは動作しますが、Windowsでは動作しません。

なぜか。 問題の根本は configure コマンドは、それが呼び出されたディレクトリにファイルを出力します。しかし、そのファイルは makemake install で、レポのディレクトリにあるファイルを探します。

この場合、私は Makefile を変更することはできません。Pythonのビルドプロセスは当然ながら複雑だからです。

代替案です。 代替案としては、おそらくいくつかの install.js を書き、node の OS に依存しない API と、いくつかの child_process.exec() を使うことができます。しかし npm を残さないことは本当に素晴らしいことです。

どのように解決するのですか?

npm を実行するだけです。 cd dir && command -args のみで、Windowsでも動作します。

を使用するように変更されました。 node の spawn 機能を使うように変更しました。 https://github.com/npm/npm/pull/10958 で提案されましたが、上記の解決策により却下されました。