为什么 npm 运行 babel-node 可以来自脚本而不是 npm exec?

Why can npm run babel-node from script but not as npm exec?

在 lerna monorepo 中,babel 仅安装在根包级别。 当 运行ning npm exec babel-node from root/packages/packageA 时,失败并显示:

npm ERR! could not determine executable to run

从同一目录,运行ning npm run test,其中测试刚刚设置为 babel-node 打开 babel-cli。

即为什么当 运行 作为脚本时 npm 可以解析到根 node_modules' bin 的路径,但当直接从终端 运行 时不能?

编辑:

https://github.com/bishonen/newproject/tree/master/packages/someapp

当 运行ning npm 运行 test-babel 时,它可以从包含 package.json 的 3 个目录中的任何一个运行。 当 运行ning npm exec babel-node 时,它​​只会从根目录运行。

工作区对 npm 运行 和 npm exec 的支持将在 npm@7.7.0 或更高版本中得到支持。查看详情here

您可以使用功能更新npm

npm i -g npm@7

我试过了,它在你的代码中有效 https://github.com/bishonen/newproject/tree/master/packages/someapp

我用的是npmv7.12.0