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
의 원인은 python repo 의 명령이 파일이 호출 된 디렉토리에 파일을 출력한다는 것입니다. 파일은 그러나 빌드 관련이 make
와 make install
어느 REPO의 디렉토리에있는 파일을 찾아보십시오.
이 경우 Makefile
Python의 빌드 프로세스가 복잡하기 때문에 변경할 수 없습니다 .
대안 : 대안은 아마도 일부를 작성 install.js
하고 노드의 OS 독립적 API와 일부 child_process.exec()
를 사용하는 것입니다. 그러나 npm 을 떠나지 않는 것이 정말 좋을 것입니다.
답변
npm
만 허용하며 cd dir && command -args
Windows에서도 실행됩니다.
node
PR https://github.com/npm/npm/pull/10958 에서의 스폰 기능 을 사용하도록 변경 되었지만 위의 솔루션으로 인해 거부되었습니다.
답변
위에서 언급 한대로 :
npm은 아마도
var spawn = require('child_process').spawn
다음과 같은 옵션을 설정할 수 있습니다.
{cwd: pwd + 'somepath'}
그러나 그것을 노출하지 않습니다.
나는
install.js
대략적으로 그것을 수행하는 상당히 큰으로 해결했으며package.json
위와 같이 호출됩니다 . API는child_process
디버깅하기 어려운 오류를 많이 발생시키기 때문에 처리하기가 쉽지 않습니다. 시간이 좀 걸렸지 만 지금은 행복합니다.