Npm听起来像是一个在组织中使用的很棒的平台,很好奇是否可以像Nexus/Maven那样使用私人回购。谷歌上什么都没有出现:(
如果我不太理解你的问题,请原谅,但我的回答是:
你可以创建一个私有的npm模块,并使用npm的普通命令来安装它。大多数node.js用户使用git作为他们的存储库,但你可以使用任何适合你的存储库。
在你的项目中,你需要一个NPM包的框架。大多数 节点模块有git存储库,您可以在其中查看它们如何 集成与NPM(包。json文件,我相信是 这和NPM的网站向你展示了如何制作一个NPM包) 使用类似于Make的东西来制作和压缩你的包 可以从互联网或您的网络上获取,以便为NPM准备 安装下载。 一旦你的包装制作完成,就可以使用了 NPM安装
我不认为有一个简单的方法来做到这一点。
看看npm文档就知道,这是可能的:
Can I run my own private registry? Yes! The easiest way is to replicate the couch database, and use the same (or similar) design doc to implement the APIs. If you set up continuous replication from the official CouchDB, and then set your internal CouchDB as the registry config, then you'll be able to read any published packages, in addition to your private ones, and by default will only publish internally. If you then want to publish a package for the whole world to see, you can simply override the --registry config for that command.
在clock博客中也有一个关于如何创建私有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版本中,你可以在包中指定私有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"
注意,该命令中有"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自述me安装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
我想这个帖子需要更新。如果你看看任何可用的npm注册表,它们都非常繁重,需要couchdb。Gemfurry和其他人需要你放弃公共回购。一些像shadow-npm这样的npm没有最近的提交。
然后,我们找到了雷吉。它有一个很好的提交活动,非常容易安装和使用,并有相当好的社区支持。它的重量非常轻,你不需要处理couchdb等。
有一个容易使用的npm包可以做到这一点。 https://www.npmjs.org/package/sinopia
简而言之,Sinopia是一个私有/缓存npm存储库服务器,你可以用零配置来设置。
Sinopia可用于:
发布自己的私有包,而不向公众公开 只缓存所使用的公共包(不需要复制整个公共注册中心) 使用内部生成的修改版本覆盖公共包。
我可能有点晚了,但这两个中的任何一个都可能对你有用:
http://www.jfrog.com/confluence/display/RTF/Npm+Repositories https://github.com/krakenjs/kappa
有点晚了,但是NodeJS(我猜在11月14日左右)支持企业NPM存储库-你可以在他们的官方网站上找到更多信息。
粗略地看一下,npmE似乎允许NPM存储库的倒挂镜像——也就是说,如果它在你的内部存储库中找不到包,它就会在真正的NPM存储库中查找包。看起来很有用!
npm Enterprise is an on-premises solution for securely sharing and distributing JavaScript modules within your organization, from the team that maintains npm and the public npm registry. It's designed for teams that need: easy internal sharing of private modules better control of development and deployment workflow stricter security around deploying open-source modules compliance with legal requirements to host code on-premises npmE is private npm npmE is an npm registry that works with the same standard npm client you already use, but provides the features needed by larger organizations who are now enthusiastically adopting node. It's built by npm, Inc., the sponsor of the npm open source project and the host of the public npm registry.
不幸的是,它不是免费的。你可以试用一下,但它是商业软件。这对独立开发者来说不是很好,但如果你是一个独立开发者,你有GitHub:-)
在2015年4月14日,npm私有模块被引入。
当你为私人模块付费时,你可以: 托管尽可能多的私有包 将这些包的读访问权或读写访问权授予任何其他付费用户 安装并使用其他付费用户授予您读访问权限的任何包 协作其他付费用户授予您写权限的任何包
当然它不是免费的——目前每个用户每月7美元。
这仍然是一项相当新的服务。例如,缺少对组织帐户的支持(截至2015年6月):
目前,私有包仅对个人用户可用,但对组织帐户的支持很快就会推出。在此期间,请随意为您的组织创建一个用户,我们可以在提供支持时将其升级为组织。
因此,虽然它并不完美,但它是维护私有包的官方npm解决方案,这本身就值得一提。
更新
Npm私有包现已可用,针对个人用户和组织:
不限数量的公共和私人套餐 7美元/月/开发人员 包含一个基于组织名称的作用域名称 发布和控制对@org-name/foo的访问
(免责声明:与npm, Inc.没有任何关联)
我们使用的是Sonatype Nexus,版本是Nexus Repository ManagerOSS 3.6.1-02。我确信它支持NPM私有存储库和缓存包。
Verdaccio是我一直在寻找的东西,它应该有自己的答案;)这是Sinopia的一个积极维护的分支(高度好评的答案)。它是一个作为npm包的npm注册表,可以在这里找到
在这里:https://github.com/verdaccio/verdaccio 在这里:https://www.verdaccio.org 端口号: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 repo add verdaccio https://charts.verdaccio.org
helm repo update
helm install verdaccio/verdaccio
如果你更喜欢分散的方法,你也可以使用Aragon包管理器:
使用APM: http://blog.aragon.one/using-apm-to-replace-npm-and-other-centralized-package-managers/ 部署APM: https://github.com/aragon/aragonOS#apm
我想在列表中添加AWS Code Artifact服务,如果您的组织也在使用AWS git回购,看起来是一个不错的方法。
https://aws.amazon.com/blogs/devops/publishing-private-npm-packages-aws-codeartifact/
推荐文章
- 为什么在节点REPL中没有定义__dirname ?
- 在Node.js中克隆对象
- Node.js中的process.env.PORT是什么?
- js的Mongoose.js字符串到ObjectId函数
- ELIFECYCLE Node.js错误是什么意思?
- npm -D标志是什么意思?
- 如何完全卸载Ubuntu中的nodejs, npm和node
- 在猫鼬模式中添加created_at和updated_at字段
- 我如何把变量javascript字符串?
- 如何强制tsc忽略node_modules文件夹?
- GitHub.com的存储库大小限制
- NPM全局安装“无法找到模块”
- MongoDB和Mongoose的区别
- 如何使用Express.js指定HTTP错误码?
- 通过npm安装Twitter Bootstrap的目的?