2014-02-16 82 views
0

使用情況如何包含Node和/或Ruby作爲NuGet包的一部分?

比方說,我想一個Ruby寶石或Node.js的NPM包轉換成NuGet包,我不希望包的消費者(和構建環境)有要安裝Node.JS或Ruby,我該怎麼做?

特別

如何獲取/使Node.js的/紅寶石的便攜式/ X - 複製 - 部署版本,我可以在包文件夾只需複製並調用它?

我知道它是可行的

Web Essentials的Visual Studio擴展,有的包的NuGet,如node-jshint似乎做到這一點,但我不能告訴什麼步驟我需要爲做。

任何想法/指南?

+0

可以鏈接到你見過的NuGet包野生這樣做? –

+0

這一個似乎https://www.nuget.org/packages/node-jshint和Web Essentials做它我認爲。 – Meligy

回答

0

node-jshint包不是一個很好的例子,因爲它的結構是有點關閉,因此它並沒有得到所有這些好處,但有你需要做的外部工具集成到程序包管理器控制檯的三件事:

  • 添加相關的工具到了NuGet包你tools文件夾。因此,用戶需要的node.exe和其他腳本不被視爲庫或內容。如何使這些工具是濱部署將取決於從堆棧堆棧,但這裏有一個blog post going into details for Ruby但它本質download and unpack the 7zip archive from rubyinstaller.org ...

  • 腳本命名tools\init.ps1 - 這在其他PowerShell腳本運行之前,每當解決的辦法是在VS中打開。它需要這條線在包頭,因爲公約(這些腳本here更多細節)

param($installPath, $toolsPath, $package, $project)

  • ,用戶可以運行功能。這是一個簡單的例子:

    param($installPath, $toolsPath, $package, $project) 
    
    function Enable-DoSomething { 
        [CmdletBinding()] 
        param (
         [Parameter(Position=0, ValueFromPipeLine=$true)] 
         [string] $ProjectName 
        ) 
    
        # do something cool here like invoke node.exe from under the tools dir 
        Write-Host "Hello $ProjectName from $toolsPath" 
    } 
    
    Export-ModuleMember Enable-DoSomething 
    

Export-ModuleMember方法使得它提供給用戶 - 默認功能是不可見的...

+0

我寫了這個問題後,我覺得NuGet包是不夠的,雖然我無法證明它。我並不擔心調用工具或在包控制檯中啓用它們(這個想法是,NuGet包可以調用代碼,Process.Start()是NPM/gem包),問題是如何製作便攜式運行時文件夾使用。 – Meligy

+0

你知道,如何使一個可移植的Node.JS/Ruby運行時文件夾包含在Tools Nuget包文件夾中。 – Meligy

+1

對於ruby,您可以從http://rubyinstaller.org/downloads/解壓縮7zip壓縮文件,並將該文件夾添加到您的$ PATH中。這裏有一個很好的解釋:http:// lostechies。com/derickbailey/2010/03/23/running-ruby-and-rake-and-albacore-without-installing-them/ –

相關問題