F: Ist es möglich, den Kontext zu ändern, in dem npm Skripte ausführt?
Was ich möchte, ist Folgendes:
"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"
},
Offensichtlich cd deps/2.7/cpython/ && ./configurefunktionieren würde auf UNIX-ähnlichen Systemen , aber nicht an den Fenstern.
Warum: Die Wurzel des Problems ist, dass der configureBefehl des Python-Repos Dateien in das Verzeichnis ausgibt, in dem es aufgerufen wird. Die Dateien sind jedoch für den Build relevant makeund make installsuchen nach den Dateien im Verzeichnis des Repos.
In diesem Fall kann ich das nicht ändern, Makefileda der Erstellungsprozess von Python verständlicherweise komplex ist.
Alternative: Die Alternative besteht wahrscheinlich darin, einige zu schreiben install.jsund die betriebssystemunabhängige API des Knotens zu verwenden, und einige child_process.exec(), was ich wahrscheinlich tun werde. Es wäre jedoch sehr schön , npm nicht zu verlassen .