Node.js 如何在没有自己注册表的情况下安装专用NPM模块?

Node.js 如何在没有自己注册表的情况下安装专用NPM模块?,node.js,npm,package,npm-private-modules,Node.js,Npm,Package,Npm Private Modules,我已经把一些共享代码放进了NPM模块,我不想上传到中央注册中心。问题是,如何从其他项目安装它 显而易见的方法可能是建立我自己的NPM注册表,但根据文档,这涉及很多麻烦 我可以只安装一个位于本地文件系统上的NPM模块,或者甚至可以从git安装吗 npm install --from-git git@server:project 或 somedir必须包含包.json 它也了解git: npm安装git://github.com/visionmedia/express.git 在您的专用npm模块

我已经把一些共享代码放进了NPM模块,我不想上传到中央注册中心。问题是,如何从其他项目安装它

显而易见的方法可能是建立我自己的NPM注册表,但根据文档,这涉及很多麻烦

我可以只安装一个位于本地文件系统上的NPM模块,或者甚至可以从git安装吗

npm install --from-git git@server:project

somedir
必须包含
包.json

它也了解git:

npm安装git://github.com/visionmedia/express.git

在您的专用npm模块中添加

"private": true 
"private": true 
到您的package.json

{
    "name": "myapp",
    "dependencies": {
        "private-repo": "git+ssh://git@github.com:myaccount/myprivate.git#v1.0.0",
    }
}
    {
        "name": "myapp",
        "dependencies": {
            "private-repo":
"git+https://myteamname:aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myprivate.git",
        }
    }
然后,要在另一个模块中引用私有模块,请在package.json中使用它

{
    "name": "myapp",
    "dependencies": {
        "private-repo": "git+ssh://git@github.com:myaccount/myprivate.git#v1.0.0",
    }
}
    {
        "name": "myapp",
        "dependencies": {
            "private-repo":
"git+https://myteamname:aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myprivate.git",
        }
    }
我可以只安装一个位于本地文件系统上的NPM包,或者甚至可以从git安装吗

npm install --from-git git@server:project
是的,你可以!从文件中

套餐是:

  • a) 包含由package.json文件描述的程序的文件夹
  • b) 包含(a)的压缩焦油球
  • c) 解析为(b)的url
  • d) 使用(c)在注册表上发布的
    @
  • e) 指向(d)的
    @
  • f) 带有“最新”标签的
    (e)
  • g) 解析为(b)的

npm不是很出色吗?

我也遇到了同样的问题,在四处搜索之后,我找到了Reggie()。它看起来很结实。它允许将NPM模块轻量级发布到专用服务器。不完美(安装时没有身份验证),而且它还很年轻,但我在本地对它进行了测试,它似乎做到了它所说的应该做的事情

那就是。。。(这只是他们的文档)

然后将cd放入模块目录并

reggie -u http://<host:port> publish 
reggie -u http://127.0.0.1:8080 publish 
reggie-u http://publish
雷吉-uhttp://127.0.0.1:8080 发表
最后,您只需在直接npm安装命令中使用该url,或者在package.json中使用该url,就可以从reggie安装软件包。。。像这样

npm install http://<host:port>/package/<name>/<version>
npm install http://<host:port>/package/foo/1.0.0
npm安装http:///package//
npm安装http:///package/foo/1.0.0
或者

依赖项:{
“foo”:http:///package/foo/1.0.0"
}

FWIW:在处理私人组织存储库时,我对所有这些答案都有疑问

以下几点对我很有用:

npm install -S "git+https://username@github.com/orgname/repositoryname.git"
例如:

npm install -S "git+https://blesh@github.com/netflix/private-repository.git"
我不完全确定为什么其他答案在这个案例中对我不起作用,因为在我点击谷歌找到这个答案之前,我首先尝试了这些答案。其他答案是我过去所做的


希望这能帮助其他人。

配置从公共Github存储库安装,即使计算机处于防火墙下:

dependencies: {
   "foo": "https://github.com/package/foo/tarball/master"
}

Npm现在提供了7美元/用户/月的无限制使用,就像这样

cd private-project
npm login
在您的包json集合
“name”:“@username/private project”

然后要求您的项目:

cd ../new-project
npm install --save @username/private-project

2016年1月更新

除了其他答案之外,有时您还希望在团队环境中提供私有模块

GithubBitbucket都支持生成团队API密钥的概念。此API密钥可用作密码,以执行此团队的API请求


在您的专用npm模块中添加

"private": true 
"private": true 
到您的包.json

然后,要在另一个模块中引用私有模块,请在package.json中使用它

{
    "name": "myapp",
    "dependencies": {
        "private-repo": "git+ssh://git@github.com:myaccount/myprivate.git#v1.0.0",
    }
}
    {
        "name": "myapp",
        "dependencies": {
            "private-repo":
"git+https://myteamname:aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myprivate.git",
        }
    }
其中团队名称=myteamname,API密钥=aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4

这里我引用了一个bitbucket回购,但使用github也几乎相同

最后,作为一种选择,如果你真的不介意每月支付7美元,那么你现在可以开箱即用。

首先,我发现URL中需要团队名称,如下所示:

npm install --save "git+https://myteamname@aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myteamname/myprivate.git"

请注意,API密钥仅适用于团队,而不适用于个人用户。

以如下可访问的方式构造代码。如果这对你来说是可能的

  • NodeProjs\Apps\MainApp\package.json

    {
        "name": "myapp",
        "dependencies": {
            "private-repo": "git+ssh://git@github.com:myaccount/myprivate.git#v1.0.0",
        }
    }
    
        {
            "name": "myapp",
            "dependencies": {
                "private-repo":
    "git+https://myteamname:aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myprivate.git",
            }
        }
    
  • NodeProjs\Modules\DataModule\package.json

    {
        "name": "myapp",
        "dependencies": {
            "private-repo": "git+ssh://git@github.com:myaccount/myprivate.git#v1.0.0",
        }
    }
    
        {
            "name": "myapp",
            "dependencies": {
                "private-repo":
    "git+https://myteamname:aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myprivate.git",
            }
        }
    
在MainApp@NodProjs\Apps\MainApp\

npm install --S ../../Modules/DataModule
您可能需要将package.json更新为:


这在我的情况下起到了作用。

我在私有github存储库中使用了以下内容:

npm install github:mygithubuser/myproject
很简单-

npm config set registry https://path-to-your-registry/
它实际上设置了
registry=”https://path-to-your-registry“
将此行发送给
/Users//.npmrc

您显式设置或默认设置的所有值都可以在npm配置列表中看到,这是:

为此,您可以使用Node.js中内置的轻量级专用npm代理注册表。它也是免费的、开源的。通过使用Verdaccio,它不会像普通的私有npm注册表那样麻烦

您可以找到有关如何安装和运行它的详细信息,但以下是步骤:

它需要
节点>=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存储库,可以在你配置它时以某种方式分发给其他人

path/to/somedir解决方案有点可行,但也有点糟糕,因为所有require语句都必须包含相对或绝对路径。如果我做错了什么,请纠正我…@卢克:是的,你错了。
npm安装后
所有文件都复制到项目目录中。因此,
require
语句中的路径将只与您的项目目录相关。我对上面的部分感到困惑,我没有亲自测试的唯一原因是我仍在学习,没有一个专用模块可以使用。无论如何,通过将目录更改为模块所在的位置