yarn run 和 npm start 有啥区别?
Posted
技术标签:
【中文标题】yarn run 和 npm start 有啥区别?【英文标题】:What is the difference between yarn run and npm start?yarn run 和 npm start 有什么区别? 【发布时间】:2017-03-29 21:24:40 【问题描述】:yarn run
是否打算等同于 npm start
?
【问题讨论】:
为了让事情更混乱,yarn start == yarn run start 【参考方案1】:似乎yarn run start
相当于npm start
,它在package.json
中script
字段的start
字段内运行脚本
【讨论】:
yarn start
还运行 package.json 中的 start
脚本。【参考方案2】:
要理解的几件事:
npm:运行命令强制执行用户定义的脚本。yarn:运行命令非强制 执行用户定义的脚本。
start command 不是用户定义的脚本名称,因此您可能不需要指定 run command 来执行它。
因此,以下所有命令的工作方式都相似!
npm start
npm run start
yarn start
yarn run start
如果您有一个名为 'app' 的用户定义脚本:
npm app
(不起作用!)
npm run app
(有效!)
yarn app
(有效!)
yarn run app
(有效!)
注意:如果没有明确定义,默认情况下 start 运行 node server.js。
【讨论】:
您指定的默认行为具有误导性。 文档中也提到了默认行为,类似docs.npmjs.com/cli/start.html run 对于yarn run
不是必需的,除非脚本的名称与 yarn 子命令相同(例如,“run”需要 yarn run run
,这很奇怪,可能想要避免)。【参考方案3】:
npm start
是npm run start
的快捷方式
现在就来自package.json
的运行脚本而言,所有这些都是等价的:
npm run start
npm start
yarn run start
yarn start
npm run myscript
npm myscript
这是一个错误yarn run myscript
yarn myscript
这是因为run
不是yarn
的强制命令,但它是 npm
的强制命令。
奖金
npr start
- 好的npr myscript
- 好的
将 this 文件放在PATH
中的某处,例如。 %localappdata%\Programs\Git\cmd
npr.cmd
npm run %*
【讨论】:
以上是关于yarn run 和 npm start 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
yarn.lock 和 npm 的 shrinkwrap 有啥区别?
yarn.lock 和 npm 的 package-lock 有啥区别?