[node.js] npm 스크립트의 작업 디렉토리 변경

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/ && ./configureUNIX와 유사한 시스템에서는 작동하지만 Windows에서는 작동하지 않습니다.

이유 : 문제 configure의 원인은 python repo 의 명령이 파일이 호출 된 디렉토리에 파일을 출력한다는 것입니다. 파일은 그러나 빌드 관련이 makemake install어느 REPO의 디렉토리에있는 파일을 찾아보십시오.

이 경우 MakefilePython의 빌드 프로세스가 복잡하기 때문에 변경할 수 없습니다 .

대안 : 대안은 아마도 일부를 작성 install.js하고 노드의 OS 독립적 API와 일부 child_process.exec()를 사용하는 것입니다. 그러나 npm 을 떠나지 않는 것이 정말 좋을 것입니다.



답변

npm만 허용하며 cd dir && command -argsWindows에서도 실행됩니다.

nodePR https://github.com/npm/npm/pull/10958 에서의 스폰 기능 을 사용하도록 변경 되었지만 위의 솔루션으로 인해 거부되었습니다.


답변

위에서 언급 한대로 :

npm은 아마도

var spawn = require('child_process').spawn

다음과 같은 옵션을 설정할 수 있습니다.

    {cwd: pwd + 'somepath'}

그러나 그것을 노출하지 않습니다.

나는 install.js대략적으로 그것을 수행하는 상당히 큰으로 해결했으며 package.json위와 같이 호출됩니다 . API는 child_process디버깅하기 어려운 오류를 많이 발생시키기 때문에 처리하기가 쉽지 않습니다. 시간이 좀 걸렸지 만 지금은 행복합니다.


답변