我的 package.json 中有以下行
"scripts": {
"start": "cross-env NODE_ENV=development node index.js"
}
我可以看到“yarn start”命令运行良好,但是当我运行时 直接在终端中执行“cross-env NODE_ENV=development node index.js”命令,出现以下错误:
zsh: command not found: cross-env
如果终端中没有注册cross-env,“yarn start”命令如何工作?
https://docs.npmjs.com/cli/v7/configuring-npm/folders#executables
在本地模式下,可执行文件会链接到 ./node_modules/.bin 中,以便通过 npm 运行的脚本可以使用它们。 (例如,当您运行 npm test 时,测试运行程序将位于路径中。)
这只是一个让事情变得更容易的功能。这也意味着,如果您正在与多人合作的项目,您只需要
npm install --save
一个模块——您不必担心项目中的每个人都在全局手动安装它。如果您想在命令行上自己运行它,您可以:
./node_modules/.bin/cross-env
npx cross-env
所以,我看到人们已经通知您
yarn
从本地项目的cross-env
目录中提取了node_modules
。
除了全局安装
cross-env
(npm install --global cross-env
)以便您可以在终端中运行cross-env NODE_ENV=development node index.js
之外,您还可以使用npx
来运行它:
npx cross-env NODE_ENV=development node index.js
如何运作?npx
当您使用时,它首先检查所需的包是否已经存在 本地安装在当前项目的npx
文件夹中。 如果找不到包,node_modules
从npm下载包 注册表并将其临时存储在特定于npx
的缓存文件夹中。npx