elj*_*efe 70 makefile node.js npm package.json
问:是否可以更改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"
},
Run Code Online (Sandbox Code Playgroud)
显然cd deps/2.7/cpython/ && ./configure
可以在类UNIX系统上工作,但不能在Windows上工作.
原因:问题的根源是,configure
python repo 的命令将文件输出到调用它的目录中.然而,这些文件与repo的目录中的文件相关make
并且make install
查找这些文件.
在这种情况下,我无法改变,Makefile
因为Python的构建过程是可以理解的复杂.
替代方案:替代方案可能是编写一些install.js
并使用节点的OS独立API和一些child_process.exec()
,我可能会这样做.但是,不离开npm会非常好.
elj*_*efe 73
npm
只允许这样做cd dir && command -args
,也可以在Windows上运行.
由于上述解决方案,node
已在PR https://github.com/npm/npm/pull/10958中更改了使用的spawn功能,但被拒绝了.
如上所述:
npm可能正在使用
var spawn = require('child_process').spawn
Run Code Online (Sandbox Code Playgroud)
这将允许您设置如下选项:
{cwd: pwd + 'somepath'}
Run Code Online (Sandbox Code Playgroud)
但不是暴露它.
我用一个相当大的解决了它,
install.js
大致相当于它,它从package.json
上面调用.但是,APIchild_process
并不容易处理,因为它会导致很多难以调试的错误.花了我一些时间,但我现在很高兴.
归档时间: |
|
查看次数: |
41807 次 |
最近记录: |