我们有一个本地的NuGet提要,其中包括一些JS仅内容包。
我想将这些软件包安装在普通的JS应用程序中(我在Brackets中编辑,根本不使用VS)。显然,像Bower这样的东西会更合适,但我不想维护两个包装送纸系统。

如果我执行nuget install MyPackage,它将下载并解压缩软件包,但不会将内容文件复制到子文件夹(实际上,它会将软件包下载到当前文件夹中)。

我可以使用nuget.exe实际复制内容吗,或者它必须是外部步骤?

最佳答案

好的,这是我为命令行更新所做的一些初步工作(如果您手动修改packages.config,则同样适用于安装)。

它具有以下限制:

  • 它期望您将软件包保留在nuget_packages文件夹中(类似于node_modules)。
  • 您需要在该文件夹中有一个packages.config文件。
  • 仅复制内容文件夹的内容,不运行安装等。
  • 如果您现有的文件/文件夹与内容文件/文件夹同名,它将被覆盖。

  • 码:

    Set-StrictMode -Version 2
    $ErrorActionPreference = 'Stop'
    
    $packagesDirectory = (Get-Item nuget_packages)
    
    $packagesDirectory.GetDirectories() | % {
        Write-Host "Deleting $_"
        Remove-Item $_.FullName -Recurse
    }
    Write-Host "Starting nuget.exe"
    Start-Process nuget -ArgumentList "install packages.config" -WorkingDirectory nuget_packages -NoNewWindow -Wait
    
    $packagesDirectory.GetDirectories() | % {
        $contentPath = Join-Path (Join-Path $packagesDirectory.Name $_) 'content'
        if (!(Test-Path $contentPath)) {
            return;
        }
    
        Get-ChildItem $contentPath -Exclude *.transform | % {
            $target = $_.Name
            if (Test-Path $target) {
                Write-Host "Deleting $target"
                Remove-Item $target -Recurse
            }
    
            Write-Host "Copying $(Join-Path $contentPath $_.Name) to $target"
            Copy-Item $_.FullName -Destination $target -Recurse
        }
    }
    

    09-04 05:53
    查看更多