Answers:
我认为没有简单的方法可以做到这一点。
一看故宫文献告诉我们,这是可能的:
我可以运行自己的私人注册表吗?
是!
最简单的方法是复制Couch数据库,并使用相同(或相似)的设计文档来实现API。
如果您从官方CouchDB设置了连续复制,然后将内部CouchDB设置为注册表配置,则除了私有包之外,您还可以读取任何已发布的包,并且默认情况下仅在内部发布。然后,如果您想发布一个程序包供全世界查看,则可以简单地覆盖该
--registry
命令的配置。
关于如何在时钟博客中创建私有npm存储库,还有一本很棒的教程。
编辑(2017-02-26):
这不是一个真正的新事物,但是现在有付费计划在NPM上托管私有软件包。
多年来,通过建立在NPM之上的巨大前端生态系统,NPM也已成为许多非Node.js公司的一个因素。如果您的公司已经在内部运行Sonatype Nexus来托管Java项目,则也可以使用它来托管内部NPM程序包。
其他选项包括JFrog Artifactory和Inedo ProGet,但我还没有使用过。
https://github.com/isaacs/npmjs.org/:在npm v1.0.26版本中,您可以在package.json文件中将私有git存储库网址指定为依赖项。我没有使用它,但希望得到反馈。这是您需要做的:
{
"name": "my-app",
"dependencies": {
"private-repo": "git+ssh://git@yourgitserver.com:my-app.git#v0.0.1",
}
}
以下文章讨论了这一点:可调试:私有npm模块
有一个易于使用的npm软件包可以执行此操作。 https://www.npmjs.org/package/sinopia
简而言之,Sinopia是一个专用/缓存npm存储库服务器,您可以使用零配置进行设置。
可以将Sinopia用于:
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
在2015年4月14日,npm私有模块被引入。
在购买专用模块时,您可以:
- 托管任意数量的私人软件包
- 将这些软件包的读取权限或读写权限授予任何其他付费用户
- 安装和使用其他付费用户已授予您读取权限的任何软件包
- 与其他付费用户授予您写入权限的软件包进行协作
当然它不是免费的-目前每个用户每月7美元。
而且它仍然是一项相当新的服务。例如,缺少对组织帐户的支持(截至2015年6月):
当前,私有软件包仅适用于个人用户,但即将推出对组织帐户的支持。在此期间,可以随时为您的组织创建用户,如果有支持,我们可以将其升级到组织。
因此,虽然不完美,但这是维护私有软件包的官方 npm解决方案,这本身值得一提。
更新
Npm私有软件包现已推出,并针对个人用户和组织制定了计划:
- 无限数量的公共和私人套餐
- $ 7 /月/开发人员
- 根据组织名称包含一个范围名称
- 发布和控制对@ org-name / foo的访问
(免责声明:甚至没有以任何方式与npm,Inc.进行远程关联)
如果我不太了解您的问题,请原谅我,但是这是我的答案:
您可以创建一个私有npm模块,并使用npm的常规命令进行安装。大多数node.js用户使用git作为他们的存储库,但是您可以使用任何适合您的存储库。
包装完成后,请使用
npm install * tarball_url *
派对晚了一点,但是NodeJS(我猜是11月14日左右)支持公司NPM存储库-您可以在其官方网站上找到更多信息。
粗略地看一下,似乎npmE允许对NPM存储库进行透彻镜像-也就是说,如果在内部NPM存储库中找不到软件包,它将在实际 NPM存储库中查找软件包。似乎非常有用!
npm Enterprise是一个本地解决方案,用于维护组织和维护npm公开注册表的团队在组织内安全地共享和分发JavaScript模块。它是为需要以下内容的团队设计的:
轻松内部共享私有模块,更好地控制开发和部署工作流程,围绕部署符合法律要求的开源模块,以在本地托管代码托管更严格的安全性npmE是私有npm
npmE是一个npm注册表,可与您已经使用的相同标准npm客户端一起使用,但提供了现在正在积极采用节点的大型组织所需的功能。它由npm,Inc.(npm开源项目的发起人和公共npm注册中心的主持人)构建。
不幸的是,它不是免费的。您可以试用,但它是商业软件。对于单独开发人员来说,这并不是什么好事,但是如果您是单独开发人员,则可以使用GitHub :-)
这篇文章讨论了如何设置私人注册表
使用以下命令复制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 Package Manager: