Npm 听起来像是一个在组织内使用的好平台,很好奇是否可以使用私有 repo,比如 Nexus/Maven。谷歌上什么都没有:(
14 回答
https://github.com/isaacs/npmjs.org/:在 npm 版本 v1.0.26 中,您可以在 package.json 文件中指定私有 git 存储库 url 作为依赖项。我没有使用它,但希望得到反馈。这是您需要做的:
{
"name": "my-app",
"dependencies": {
"private-repo": "git+ssh://git@yourgitserver.com:my-app.git#v0.0.1",
}
}
以下帖子讨论了这一点:可调试:私有 npm 模块
我不认为有一个简单的方法可以做到这一点。
查看 npm 文档告诉我们,这是可能的:
我可以运行自己的私有注册表吗?
是的!
最简单的方法是复制沙发数据库,并使用相同(或相似)的设计文档来实现 API。
如果您从官方 CouchDB 设置连续复制,然后将您的内部 CouchDB 设置为注册表配置,那么您将能够读取任何已发布的包,以及您的私有包,并且默认情况下只会在内部发布。如果你想发布一个包让全世界看到,你可以简单地覆盖该
--registry
命令的配置。
在时钟博客中还有一个关于如何创建私有 npm 存储库的优秀教程。
编辑(2017-02-26):
不是很新,但现在有付费计划在 npm 上托管私有包。
多年来,通过建立在 npm 之上的庞大的前端生态系统,npm 也成为许多非 Node.js 公司的一个因素。如果您的公司已经在运行Sonatype Nexus以在内部托管 Java 项目,您也可以使用它来托管内部 npm 包。
其他选项包括JFrog Artifactory和Inedo ProGet,但我没有使用过这些。
有一个易于使用的 npm 包来执行此操作。 https://www.npmjs.org/package/sinopia
简而言之,Sinopia 是一个私有/缓存的 npm 存储库服务器,您可以使用零配置进行设置。
Sinopia 可用于:
- 发布自己的私有包而不将其暴露给公众
- 仅缓存使用的公共包(无需复制整个公共注册表)
- 用内部生成的修改版本覆盖公共包。
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运行
docker run -it --rm --detach --name verdaccio -p 4873:4873 verdaccio/verdaccio
使用Helm运行
helm repo add verdaccio https://charts.verdaccio.org
helm repo update
helm install verdaccio/verdaccio
2015 年 4 月 14 日,引入了npm 私有模块。
当您为私有模块付费时,您可以:
- 托管任意数量的私有包
- 将这些软件包的读取权限或读写权限授予任何其他付费用户
- 安装和使用其他付费用户授予您读取权限的任何软件包
- 协作处理其他付费用户授予您写入权限的任何软件包
当然它不是免费的——目前每个用户每月 7 美元。
它仍然是一项相当新的服务。例如,缺少对组织帐户的支持(截至 2015 年 6 月):
目前,私人包仅适用于个人用户,但对组织帐户的支持即将推出。同时,请随时为您的组织创建用户,我们可以在支持时将其升级为组织。
所以虽然不完美,但它是维护私有包的官方npm 解决方案,这本身就值得一提。
更新
Npm Private Packages现在可用,为个人用户和组织提供计划:
- 无限数量的公共和私人包
- 7 美元/月/开发人员
- 包括一个范围名称,基于组织名称
- 发布和控制对@org-name/foo 的访问
(免责声明:甚至与npm, Inc.没有任何远程关联)
支持私有 npm 注册表的存储库管理器:
如果我不能很好地理解你的问题,请原谅我,但这是我的答案:
您可以创建一个私有 npm 模块并使用 npm 的常规命令来安装它。大多数 node.js 用户使用 git 作为他们的存储库,但您可以使用任何适合您的存储库。
- 在您的项目中,您将需要 NPM 包的骨架。大多数节点模块都有 git 存储库,您可以在其中查看它们如何与 NPM 集成(我相信 package.json 文件是其中的一部分,NPM 的网站向您展示了如何制作 npm 包)
- 使用类似于 Make 的东西来制作和压缩您的包,以便从 Internet 或您的网络中获取它,以便为 npm install 下载暂存。
制作好包裹后,请使用
npm 安装 *tarball_url*
这是我知道的最简单的方法 - 使用Gemfury私有 npm 注册表将其托管在云中。
它是免费的,您可以使用您的 Github 帐户登录。与设置自己的数据库相比,它应该为您节省大量时间。
聚会有点晚了,但 NodeJS(我猜是 11 月 14 日左右)支持企业 NPM 存储库——你可以在他们的官方网站上找到更多信息。
粗略一看,npmE 似乎允许对 NPM 存储库进行直通镜像——也就是说,如果在您的内部存储库中找不到包,它会在真正的NPM 存储库中查找包。看起来很有用!
npm Enterprise 是一个本地解决方案,用于在您的组织内安全地共享和分发 JavaScript 模块,来自维护 npm 和公共 npm 注册表的团队。它专为需要的团队而设计:
私有模块的轻松内部共享 更好地控制开发和部署工作流程 围绕部署开源模块更严格的安全性 符合法律要求以在本地托管代码 npmE 是私有 npm
npmE 是一个 npm 注册表,可与您已经使用的相同标准 npm 客户端一起使用,但提供了现在热情采用 node 的大型组织所需的功能。它由 npm, Inc. 构建,该公司是 npm 开源项目的赞助商和公共 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"
请注意,"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(确保已安装)。吹是所有的步骤nodejs
git
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
我参加聚会可能有点晚了,但这两个中的任何一个都可能对你有用:
如果您更喜欢分散的方法,也可以使用 Aragon 包管理器: