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上运行.

Why:问题的根源在于,python repo的configure命令将文件输出到调用它的目录中.然而,这些文件与makemake install的构建相关,它们在repo目录中查找文件.

在这种情况下,我无法更改Makefile,因为Python的构建过程是可以理解的复杂.

Alternative:替代方案可能是编写大约install.js个,并使用node的独立于操作系统的API和一些child_process.exec(),我可能会这样做.然而,不离开npm号真的很好.

推荐答案

npm只允许执行cd dir && command -args,这也将在Windows上运行.

在PR https://github.com/npm/npm/pull/10958中对node的繁殖功能进行了更改,但由于上述解决方案被拒绝.

Node.js相关问答推荐

MongoServelSelection错误:服务器 Select 在30000 ms后超时

MongoDB:更新批量操作中许多不能正常工作的内容

无法使用NPM安装REDUX和DATEPPICER

如何在Sequelize with Postgres中将m:n关联表ID从整数迁移到UUID?

使用参考中断Mongoose模型-Node.js

Sequelize、postgres和posgis:在n°;公里

Playwright - 无法在 img 标签中使用 file:// 访问本地文件

Axios TypeError:将循环 struct 转换为 JSON

GitLab 依赖扫描需要源代码中的 package-lock.json 才能执行

yarn 安装失败,因为 node-gyp 正在寻找过时的 node 版本标头

AJAX 和 Node JS:在我的服务器中接收空数据

在本地运行 Cloud Functions 会出现错误functions.config() 不可用

在 Mongoose 中创建外键关系

Node.js 支持 =>(箭头函数)

如何使用 gulp-uglify 缩小 ES6 函数?

如何将子集合添加到 Firestore 中的文档?

从 React(同构应用程序)进行 API 调用时出现Access-Control-Allow-Origin问题

如何判断MongoDB本机nodejs驱动程序中是否存在集合?

未在 Windows 8.1 上构建的 node 包 - 缺少 Microsoft.Cpp.Default.props

为什么 Node.js 没有原生 DOM?