根据目录切换npm注册表

gpr*_*ant 18 node.js npm

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

~/Code
|
| -- My Projects
| |
| | -- Proj 1 
| | -- Proj 2
|
|-- My Company
  |
  |--Proj 1 
  |--Proj 2
Run Code Online (Sandbox Code Playgroud)

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

ind*_*ero 18

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

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

    npm install mypackage --reg http://myreg.npmjitsu.com
    
    Run Code Online (Sandbox Code Playgroud)
  2. 发布:您也可以使用--reg--registry,但我强烈建议您使用文件中的publishConfig设置package.json(请参阅:npm文档)

    {
      "publishConfig": {
        "registry": "http://myreg.npmjitsu.com"
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    这可以防止开发人员忘记--registry标志而意外地将私有模块发布到公共注册表

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


小智 6

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

npm 最近添加了对每个包 .npmrc 文件的支持,应该可以满足您的需求。


Joh*_*ams 5

仅当您安装软件包时才需要注册表。当您希望从私有注册表安装时可以使用它。

npm install packagename --registry https://myregistryurl
Run Code Online (Sandbox Code Playgroud)

这也可能有效..

npm install https://myregistryurl/packagename
Run Code Online (Sandbox Code Playgroud)

当您使用公共注册表时,只需按正常方式安装即可。