根据目录切换npm注册表

时间:2013-09-25 13:46:45

标签: node.js npm

我最近开始为节点开发。我工作的公司有一个内部的npm注册表。我想知道如何使用不同的注册表设置取决于我正在开发的位置。为了说明,我有一个如下所示的目录结构:

~/Code
|
| -- My Projects
| |
| | -- Proj 1 
| | -- Proj 2
|
|-- My Company
  |
  |--Proj 1 
  |--Proj 2

当我在“我的项目”中的一个项目中进行开发时,我希望npm注册表指向https://registry.npmjs.org(默认注册表)。但是,当我在“我的公司”中的一个项目中进行开发时,我希望npm注册表指向公司特定的注册表。现在,我的天真方法是使用 npm config set registry更新注册表。

3 个答案:

答案 0 :(得分:17)

使用私有npm注册表有两个不同的用例:

  1. 安装:使用--reg--registry标记:

    npm install mypackage --reg http://myreg.npmjitsu.com
    
  2. 发布:您也可以使用--reg--registry,但我强烈建议您使用publishConfig设置package.json 1}}文件(参见:the npm documentation

    {
      "publishConfig": {
        "registry": "http://myreg.npmjitsu.com"
      }
    }
    

    这可以防止开发人员忘记--registry标记

  3. 意外地将私有模块发布到公共注册表中

    因此,当从他们的私人npm进行安装时,请将publishConfig添加到公司使用package.json的所有--registry

答案 1 :(得分:2)

只有在安装软件包时才需要注册表。当您希望从私人注册表安装时,可以使用此方法。

npm install packagename --registry https://myregistryurl

这也可能有用..

npm install https://myregistryurl/packagename

并在您使用公共注册表时安装正常方法。

答案 2 :(得分:2)

https://github.com/npm/npm/issues/4751

npm最近添加了对每个包.npmrc文件的支持,应该做你想要的。