簡體   English   中英

如何將Node和/或Ruby包含在NuGet軟件包中?

[英]How to include Node and/or Ruby as part of NuGet package?

用例

假設我想將Ruby Gem或Node.JS NPM軟件包轉換為NuGet軟件包,並且我不希望該軟件包的使用者(以及構建環境)必須安裝Node.JS或Ruby,我該怎么辦?去做?

尤其是

如何獲取/制作可移植的/可復制的Node.JS / Ruby版本,我可以將其復制到package文件夾中並從中調用?

我知道這是可行的

Web Essentials Visual Studio擴展以及某些NuGet程序包(例如node-jshint)似乎可以做到這一點,但是我無法確切地說出我需要執行哪些步驟。

有什么想法/指南嗎?

node-jshint軟件包不是一個很好的例子,因為它的結構有些偏離,因此無法獲得所有這些好處,但是您需要做三件事來將外部工具集成到Package Manager Console中:

  • 將相關工具添加到NuGet軟件包的tools文件夾中。 因此,不將用戶需要的node.exe和其他腳本視為庫或內容。 如何使工具可以bin部署取決於堆棧,但這是一篇博客文章,詳細介紹了Ruby,但實際上是從rubyinstaller.org下載並解壓縮7zip存檔 ...

  • 名為tools\\init.ps1腳本-該腳本在其他Powershell腳本之前運行,並且在VS中打開解決方案時都會運行。 它在標頭中需要此行是因為約定(有關這些腳本的更多詳細信息,請參見此處

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方法使用戶可以使用它-默認情況下功能不可見...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM