强制安装Yarn而不是节点模块的NPM安装?

sg2wtvxw  于 2022-10-12  发布在  Node.js
关注(0)|答案(1)|浏览(236)

我想强制使用yarn install而不是npm install。我想在npm install中引发错误。在package.json中我应该做什么?

f87krz0w

f87krz0w1#

更新:Alexander's answer是更好的解决方案,使用的技术与我在这里介绍的相同。我把我的回答巧妙地留给子孙后代。我回答的初衷是要说明您可以执行一个应该在所有平台上运行的小节点脚本。

在你的预安装脚本中,你可以运行一个应该可以在所有平台上运行的迷你节点脚本,而像pgrep(以及其他常见的*nix命令和操作符)这样的东西在Windows 10被广泛采用之前不会在Windows上运行。

我在Node v4.7.0(NPM v2.15.11)和Node v7.2.1(NPM v3.10.10)上测试了以下脚本。我想它对介于两者之间的所有东西都有效。它的工作方式是检查当前运行的进程上的环境变量--npm_execpath是当前运行的“npm”脚本的路径。对于Yarn,它应该指向/path/to/yarn/on/your/machine/yarn.js

"scripts": {
    "preinstall": "node -e "if(process.env.npm_execpath.indexOf('yarn') === -1) throw new Error('You must use Yarn to install, not NPM')""
}

您可以在此处阅读有关NPM脚本的更多信息:https://docs.npmjs.com/misc/scripts

至于npm_execpath环境变量,虽然没有文档记录,但我怀疑它是否会更改。它已经在npm的多个主要版本中出现,但它并没有真正通过*“这个更好的名字”*测试。

相关问题