在 devDependencies 中添加一些内容后,如何防止纱线运行 package.json 脚本?

vde*_*nne 7 package-managers npm yarnpkg

如果我运行yarn add <dependency> -Dyarn将安装依赖项并在我的package.json. 它将运行该"start"脚本。

起初我很生气,所以我"start"用其他东西重命名,但现在它会在命令"build"之后运行add......

有没有办法阻止yarn 之后运行任何命令add

这是我当前的脚本package.json

  "scripts": {
    "clean": "mkdir -p lib && rm -r lib",
    "build": "yarn clean && tsc",
    "test": "tsc && mocha -c",
    "test:watch": "tsc-then -- mocha -c"
  }
Run Code Online (Sandbox Code Playgroud)

注意:我为那些感兴趣的人提出了一个问题,因为它似乎特定于 watchy^0.9.0 @atom/watcher 问题 #20

Jay*_*wal 7

你有--ignore-scripts旗帜。

yarn add --help

--ignore-scripts       don't run lifecycle scripts
Run Code Online (Sandbox Code Playgroud)

yarn add --ignore-scripts -D package-name-1 ...

您可以通过 找到此内容以及更多内容yarn add --help

这是在 Yarn 1.7.0 上。


Spe*_*cer 2

自从我通过 NPM 切换到 Yarn 后,我也遇到了这个问题。看来,当给定一个未知命令时,yarn 会在 package.json 脚本中搜索具有相同名称的命令。

此外,由于某种原因,yarn在 npm 上指定的脚本之上运行了大量的附加生命周期脚本。

我有三个剧本;构建、更新和准备。将 build 重命名为 babel 会阻止其运行。将更新重命名为子模块可以阻止这种情况。并将准备重命名为 update-and transpile 阻止了它。

所以......暂时选择一个更复杂的名称,它就会停止运行。

我意识到这并不完全是您问题的答案,我将在他们的 GitHub 上提交一个有关禁用此功能的问题。