【问题标题】:Powershell script to run NPM install in multiple directories keeps launching multiple installs在多个目录中运行 NPM 安装的 Powershell 脚本不断启动多个安装
【发布时间】:2022-11-14 04:44:14
【问题描述】:

希望有人能帮助我。

我目前正在为自己创建一个项目模板,以便将来用于 Electron/React。

除了我的预安装脚本外,大部分都可以工作。

File Hierarchy:
-/root
--/package.json
--/react
---/package.json
--/electron
---/package.json

描述:已在每个目录中创建了一个 Powershell 脚本 Set-Path,并为 3 个包中的每一个运行 npm install。

问题:脚本陷入反复安装的循环中。

代码示例:

$root = Get-Location
$locations = $root,"$root/electron","$root/react"

Foreach ($location in $locations) {
    Set-Location $locations
    npm install
}

Set-Location $root

有谁知道如何防止这种情况?通过让 Powershell 等待 NPM install 在每个循环中运行,或者通过更好的方法一次在 3 个包上运行 npm install。

【问题讨论】:

  • 这是确切的脚本吗? Set-Location $location[s] 中有一个错字,会出错。它也只会运行 3 次,除非脚本中有其他内容或 npm 重新运行您的预安装

标签: powershell npm


【解决方案1】:

发现问题并想发布它以防任何人发现自己处于类似的困境中。

本质上,问题在于 NPM 包以及我如何设置它。

我已将调用此 PS 脚本的 NPM 脚本命名为“Preinstall”,并且由于此 PS 脚本还将为包执行 NPM 安装,这将导致无限循环。

解决方案:

  1. 从 PS 脚本中删除初始 NPM 安装,并让 NPM Install 通过 CLI 按预期调用预安装脚本。
  2. 将 NPM 脚本重命名为其他名称,但这不是最易于使用的解决方案。

    例如。 NPM 脚本

    "preinstall": "@powershell -NoProfile -ExecutionPolicy Unrestricted -Command ./preinstall.ps1"
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-01
    • 2023-03-31
    • 1970-01-01
    • 2010-10-03
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    相关资源
    最近更新 更多