在package.json中定义私有registry

问题描述 投票:0回答:3

我们有一个基于 Sinopia

的私有 npm 存储库

我应该在

package.json
中定义什么,某些软件包将从 Synopia 而不是从全局 npm 存储库安装?

如果我从命令行安装它,我可以运行:

npm install <package_name> --registry <http://<server:port>

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

node.js npm package.json npm-private-modules
3个回答
33
投票

我知道的方法之一是通过 .npmrc 您还可以在项目内部使用 .npmrc

像这样设置配置

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

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

输出 YWRtaW46YWRtaW4xMjM=


1
投票

sinopia 的全部意义在于同时是私人

registry
proxy
。您可以使用 uplinks 从一个注册表入口点安装所有软件包。如果本地存储无法解决依赖性,Sinopia 可以路由到任何注册表。默认情况下,他指向
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
已不再维护。


0
投票

如果有人在 2024 年有同样的问题,您可以使用 Verdaccio(由 Juan Picado 等人维护的 Sinopia 叉,请参阅此处 他的答案)。 Himanshu sharma 的答案 使用 Verdaccio 也可以很好地工作。您不必在项目文件夹中的

.npmrc
文件中提供身份验证凭据,您可以使用 npm adduser --registry http://localhost:4873
进行身份验证
,并将凭据存储在主文件夹中的
.npmrc
中。

© www.soinside.com 2019 - 2024. All rights reserved.