【问题标题】:npm: disable postinstall script for packagenpm:禁用包的安装后脚本
【发布时间】:2014-06-23 16:38:50
【问题描述】:

安装包时是否存在任何 npm 选项来禁用安装后脚本?或者重写 package.json 中的任何字段?

【问题讨论】:

标签: node.js npm


【解决方案1】:

不能只禁用postinstall 脚本。但是,您可以使用以下命令禁用所有脚本:

$ npm install --ignore-scripts

正如在 cmets 中提到的 delbertooo,这也会禁用依赖项的脚本。

【讨论】:

  • 谢谢。这正是我所需要的。我在哪里可以找到这样的选项?这在“npm help install”、“npm help config”和“npm help scripts”中没有描述。
  • 小心!选项 --ignore-scripts 禁用所有脚本 - 甚至是您的依赖项。如果您的依赖项需要运行脚本,例如安装一些它们可能会破坏/不完整的二进制文件。
  • 那么有没有一种技术可以安装 node_modules(及其所有脚本)但只忽略主包的脚本?
  • 不仅如此,--ignore-scripts,或相关的配置选项(我在全局范围内设置)也意味着npm run start 将默默地不做任何事情并报告成功。惊奇。
【解决方案2】:

要为您自己的库执行此操作,我建议使用以下简单方法:

#!/usr/bin/env bash

## this is your postinstall.sh script:

set -e;

if [ "$your_pkg_skip_postinstall" == "yes" ]; then
  echo "skipping your package's postinstall routine.";
  exit 0;
fi

然后使用以下命令进行 npm 安装:

your_pkg_skip_postinstall="yes" npm install

【讨论】:

  • 谢谢!如果您只是尝试禁用自己的脚本而不是所有依赖项中的所有脚本,这将非常有用。
  • @BrianNeisler 非常欢迎你,帮助别人总是感觉很好。顺便说一句,我认为对于大多数用例来说,双括号 [[ ]] 可能比单括号更好,但不确定。
【解决方案3】:

您也可以在 npm 配置文件中启用设置。

npm config set ignore-scripts true

注意:这将禁用所有 NPM 包的脚本。

【讨论】:

  • 这应该是答案。见 npm 博文:blog.npmjs.org/post/141702881055/…
  • 请注意,它还会禁用手动执行 npm run … 的功能 - 它只会什么都不做,不会发出任何警告。
  • 这对纱线也有效吗?
【解决方案4】:

我想为我的项目禁用安装后脚本,但希望我的项目依赖项的所有脚本在我执行npm install 时运行。 这就是我最终要做的。

  1. 创建脚本./scripts/skip.js
if (process.env.SKIP_BUILD) {
    process.exit(0);
} else {
    process.exit(1);
}
  1. 在你的 package.json 文件中
 "scripts": {
  ...
  "postinstall": "node ./scripts/skip.js || npm run build",
  ...
 }

现在只需设置环境变量 SKIP_BUILD=1 以防止您的包构建并且您的依赖项将正常构建

SKIP_BUILD=1 npm install

【讨论】:

  • 不错!我可能只是做“postinstall”:“node process.env.RUN_POSTINSTALL && npm run build”
【解决方案5】:

如果你使用 NPM>=7,你也可以暂时移除 postinstall 脚本:

npm set-script postinstall ""
npm install

来源: https://docs.npmjs.com/cli/v7/commands/npm-set-script/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-01
    • 2020-09-11
    • 1970-01-01
    • 2013-01-18
    • 2013-01-10
    • 2023-03-31
    • 2018-03-15
    • 2020-12-16
    相关资源
    最近更新 更多