node.js - 在package.json中运行另一个yarn/npm任务,而不指定yarn或npm

标签 node.js npm yarnpkg package.json

我的 package.json 中有一个任务“deploy”,它需要首先调用“build”。我已经这样指定了:

"deploy": "yarn run build; ./deploy.sh",

问题在于,这将 yarn 硬编码为包管理器。因此,如果有人不使用yarn,它就不起作用。切换到 npm 会导致类似的问题。

在不选择 npmyarn 的情况下实现这一目标的好方法是什么?

最佳答案

一种简单的方法是使用 npm-run-all包,其文档说明:

Yarn Compatibility

If 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/

相关文章:

python - 在节点 js (node-gyp) 中使用 npm install 安装 argon2 时出错

npm - 如何从相对版本中获取确切的最新 npm 版本?

gitlab-ci - Blackduck Synopsys Yarn Detector 找不到项目版本名称

在 nixos 上使用 yarn 运行时 elm-make 无法编译

javascript - 使用 Apache 的 mod_proxy_wstunnel 连接到 PHP,而不使用第 3 方 API

node.js - Yarn install workspace 中单个包的生产依赖

npm - 'EPERM : operation not permitted' error when building Nuxt app

yarnpkg - "private"标志 yarn 初始化是什么?

javascript - mongoose 库需要 json,但无法从 Nodejs 生成动态的

node.js - 如何扩展 flow-bin 以支持新的 Node.js 方法?