你可以为你的组织托管私人存储库以便与npm一起使用吗?

ada*_*dam 207 repository node.js npm

Npm听起来像是一个在组织内使用的好平台,如果有私人回购可能会很奇怪,比如Nexus/Maven.Google上没有任何内容:(

ebd*_*bdr 193

https://github.com/isaacs/npmjs.org/:在npm版本v1.0.26中,您可以将私有git存储库URL指定为package.json文件中的依赖项.我没有用它但会喜欢反馈.这是你需要做的:

{
    "name": "my-app",
    "dependencies": {
        "private-repo": "git+ssh://git@yourgitserver.com:my-app.git#v0.0.1",
    }
}
Run Code Online (Sandbox Code Playgroud)

以下帖子讨论了这个:Debuggable:私有npm模块

  • 这是一个很棒的功能,但我接受了pvorb的,因为我在询问是否有一个完整的NPM回购,一个内部的Maven回购 (3认同)
  • 注意:NPM目前不支持使用这些git URL指定版本范围(例如1.2.x或^ 1.2.3).https://github.com/npm/npm/issues/3328 (2认同)

pvo*_*orb 97

我认为没有一种简单的方法可以做到这一点.

一看故宫文献告诉我们,这是可能的:

我可以运行自己的私人注册表吗?

是!

最简单的方法是复制沙发数据库,​​并使用相同(或类似)的设计文档来实现API.

如果从官方的CouchDB建立连续复制,然后设置内部的CouchDB作为注册表配置,那么你就可以读取任何发布的数据包,除了你的私人的,并且默认情况下才会在内部发布.如果您想要发布一个供全世界查看的包,您可以简单地覆盖该--registry命令的配置.

还有一个关于如何在时钟博客中创建私有npm存储库的优秀教程.

编辑(2017-02-26):

不是很新,但现在有计划在NPM上托管私人包裹.

多年来,NPM已成为许多非Node.js公司的一个因素,通过建立在NPM上的庞大前端生态系统.如果您的公司已经在内部运行Sonatype Nexus来托管Java项目,您也可以使用它来托管内部NPM软件包.

其他选项包括JFrog Artifactory和Inedo ProGet,但我没有使用过.


小智 91

有一个易于使用的npm包来做到这一点. https://www.npmjs.org/package/sinopia

简而言之,Sinopia是一个私有/缓存npm存储库服务器,您可以使用零配置进行设置.

Sinopia可用于:

  • 发布自己的私有包而不将其暴露给公众
  • 仅缓存使用的公共包(不需要复制整个公共注册表)
  • 使用已在内部生成的修改版本覆盖公共包.

  • 看看**verdaccio**.它是一个积极维护它的分支:https://github.com/verdaccio/verdaccio (40认同)
  • Sinopia似乎不再维持.截至今天(2016年3月7日),上次提交已超过8个月.它看起来很棒并且效果很好但是在可维护性方面要小心. (13认同)

kub*_*b1x 34

Verdaccio是我正在寻找的,它应该得到它自己的答案;)它是一个积极维护的Sinopia分支(在这里高度赞成的答案).它是一个npm注册表作为npm包,可以找到

这里:https://github.com/verdaccio/verdaccio,
这里:https://www.verdaccio.org,
这里:pnpm i -g verdaccio或者
这里:docker run -it --rm --detach --name verdaccio -p 4873:4873 verdaccio/verdaccio

  • 这个!谢谢-> docker run -it --rm --detach --name verdaccio -p 4873:4873 verdaccio / verdaccio (2认同)

bar*_*sny 29

4月14日(2015年),推出了npm私人模块.

当您支付私人模块时,您可以:

  • 根据需要托管尽可能多的私有包
  • 为这些包提供对任何其他付费用户的读访问权限或读写访问权限
  • 安装并使用其他付费用户为您提供读取权限的任何软件包
  • 协作其他付费用户授予您写入权限的任何软件包

当然,它不是免费的 - 目前每个用户每月7美元.

它仍然是一项非常新的服务.例如,缺少对组织帐户的支持(截至2015年6月):

目前,私有软件包仅适用于个人用户,但很快就会支持组织帐户.在此期间随意为您的组织创建用户,我们可以在支持时将其升级到组织.

虽然不完美,但它是维护私有软件包的官方 npm解决方案,这本身就值得一提.

UPDATE

Npm私人套餐现已推出,并为个人用户和组织提供计划:

  • 无限数量的公共和私人套餐
  • $ 7 /月/开发商
  • 包含一个范围名称,基于组织名称
  • 发布和控制对@ org-name/foo的访问

(免责声明:甚至没有与npm,Inc.以任何方式远程联系)


Abe*_*tur 19

存储库管理器支持私有npm注册表:

  • 事实上,Sonatype Nexus 3.0的免费版本支持npm repos(以及bower和docker repos). (12认同)
  • 只有付费版本支持npm存储库; 免费版本没有. (4认同)

Pra*_*evu 9

我想这个帖子需要更新.如果您查看任何可用的npm注册表,它们非常繁重,需要couchdb.Gemfurry和其他人需要你从公共回购中分离出来.一些npm像shadow-npm 没有最近的提交.

然后,我们找到了Reggie.它有一个很好的提交活动,非常容易安装和使用,并有很好的社区支持.它非常轻巧,你不必处理couchdb等.

  • Reggie自2014年10月以来未更新.:/ (7认同)

Ehe*_*Tov 8

如果我不理解你的问题,请原谅我,但这是我的答案:

您可以创建一个私有的npm模块,并使用npm的普通命令来安装它.大多数node.js用户使用git作为他们的存储库,但您可以使用任何存储库为您工作.

  1. 在您的项目中,您将需要NPM包的骨架.大多数节点模块都有git存储库,您可以在其中查看它们如何与NPM集成(package.json文件,我相信是其中的一部分,NPM的网站向您展示如何制作npm包)
  2. 使用类似于Make的东西来制作和tarball你的包可以从互联网或你的网络上下载,以便进行npm安装下载.
  3. 制作完包装后,再使用

    npm install*tarball_url*

  • 你没有得到他的问题,但答案对我来说非常有用!:) (5认同)

小智 7

这是我所知道的最简单的方法 - 使用Gemfury私有npm注册表在云中托管它.

它是免费的,您可以使用您的Github帐户登录.与设置自己的数据库相比,它可以节省大量时间.


Xin*_*eng 6

我们使用的是Sonatype Nexus,版本是Nexus Repository ManagerOSS 3.6.1-02。而且我确定它支持NPM专用存储库并缓存了程序包。

在此处输入图片说明


Dan*_*try 5

派对有点晚了,但NodeJS(截至11月14日我猜)支持企业NPM存储库 - 你可以在他们的官方网站上找到更多信息.

从粗略的一瞥看,npmE似乎允许NPM存储库的直接镜像 - 也就是说,如果它在内部的NPM存储库中找不到它,它将在真实的 NPM存储库中查找包.似乎非常有用!

npm Enterprise是一个内部部署解决方案,用于在组织内安全地共享和分发JavaScript模块,包括维护npm的团队和公共npm注册表.它专为需要的团队而设计:

简单的内部共享私有模块更好地控制开发和部署工作流更严格的安全性围绕部署开源模块符合法律要求来托管代码本地npmE是私有npm

npmE是一个npm注册表,它与您已经使用的标准npm客户端一起使用,但提供了现在热衷于采用节点的大型组织所需的功能.它由npm,Inc.,npm开源项目的赞助商和公共npm注册表的主机构建.

不幸的是,它不是免费的.你可以试用,但它是商业软件.这对于独奏开发者来说并不是那么好,但如果你是一名独唱开发者,你就有GitHub :-)