在 package.json 中定义私有注册表

Posted

技术标签:

【中文标题】在 package.json 中定义私有注册表【英文标题】:Define private registry in package.json 【发布时间】:2017-12-28 23:59:51 【问题描述】:

我们有一个基于 Sinopia 的私有 npm 存储库

我应该在package.json 中定义哪些软件包将从 Synopia 安装,而不是从全局 npm 存储库安装?

如果我从命令行安装它,我可以运行:npm install <package_name> --registry <http://<server:port>

附:尝试谷歌并查看官方 NPM 文档,但一无所获。

【问题讨论】:

如何在 package.json 的依赖项中添加私有库的路径。 “依赖项”: :"git+ssh://git@bitbucket.org" 【参考方案1】:

我知道的一种方法是 .npmrc 您也可以在项目中使用 .npmrc

这样设置配置

registry = http://10.197.142.28:8081/repository/npm-internal/
init.author.name = Himanshu sharma
init.author.email = rmail@email.com
init.author.url = http://blog.example.com
# an email is required to publish npm packages
email=youremail@email.com
always-auth=true
_auth=YWRtaW46YWRtaW4xMjM=

auth 可以通过以下方式生成 用户名密码 echo -n 'admin:admin123' | openssl base64

输出 YWRtaW46YWRtaW4xMjM=

【讨论】:

我可以在我的源代码文件夹中创建一个 npmrc 文件吗? 是的。它的.npmrc 文件点也在那里。当我工作时,我把它放在 package.json 旁边。【参考方案2】:

sinopia 的全部要点是同时拥有一个私人registry 和一个proxy。您可以使用uplinks 从一个注册表入口点安装所有软件包。如果本地存储无法解决依赖关系,Sinopia 可以路由到任何注册表。默认情况下,他 points 到 npmjs

所以,如果你像这样设置配置

   # a list of other known repositories we can talk to
uplinks:
  npmjs:
    url: https://registry.npmjs.org/

packages:
  '@*/*':
    # scoped packages
    access: $all
    publish: $authenticated
    proxy: npmjs

  '**':
    # allow all users (including non-authenticated users) to read and
    # publish all packages
    #
    # you can specify usernames/groupnames (depending on your auth plugin)
    # and three keywords: "$all", "$anonymous", "$authenticated"
    access: $all

    # allow all known users to publish packages
    # (anyone can register by default, remember?)
    publish: $authenticated

    # if package is not available locally, proxy requests to 'npmjs' registry
    proxy: npmjs

您应该能够独立于每个依赖项的来源解决所有依赖项

顺便说一句:sinopia 已不再维护。

【讨论】:

以上是关于在 package.json 中定义私有注册表的主要内容,如果未能解决你的问题,请参考以下文章

配置package.json文件

在 package.json 中隐藏私有仓库的令牌

在 Github Actions 上从 package.json 安装私有 github 包

package.json 中带有版本的私有 bitbucket 存储库

在 `npm install` 之前用 dotenv 替换 .npmrc 中的 env 变量

Yarn 包管理器:从私有 Bitbucket 存储库安装依赖项