我的 package.json 中有一个任务“deploy”,它需要首先调用“build”。我已经这样指定了:
"deploy": "yarn run build; ./deploy.sh",
问题在于,这将 yarn
硬编码为包管理器。因此,如果有人不使用yarn
,它就不起作用。切换到 npm 会导致类似的问题。
在不选择 npm
或 yarn
的情况下实现这一目标的好方法是什么?
最佳答案
一种简单的方法是使用 npm-run-all包,其文档说明:
Yarn CompatibilityIf a script is invoked with Yarn, npm-run-all will correctly use Yarn to execute the plan's child scripts.
所以你可以这样做:
"predeploy": "run-s build",
"deploy": "./deploy.sh",
并且predeploy
步骤将使用npm或yarn,具体取决于您调用deploy
任务的方式。
我认为让 package.json 中的运行保持与包管理器无关是件好事,这样它们就不会与特定的包管理器绑定(bind),但在项目中,同意使用单个包管理器可能是谨慎的做法包管理器,这样您就不会处理冲突的锁定文件。
关于node.js - 在package.json中运行另一个yarn/npm任务,而不指定yarn或npm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60461070/