你可以为你的组织托管一个私有的存储库来使用npm吗?

Npm听起来像是一个在组织中使用的很棒的平台,很好奇是否可以像Nexus/Maven那样使用私人回购。谷歌上什么都没有出现:(

192182 次浏览

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

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

    在你的项目中,你需要NPM包的框架。大多数 节点模块有git存储库,您可以在其中查看它们如何 集成与NPM(包。json文件,我相信是 这个和NPM的网站向你展示了如何制作一个NPM包) 使用类似于Make的东西来制作和压缩你的包 可以从互联网或您的网络上获取,以便为NPM准备 李安装下载。< / >
  1. 一旦你的包制作完成,然后使用

    NPM安装

    李< /引用> < / >

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

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

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

是的!

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

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

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

编辑(2017-02-26):

不是很新,但是现在有支付计划在npm上托管私有包。

这些年来,通过建立在npm之上的巨大前端生态系统,npm也成为了许多非node .js公司的一个因素。如果你的公司已经在内部运行Sonatype联系来托管Java项目,你也可以用它来托管内部npm包。

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

< p > https://github.com/isaacs/npmjs.org/: 在npm v1.0.26版本中,你可以在包中指定私有git存储库url作为依赖项。json文件。我没有使用它,但希望得到反馈。下面是你需要做的:

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

下面的帖子讨论这个:可调试:私有npm模块

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

它是免费的,你可以用你的Github账户登录。与建立自己的数据库相比,这样可以节省很多时间。

这篇文章讨论了如何设置私有注册表

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

Note there is "continuous":true in the command, this utilises CouchDB’s _changes API and will pull any new changes when this API is notified.

If you ever want to stop these replications, you can easily add "cancel":true. Then the script would be

    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

我想这个帖子需要更新。如果你看看任何可用的npm注册表,它们都非常繁重,需要couchdb。Gemfurry和其他人需要你放弃公共回购。一些npm像shadow-npm有最近没有提交

然后,我们找到雷吉。它有一个很好的提交活动,非常容易安装和使用,并有相当好的社区支持。它的重量非常轻,你不需要处理couchdb等。

有一个容易使用的npm包可以做到这一点。 https://www.npmjs.org/package/sinopia < / p >

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

Sinopia可用于:

  • 发布自己的私有包,而不向公众公开
  • 只缓存所使用的公共包(不需要复制整个公共注册中心)
  • 使用内部生成的修改版本覆盖公共包。

我可能有点晚了,但这两个中的任何一个都可能对你有用:

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

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

有点晚了,但NodeJS(大约11月14日)支持企业NPM存储库-你可以在他们的官方网站上找到更多。

粗略地看一下,npmE似乎允许NPM存储库的倒挂镜像——也就是说,如果它在你的内部存储库中找不到包,它将在真正的 NPM存储库中查找包。看起来很有用!

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

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

npmE是一个npm注册表,使用相同的标准npm客户端 您已经在使用,但提供了更大的应用程序所需的特性 现在积极采用节点的组织。它的建立 npm, Inc., npm开源项目的赞助商和主机

不幸的是,它不是免费的。你可以试用一下,但它是商业软件。这对独立开发者来说不是很好,但如果你是一个独立开发者,你有GitHub:-)

在2015年4月14日,NPM私有模块被引入。

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

  • 托管尽可能多的私有包
  • 将这些包的读访问权或读写访问权授予任何其他付费用户
  • 安装并使用其他付费用户授予您读访问权限的任何包
  • 协作其他付费用户授予您写权限的任何包

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

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

目前,私有包仅对个人用户可用,但对组织帐户的支持很快就会推出。在此期间,请随意为您的组织创建一个用户,我们可以在提供支持时将其升级为组织。

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

更新

Npm私有包现在可用,个人用户和组织都有计划:

  • 不限数量的公共&私人包
  • 7美元/月/开发人员
  • 包含一个基于组织名称的作用域名称
  • 发布和控制对@org-name/foo的访问

(免责声明:与npm公司。没有任何关联)

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

enter image description here

Verdaccio是我正在寻找的,它值得它自己的答案;)它是Sinopia的一个积极维护的分支(高度好评的答案在这里)。它是NPM注册表作为一个NPM包,并且可以被找到

这里:https://github.com/verdaccio/verdaccio
这里:https://www.verdaccio.org
port number: 4873

使用PM2运行

npm i -g verdaccio pm2
pm2 start --name verdaccio `which verdaccio`
pm2 save

使用码头工人运行

docker run -it --rm --detach --name verdaccio -p 4873:4873 verdaccio/verdaccio

使用运行

helm repo add verdaccio https://charts.verdaccio.org
helm repo update
helm install verdaccio/verdaccio

如果你更喜欢分散的方法,你也可以使用Aragon包管理器:

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

我想在列表中添加AWS Code Artifact服务,如果您的组织也在使用AWS git回购,看起来是一个不错的方法。

https://aws.amazon.com/blogs/devops/publishing-private-npm-packages-aws-codeartifact/