你可以主持一个私人存储库供贵组织使用npm吗?

Npm听起来像是一个很好的组织内部使用的平台,好奇的是,如果一个私人回购是可能的,就像Nexus / Maven一样。 没有什么出现在谷歌:(

我不认为有一个简单的方法来做到这一点。

看npm文档告诉我们,这是可能的:

我可以运行我自己的私人registry吗?

是!

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

如果您从官方CouchDB设置连续复制,然后将您的内部CouchDB设置为registryconfiguration,那么您将能够读取任何发布的软件包,除了私有软件包以外,默认情况下只会在内部发布。 如果你想为整个世界发布一个包,你可以简单地覆盖该命令的--registryconfiguration。

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

编辑(2017-02-26):

不是很新,但是现在有计划在NPM上托pipe私人软件包。

多年来,NPM已经成为许多非Node.js公司的一个因素,通过build立在NPM上的巨大的前端生态系统。 如果您的公司已经在运行Sonatype Nexus以便在内部托pipeJava项目,则还可以将其用于托pipe内部NPM软件包。

其他选项包括JFrog Artifactory和Inedo ProGet ,但我没有使用这些。

https://github.com/isaacs/npmjs.org/ :在npm版本v1.0.26中,你可以在你的package.json文件中指定private git repositories urls作为一个依赖项。 我没有使用它,但会喜欢反馈。 这是你需要做的:

 { "name": "my-app", "dependencies": { "private-repo": "git+ssh://git@yourgitserver.com:my-app.git#v0.0.1", } } 

以下文章讨论了这个: Debuggable:Private npm模块

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

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

Sinopia可以用来:

  • 发布自己的私人包,而不公开给公众
  • 只caching使用的公共包(不需要复制整个公共注册)
  • 使用内部生成的修改版本覆盖公共包。

四月十四日(二零一五年)推出npm私人模组 。

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

  • 主持尽可能多的私人包裹,你想要的
  • 为这些软件包提供读取权限或读写权限给其他付费用户
  • 安装并使用其他付费用户授予您阅读权限的任何软件包
  • 在其他付费用户授予您写入权限的任何软件包上进行协作

当然,这不是免费的 – 目前每个用户每月7美元。

而且这还是一个相当新的服务。 例如,缺less对组织帐户的支持(截至2015年6月):

目前,私人软件包仅适用于个人用户,但对组织帐户的支持即将到来。 在此期间随时为您的组织创build一个用户,如果有支持,我们可以将其升级到组织。

所以虽然不完美,但它是维护私有软件包的正式 npm解决scheme,而且这本身也值得一提。

UPDATE

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

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

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

支持私有npm注册的存储库pipe理器:

  • Sonatype Nexus 2.10
  • Artifactory 3.2

我想这个线程需要更新。 如果您查看任何可用的npmregistry,它们非常重,而且需要使用couchdb。 Gemfurry和其他人需要你从公共回购中分离出来。 npm的一些像shadow-npm 没有最近的提交 。

然后,我们find了雷吉 。 它有一个很好的承诺活动,非常容易安装和使用,并有很好的社区支持 。 它非常轻便,你不必处理couchdb等。

原谅我,如果我不明白你的问题,但这是我的答案:

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

  1. 在你的项目中,你需要一个NPM包的骨架。 大多数节点模块都有git仓库,在这里你可以看看它们如何与NPM(package.json文件,我相信是其中的一部分,NPM的网站显示你如何制作一个npm包)
  2. 使用类似于Make的东西来制作和压缩你的软件包,使其可以从互联网或者你的networking上下载到npm安装下载中。
  3. 一旦你的包装,然后使用

    npm install * tarball_url *

稍晚一点,但是NodeJS(截至到11月14日我猜)支持企业NPM仓库 – 你可以在他们的官方网站上find更多的信息。

从粗略的一眼可以看出,npmE允许NPM存储库的透视镜像 – 也就是说,如果它在内部存储库上找不到一个,它将在实际的 NPM存储库中查找包。 看起来很有用!

npm Enterprise是一个内部部署解决scheme,用于在维护npm的团队和公共npm注册中心内安全地共享和分发组织中的JavaScript模块。 它专为需要以下方面的团队而devise:

轻松内部私有模块共享更好地控制开发和部署工作stream程更严格的安全性围绕部署开源模块遵守法律要求主机代码本地npmE是私有npm

npmE是一个npmregistry,它与您已经使用的相同标准npm客户端一起工作,但是提供了现在正在积极采用节点的大型组织所需要的function。 它由npm公司,npm开源项目的赞助商和公共npm注册中心的主持人构build。

不幸的是,这不是免费的。 你可以得到一个试用版,但它是商业软件。 对于独唱开发者来说,这并不是那么好,但是如果你是一个独立的开发者,那么你有GitHub 🙂

这是我知道的最简单的方法 – 用Gemfury私有npmregistry在云中托pipe它。

它是免费的,你可以用你的Github帐户login。 与设置自己的数据库相比,它应该节省大量的时间。

这篇文章谈到如何设置一个私人registry

  • 确保你的系统中安装了couchdb
  • 复制npmjs.org使用下面的命令

     curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true}' -H "Content-Type: application/json" 

请注意,在命令中有"continuous":true ,这将利用CouchDB的_changes API,并在通知此API时提取所有新的更改。

如果您想停止这些复制,您可以轻松添加"cancel":true 。 那么剧本将是

  curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true, "cancel":true}' -H "Content-Type: application/json" 

然后去npmjs.org自述安装npm(确保nodejsgit安装)。 吹是所有的步骤

 git clone git://github.com/isaacs/npmjs.org.git cd npmjs.org sudo npm install -g couchapp npm install couchapp npm install semver couchapp push registry/app.js http://localhost:5984/registry couchapp push www/app.js http://localhost:5984/registry 

我可能对晚会有点迟,但这两者中的任何一个都可能适合你:

  1. http://www.jfrog.com/confluence/display/RTF/Npm+Repositories
  2. https://github.com/krakenjs/kappa