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

时间:2011-09-27 21:01:58

标签: node.js repository npm

Npm听起来像是一个在组织内使用的绝佳平台,如果可以使用私人仓库,就像Nexus / Maven一样好奇。 Google上没有任何内容:(

14 个答案:

答案 0 :(得分:185)

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",
    }
}

以下帖子讨论了这个问题:Debuggable: Private npm modules

答案 1 :(得分:94)

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

look at the npm documentation告诉我们,这是可能的:

  

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

     

是!

     

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

     

如果您从官方CouchDB设置连续复制,然后将内部CouchDB设置为注册表配置,那么除了您的私有软件包之外,您还可以阅读任何已发布的软件包,并且默认情况下只会发布内部。如果您想要发布一个供全世界查看的包,您可以简单地覆盖该命令的--registry配置。

时钟博客上还有关于how to create a private npm repository的精彩教程。

编辑(2017-02-26):

不是很新,但现在paid plans要在NPM上托管私有包。

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

其他选项包括JFrog ArtifactoryInedo ProGet,但我没有使用过。

答案 2 :(得分:89)

有一个易于使用的npm包来执行此操作。 https://www.npmjs.org/package/sinopia

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

Sinopia可用于:

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

答案 3 :(得分:27)

4月14日(2015年),npm private modules被引入。

  

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

     
      
  • 根据需要托管任意数量的私人包
  •   
  • 为这些包提供对任何其他付费用户的读访问权限或读写访问权
  •   
  • 安装并使用其他付费用户授予您阅读权限的任何软件包
  •   
  • 协作其他付费用户授予您
  • 写入权限的任何软件包   

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

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

  

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

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

<强>更新

Npm Private Packages现已推出,计划面向个人用户和组织

  
      
  • 无限数量的公众&amp;私人包裹
  •   
  • $ 7 /月/显影剂
  •   
  • 根据组织名称
  • 包含一个范围名称   
  • 发布和控制对@ org-name / foo的访问
  •   

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

答案 4 :(得分:27)

Verdaccio 正是我所寻找的,它应该得到它自己的答案;)它是一个积极维护的Sinopia分支(高度赞成的回答here)。它是一个 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

答案 5 :(得分:18)

支持私有npm注册管理机构的存储库管理员:

答案 6 :(得分:9)

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

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

答案 7 :(得分:7)

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

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

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

      

    npm install * tarball_url *

答案 8 :(得分:7)

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

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

答案 9 :(得分:5)

派对有点晚了,但NodeJS(截至11月14日我猜)支持企业NPM存储库 - 你可以在official site找到更多信息。

从粗略的一瞥中可以看出,npmE允许对NPM存储库进行直接镜像 - 也就是说,如果它找不到,它将在真正的 NPM存储库中查找包一个在你的内部。似乎非常有用!

  

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

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

     

npmE是一个npm注册表,可以使用相同的标准npm客户端   你已经使用过,但提供了更大的功能   现在热衷于采用节点的组织。它已经建成了   由npm,Inc。,npm开源项目的赞助商和主持人   公共npm注册表。

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

答案 10 :(得分:3)

This post讨论如何设置私人注册表

  • 确保在系统中安装了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 readme安装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 

答案 11 :(得分:3)

我们使用的是Sonatype Nexus,版本是Nexus Repository ManagerOSS 3.6.1-02。我相信它支持NPM私有存储库并缓存了包。

enter image description here

答案 12 :(得分:2)

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

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

答案 13 :(得分:0)

如果您喜欢分散的方法,也可以使用Aragon Package Manager:

  1. 使用APM:http://blog.aragon.one/using-apm-to-replace-npm-and-other-centralized-package-managers/
  2. 部署APM:https://github.com/aragon/aragonOS#apm
相关问题