[英]How to install a private NPM module without my own registry?
我获取了一些共享代码并将其放入 NPM 模块中,我不想将其上传到中央注册表。 问题是,如何从其他项目安装它?
显而易见的方法可能是设置我自己的 NPM 注册表,但根据文档,这涉及很多麻烦。
我可以只安装一个位于本地文件系统上的 NPM 模块,或者甚至可以从 git 安装吗?
npm install --from-git git@server:project
在您的私有 npm 模块中添加
"private": true
到你的 package.json
然后在另一个模块中引用私有模块,在你的 package.json 中使用它
{
"name": "myapp",
"dependencies": {
"private-repo": "git+ssh://git@github.com:myaccount/myprivate.git#v1.0.0",
}
}
cd somedir
npm install .
或者
npm install path/to/somedir
somedir
必须在其中包含package.json
。
它也知道 git:
npm install git://github.com/visionmedia/express.git
我可以只安装一个位于本地文件系统上的 NPM 包,甚至可以从 git 安装吗?
是的你可以! 从文档https://docs.npmjs.com/cli/install
一个包是:
- a) 包含由 package.json 文件描述的程序的文件夹
- b) 一个 gzipped tarball,包含 (a)
- c) 解析为 (b) 的 url
- d) 一个
<name>@<version>
与 (c) 一起在注册表上发布- e) 一个指向 (d) 的
<name>@<tag>
- f) 具有满足 (e) 的“最新”标签的
<name>
- g) 解析为 (b) 的
<git remote url>
npm 不是很棒吗?
2016 年 1 月更新
除了其他答案之外,有时您希望在团队上下文中使用私有模块。
Github和Bitbucket都支持生成团队API Key的概念。 此 API 密钥可用作此团队执行 API 请求的密码。
在您的私有 npm 模块中添加
"private": true
到你的package.json
然后在另一个模块中引用私有模块,在你的 package.json 中使用它
{
"name": "myapp",
"dependencies": {
"private-repo":
"git+https://myteamname:aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myprivate.git",
}
}
其中团队名称 = myteamname和API 密钥 = aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4
这里我引用了一个 bitbucket 存储库,但使用 github 也几乎相同。
最后,作为替代方案,如果您真的不介意每月支付7 美元(截至撰写本文时),那么您现在可以开箱即用地拥有私有 NPM 模块。
FWIW:在处理私人组织存储库时,我对所有这些答案都有疑问。
以下对我有用:
npm install -S "git+https://username@github.com/orgname/repositoryname.git"
例如:
npm install -S "git+https://blesh@github.com/netflix/private-repository.git"
我不完全确定为什么其他答案在这种情况下对我不起作用,因为它们是我在访问 Google 并找到此答案之前首先尝试的。 其他答案是我过去所做的。
希望这对其他人有帮助。
以一种可访问的方式构建您的代码,如下所示。 如果这对你来说是可能的。
NodeProjs\Apps\MainApp\package.json
NodeProjs\Modules\DataModule\package.json
在 MainApp @NodProjs\Apps\MainApp\
npm install --S ../../Modules/DataModule
您可能需要将 package.json 更新为:
"dependencies": {
"datamodule": "../../Modules/DataModule"
}
这适用于我的情况。
我遇到了同样的问题,经过一番搜索,我找到了 Reggie( https://github.com/mbrevoort/node-reggie )。 它看起来很结实。 它允许将 NPM 模块轻量级发布到私有服务器。 不完美(安装时没有身份验证),而且它还很年轻,但我在本地对其进行了测试,它似乎做了它所说的应该做的事情。
那是......(这只是来自他们的文档)
npm install -g reggie
reggie-server -d ~/.reggie
然后 cd 进入您的模块目录并...
reggie -u http://<host:port> publish
reggie -u http://127.0.0.1:8080 publish
最后,您可以在直接的 npm install 命令中或从 package.json 中使用该 url 来从 reggie 安装软件包......就像这样
npm install http://<host:port>/package/<name>/<version>
npm install http://<host:port>/package/foo/1.0.0
或者..
dependencies: {
"foo": "http://<host:port>/package/foo/1.0.0"
}
Npm 现在以 $7/用户/月的价格提供无限的私有托管模块,就像这样使用
cd private-project
npm login
在你的包 json 中设置"name": " @username/private-project"
npm publish
然后要求您的项目:
cd ../new-project
npm install --save @username/private-project
这就是我一直在寻找的- 从“私人回购”中获取最新信息:
GitHub:
$ npm install git+https://token:x-oauth-basic@github.com/username/my-new-project.git
$ npm install git+ssh://git@github.com/username/my-new-project.git
比特桶:
$ npm install git+https://username:password@bitbucket.org/username/my-new-project.git
$ npm install git+ssh://git@bitbucket.org/username/my-new-project.git
从arcseldon 的回答开始,我发现 URL 中需要团队名称,如下所示:
npm install --save "git+https://myteamname@aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myteamname/myprivate.git"
请注意,API 密钥仅适用于团队,而不是个人用户。
我将以下内容与私有 github 存储库一起使用:
npm install github:mygithubuser/myproject
您可以为此目的使用Verdaccio ,它是一个内置于 Node.js 中的轻量级私有 npm 代理注册表。 它也是免费和开源的。 通过使用 Verdaccio,它不会像普通的私有 npm 注册表那样麻烦。
您可以在他们的网站上找到有关如何安装和运行它的详细信息,但步骤如下:
它需要node >=8.x
。
// Install it from npm globally
npm install -g verdaccio
// Simply run with the default configuration that will host the registry which you can reach at http://localhost:4873/
verdaccio
// Set the registry for your project and every package will be downloaded from your private registry
npm set registry http://localhost:4873/
// OR use the registry upon individual package install
npm install --registry http://localhost:4873
它还有一个 docker,因此您可以轻松地将其发布到您的公开可用的 docker 上,瞧,您有一个私有的 npm 存储库,可以在您配置它时以某种方式分发给其他人!
配置从公共 Github 存储库安装,即使机器在防火墙下:
dependencies: {
"foo": "https://github.com/package/foo/tarball/master"
}
很简单 -
npm config set registry https://path-to-your-registry/
它实际上将registry = "https://path-to-your-registry"
这一行设置为/Users/<ur-machine-user-name>/.npmrc
您显式设置或默认设置的所有值都可以通过 - npm config list
显然,设置私有 npm 注册表是最具可扩展性和长期性的解决方案,尽管一开始有点麻烦。
此外,您可以使用其他答案中提到的git+https/ssh
进行安装。 但是如果你有私有仓库,并且你正在云端构建镜像,比如说使用 google cloud build,你必须设置 GitHub ssh 连接。
可以使用以下方法解决此类一次性情况的最简单解决方案。
从头开始克隆并修改或创建您自己的库。
生成存档文件(包代码及其依赖项),使用
yarn install && yarn pack
这将产生类似的文件
rich-markdown-editor-v11.13.117.tgz
将此文件移动到libs
文件夹并将此条目添加到package.json
的依赖项对象中。
"rich-markdown-editor": "file:libs/rich-markdown-editor-v11.13.117.tgz",
现在,安装软件包。
yarn install
确保将该文件添加到您的 vcs 中,并且 docker 映像创建中的安装过程也应该在云中运行。
注意:如果你经常更新包并在你的 vcs 中提交,它会增加你的 repo 大小(同时克隆完整的历史记录)。
.npmrc
文件,并在文件中写入以下内容://registry.npmjs.org/:_authToken=${Your_Access_Token}
注意:这也适用于遵循相同标准的其他包装服务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.