【问题标题】:How to run a script before installing any npm module?如何在安装任何 npm 模块之前运行脚本?
【发布时间】:2018-03-25 07:43:35
【问题描述】:

我正在尝试为我的项目测试 npm 包,这样每次我尝试安装模块时,即运行 npm install <module> 时,必须在安装该模块之前运行一个脚本。预安装脚本仅适用于npm install,不适用于npm install <module>

例如:- 如果运行 npm install request 。它应该运行一个脚本,在安装模块之前向我显示请求模块的所有依赖项。提前致谢。

【问题讨论】:

  • 您是否询问何时(a)安装了您的模块(b)当 npm install 在与您的 package.json 相同的目录中运行时安装了任何模块或(c)任何模块是否在您的计算机上安装了系统范围?
  • (b) 当npm install <module> 与 package.json 在同一目录中运行时,会安装任何模块。只是为了让自己清楚 -> 安装一个包/模块你运行命令 npm install name_of_module 。我希望每次尝试从 npm 安装任何包/模块时都运行一个脚本。
  • 您可以在运行$ npm install <package_name> 之前运行$ npm view <package_name> dependencies(列出依赖项),如docs 中所述。还是必须在每次运行 $ npm view <package_name> 时自动调用 $ npm view <package_name> dependencies
  • 是的,它可以通过使用 npm 视图和 shell 脚本来完成,但我希望得到一个更好的解决方案,以便我的团队无论如何都可以遵循相同的约定,我创建了一个 shell 脚本并添加了脚本节点。现在它询问模块的名称,显示依赖项和版本,然后询问我是否要安装包。
  • 在这种情况下,您几乎已经通过here 回答了您的问题

标签: javascript node.js npm npm-scripts


【解决方案1】:

在 package.json 的脚本部分添加 "install": "[Your Command]"

例子:

{
    "name": "test",
    "version": "1.0.0",
    "description": "A sample test",
    "main": "index.js",
    "scripts": {
        "install": "echo Test"
    }
}

您还可以将pre hook"preinstall": "[Your Command]" 一起使用

【讨论】:

  • 我想我可能没有正确地提出我的问题。要安装软件包/模块,请运行命令 npm install name_of_module 。我希望每次尝试从 npm 安装任何包/模块时都运行一个脚本。安装前和安装后仅适用于npm install 命令,不适用于npm install <name_of_module> 命令。
  • 是的。 @yawningphantom 你得到什么了吗?
  • 对 npm 也很期待。尝试yarn 将在安装任何依赖项之前执行“预安装”脚本。
  • 答案适用于特定的包。但问题是对于您使用 npm 安装的任何软件包,都需要运行预安装脚本。 @yawningphantom 你有解决方案了吗?请分享您是如何解决这种情况的。我在同样的情况下苦苦挣扎。
  • @yarningphantom 这是您的问题的另一个 SO 页面:stackoverflow.com/questions/44362462 那里列出了一个解决方案(/node_modules/.hooks 文件夹中的 npm 挂钩脚本),但不幸的是它在 Windows 上不起作用据我所知。 :(
猜你喜欢
  • 2018-04-28
  • 2014-03-20
  • 1970-01-01
  • 2018-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-28
  • 1970-01-01
相关资源
最近更新 更多