繁体   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