首页 文章

如何在没有自己的注册表的情况下安装私有NPM模块?

提问于
浏览
280

我已经采用了一些共享代码并将其放入NPM模块中,我不想将其上传到中央注册表 . 问题是,如何从其他项目安装它?

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

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

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

13 回答

  • 24

    在你的 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",
        }
    }
    
  • 6

    我可以只安装一个位于本地文件系统上的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)

    是不是很棒?

  • 3
    cd somedir
    npm install .
    

    要么

    npm install path/to/somedir
    

    somedir 必须包含 package.json .

    它也知道git:

    npm install git://github.com/visionmedia/express.git
    
  • 1

    Update January 2016

    除了其他答案之外,有时候您希望在团队环境中拥有私有模块 .

    GithubBitbucket 都支持生成团队 API Key 的概念 . 此API密钥可用作 password 来执行此团队的API请求 .

    在你的 private npm modules 添加

    "private": true
    

    到你的 package.json

    然后引用另一个模块中的私有模块,在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 .

  • 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"
    

    在这一个案例中,我为我工作,因为在我找到谷歌并找到答案之前,我是先尝试过的 . 其他答案就是我过去所做的 .

    希望这有助于其他人 .

  • 38

    我遇到了同样的问题,经过一番搜索后,我找到了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"
    }
    
  • 7

    以下面的可访问方式构建代码 . 如果这对您有用 .

    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"
    }
    

    这适用于我的情况 .

  • 475

    arcseldon's answer开始,我发现URL中需要团队名称,如下所示:

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

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

  • 2

    Npm现在提供无限private hosted modules,每月7美元/用户/月使用

    cd private-project
    npm login
    

    在你的包json设置 "name": " @username/private-project"

    npm publish
    

    然后要求你的项目:

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

    配置从公共Github存储库安装,即使机器在防火墙下:

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

    我将以下内容与私有github存储库一起使用:

    npm install github:mygithubuser/myproject
    
  • 229

    非常简单 -

    npm config set registry https://path-to-your-registry/
    

    它实际上将 registry = "https://path-to-your-registry" 这一行设置为 /Users/<ur-machine-user-name>/.npmrc

    您明确设置或默认设置的所有值都可以通过 - npm config list 看到

  • 1

    这是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
    

相关问题