更改npm脚本的工作目录
问:是否可以更改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上工作。 
  为什么:问题的根源在于,python repo的configure命令将文件输出到调用它的目录中。 然而,这些文件与make和make install有关,它们查找repo目录中的文件。 
 在这种情况下,我不能更改Makefile因为Python的构build过程非常复杂。 
  另一种方法:可能是写一些install.js并使用节点的操作系统无关的API和一些child_process.exec() ,我可能会这样做。 但是,不离开npm会很好。 
  npm只允许执行cd dir && command -args ,它也可以在Windows上运行。 
  PR https://github.com/npm/npm/pull/10958使用了;node的产生function,但由于上述解决scheme,被拒绝了。 
如上所述:
npm可能正在使用
 var spawn = require('child_process').spawn 
这将允许您设置选项,如:
  {cwd: pwd + 'somepath'} 
但没有暴露它。
我用一个相当大的
install.js解决了这个问题,它的function大致如上所述,并从package.json调用。 然而,child_process的API并不容易处理,因为它会抛出大量的难以debugging的错误。 花了我一些时间,但我现在很开心。