npx 是否使用纱线?

Does npx use yarn?

今天我使用 CRA 创建了一个 reactjs 起始模板:

npx create-react-app my-app --template redux

这在我的项目中创建了两个文件:package.jsonyarn.lock

我很困惑为什么它在我 cd 在项目中和 运行 yarn start 之后起作用,即使我没有用 yarn create react-app my-app 启动该项目。

我有两个问题:

npx create-react-app 执行 create-react-app 二进制文件,create-react-app 使用 yarn 创建项目(如果安装了 yarn)。这就是为什么您可以看到 yarn.lock 以及 yarn-start 有效的原因。

Difference between npx create-react-app and yarn create react-app

他们都执行create-react-app二进制文件。 create-react-app 是决定是否要用 yarn 创建项目的人。要在 create-react-app 中使用 npm,请使用 --use-npm 标志(无论您使用 npxyarndirectly 执行 create-react-app,如果你想让它使用 npm ,你应该设置它。):

create-react-app my-project --use-npm

create-react-app 使用 yarn 进行设置(如果已安装)。

所以,如果你的系统中已经安装了 yarn,那么 npx create-react-app my-app --template reduxyarn create react-app my-app --template redux 会给你相同的 end-result.

并且它已经安装在您的系统中,这就是它生成 yarn.lock 而不是 package.lock 的原因。

yarn.lock is generated to keep the exact version of the installed packages.