我已经采用了一些共享代码并将其放入NPM模块中,我不想将其上传到中央注册表 . 问题是,如何从其他项目安装它?
显而易见的方法可能是 Build 我自己的NPM注册表,但根据文档,这涉及很多麻烦 .
我可以只安装一个位于本地文件系统上的NPM模块,甚至可以安装git吗?
npm install --from-git git@server:project
在你的 private npm modules 添加
"private": true
到你的package.json
然后引用另一个模块中的私有模块,在package.json中使用它
{ "name": "myapp", "dependencies": { "private-repo": "git+ssh://git@github.com:myaccount/myprivate.git#v1.0.0", } }
我可以只安装一个位于本地文件系统上的NPM软件包,甚至可以安装git吗?
是的你可以!来自文档https://docs.npmjs.com/cli/install
包是:a)包含由package.json文件描述的程序的文件夹b)包含(a)c)一个解析为(b)d)<name> @ <version>的URL的gzip压缩包发布在注册表上的(c)e)一个<name> @ <tag>,指向(d)f)一个<name>,它具有满足(e)g)<git remote url>的“最新”标签做出决议(b)
是不是很棒?
cd somedir npm install .
要么
npm install path/to/somedir
somedir 必须包含 package.json .
somedir
package.json
它也知道git:
npm install git://github.com/visionmedia/express.git
Update January 2016
除了其他答案之外,有时候您希望在团队环境中拥有私有模块 .
Github 和 Bitbucket 都支持生成团队 API Key 的概念 . 此API密钥可用作 password 来执行此团队的API请求 .
到你的 package.json
{ "name": "myapp", "dependencies": { "private-repo": "git+https://myteamname:aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myprivate.git", } }
其中team name = myteamname,API Key = aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4
在这里我引用了一个bitbucket repo,但是使用github几乎完全相同 .
最后,作为替代方案,如果你真的不介意支付 $7 per month (截至写作),那么你现在可以开箱即用private NPM modules .
FWIW:在处理私人组织存储库时,我遇到了所有这些问题的问题 .
以下对我有用:
npm install -S "git+https://username@github.com/orgname/repositoryname.git"
例如:
npm install -S "git+https://blesh@github.com/netflix/private-repository.git"
在这一个案例中,我为我工作,因为在我找到谷歌并找到答案之前,我是先尝试过的 . 其他答案就是我过去所做的 .
希望这有助于其他人 .
我遇到了同样的问题,经过一番搜索后,我找到了Reggie(https://github.com/mbrevoort/node-reggie) . 它看起来很稳固 . 它允许将NPM模块轻量级发布到私有服务器 . 不完美(安装时没有身份验证),它仍然非常年轻,但我在本地测试它,它似乎做它应该做的事情 .
那是......(这只是来自他们的文档)
npm install -g reggie reggie-server -d ~/.reggie
然后进入你的模块目录并...
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" }
以下面的可访问方式构建代码 . 如果这对您有用 .
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" }
这适用于我的情况 .
从arcseldon's answer开始,我发现URL中需要团队名称,如下所示:
npm install --save "git+https://myteamname@aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myteamname/myprivate.git"
请注意,API密钥仅适用于团队,而不适用于个人用户 .
Npm现在提供无限private hosted modules,每月7美元/用户/月使用
cd private-project npm login
在你的包json设置 "name": " @username/private-project"
"name": " @username/private-project"
npm publish
然后要求你的项目:
cd ../new-project npm install --save @username/private-project
配置从公共Github存储库安装,即使机器在防火墙下:
dependencies: { "foo": "https://github.com/package/foo/tarball/master" }
我将以下内容与私有github存储库一起使用:
npm install github:mygithubuser/myproject
非常简单 -
npm config set registry https://path-to-your-registry/
它实际上将 registry = "https://path-to-your-registry" 这一行设置为 /Users/<ur-machine-user-name>/.npmrc
registry = "https://path-to-your-registry"
/Users/<ur-machine-user-name>/.npmrc
您明确设置或默认设置的所有值都可以通过 - npm config list 看到
npm config list
这是what I was looking for:
# Get the latest from GitHub, public repo: $ npm install username/my-new-project --save-dev # Bitbucket, private repo: $ npm install git+https://token:x-oauth-basic@github.com/username/my-new-project.git#master $ npm install git+ssh://git@github.com/username/my-new-project.git#master # … or from Bitbucket, public repo: $ npm install git+ssh://git@bitbucket.org/username/my-new-project.git#master --save-dev # Bitbucket, private repo: $ npm install git+https://username:password@bitbucket.org/username/my-new-project.git#master $ npm install git+ssh://git@bitbucket.org/username/my-new-project.git#master # Or, if you published as npm package: $ npm install my-new-project --save-dev
13 回答
在你的 private npm modules 添加
到你的package.json
然后引用另一个模块中的私有模块,在package.json中使用它
是的你可以!来自文档https://docs.npmjs.com/cli/install
是不是很棒?
要么
somedir
必须包含package.json
.它也知道git:
Update January 2016
除了其他答案之外,有时候您希望在团队环境中拥有私有模块 .
Github 和 Bitbucket 都支持生成团队 API Key 的概念 . 此API密钥可用作 password 来执行此团队的API请求 .
在你的 private npm modules 添加
到你的 package.json
然后引用另一个模块中的私有模块,在package.json中使用它
其中team name = myteamname,API Key = aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4
在这里我引用了一个bitbucket repo,但是使用github几乎完全相同 .
最后,作为替代方案,如果你真的不介意支付 $7 per month (截至写作),那么你现在可以开箱即用private NPM modules .
FWIW:在处理私人组织存储库时,我遇到了所有这些问题的问题 .
以下对我有用:
例如:
在这一个案例中,我为我工作,因为在我找到谷歌并找到答案之前,我是先尝试过的 . 其他答案就是我过去所做的 .
希望这有助于其他人 .
我遇到了同样的问题,经过一番搜索后,我找到了Reggie(https://github.com/mbrevoort/node-reggie) . 它看起来很稳固 . 它允许将NPM模块轻量级发布到私有服务器 . 不完美(安装时没有身份验证),它仍然非常年轻,但我在本地测试它,它似乎做它应该做的事情 .
那是......(这只是来自他们的文档)
然后进入你的模块目录并...
最后,您可以通过直接npm install命令或者在package.json中使用该URL来安装来自reggie的软件包...就像这样
要么..
以下面的可访问方式构建代码 . 如果这对您有用 .
在MainApp @ *NodProjs\Apps\MainApp* 内
您可能需要将package.json更新为:
这适用于我的情况 .
从arcseldon's answer开始,我发现URL中需要团队名称,如下所示:
请注意,API密钥仅适用于团队,而不适用于个人用户 .
Npm现在提供无限private hosted modules,每月7美元/用户/月使用
在你的包json设置
"name": " @username/private-project"
然后要求你的项目:
配置从公共Github存储库安装,即使机器在防火墙下:
我将以下内容与私有github存储库一起使用:
非常简单 -
它实际上将
registry = "https://path-to-your-registry"
这一行设置为/Users/<ur-machine-user-name>/.npmrc
您明确设置或默认设置的所有值都可以通过 -
npm config list
看到这是what I was looking for: