Est-il possible de contenir plusieurs registres pour la même portée? Dans ma compagnie, nous utilisons @mycompany
Poche pour le registre public de NPM ainsi que dans les registres internes.
J'ai essayé de faire
@mycompany:registry=https://company.registry.com
@mycompany:registry=https://registry.npmjs.org
mais cela n'a pas fonctionné.
Non tu ne peux pas. Malheureusement, npm
peut gérer qu'un seul registre des pairs. Mais vous pouvez utiliser un proxy comme Verdaccio pour cela qui gère la distribution pour vous. https://verdaccio.org/docs/fr/uplinks
Je vais vous moquer d'un exemple de configuration à l'aide de Verdaccio :
Je me suis moqué d'un "registre d'entreprise" sans accès externe ( http: // localhost: 5000 / ).
storage: /Users/test/.local/share/verdaccio/storage_company_registry
auth:
htpasswd:
file: ./htpasswd
packages:
'@*/*':
access: $all
publish: $authenticated
'**':
access: $all
publish: $all
middlewares:
audit:
enabled: true
logs:
- {type: stdout, format: pretty, level: http}
Comme vous pouvez le constater, aucune télécommande (liaison montante) configurée, elle est complètement hors ligne.
Alors je vais courir ma proposition, verdaccio ( http: // localhost: 4873 / ) qui demandent d'abord au registre de la société et si le colis n'est pas trouvé là-bas, va chercher du registre public (NPMJS).
storage: /Users/test/.local/share/verdaccio/storage_proxy
auth:
htpasswd:
file: ./htpasswd
uplinks:
npmjs:
url: https://registry.npmjs.org/
company:
url: https://company.registry.com
packages:
'@company/*':
access: $all
publish: $authenticated
proxy: company npmjs
'**':
access: $all
publish: $authenticated
proxy: npmjs
middlewares:
audit:
enabled: true
logs:
- {type: stdout, format: pretty, level: http}
En tant que POC (je chante @company par @babel) je cours npm install @babel/types --registry http://localhost:4873/
. Le résultat est le suivant
warn --- config file - /Users/test/.config/verdaccio/config.yaml
warn --- Plugin successfully loaded: htpasswd
warn --- Plugin successfully loaded: audit
warn --- http address - http://localhost:4873/ - verdaccio/4.0.0-alpha.4
http --> 404, req: 'GET http://localhost:5000/@babel%2Ftypes' (streaming)
http --> 404, req: 'GET http://localhost:5000/@babel%2Ftypes', bytes: 0/43
http --> 200, req: 'GET https://registry.npmjs.org/@babel%2Ftypes' (streaming)
http --> 200, req: 'GET https://registry.npmjs.org/@babel%2Ftypes', bytes: 0/93375
http <-- 200, user: null(127.0.0.1), req: 'GET /@babel%2ftypes', bytes: 0/22072
http --> 200, req: 'GET https://registry.npmjs.org/esutils' (streaming)
http --> 200, req: 'GET https://registry.npmjs.org/esutils', bytes: 0/23169
http <-- 200, user: null(127.0.0.1), req: 'GET /esutils', bytes: 0/3854
http --> 200, req: 'GET https://registry.npmjs.org/to-fast-properties' (streaming)
http --> 200, req: 'GET https://registry.npmjs.org/to-fast-properties', bytes: 0/8239
http <-- 200, user: null(127.0.0.1), req: 'GET /to-fast-properties', bytes: 0/1725
http --> 200, req: 'GET https://registry.npmjs.org/lodash' (streaming)
http --> 200, req: 'GET https://registry.npmjs.org/lodash', bytes: 0/185410
http <-- 200, user: null(127.0.0.1), req: 'GET /lodash', bytes: 0/14307
http <-- 200, user: null(127.0.0.1), req: 'POST /-/npm/v1/security/audits/quick', bytes: 474/146
Votre gestionnaire de packages de nœud parlera (- http: // localhost: 4873 / ) et Verdaccio essaiera FO FETCH Package à partir du registre interne, le résultat est 404, dans la seconde itération cherchera le package de NPMJS, résultant en 200.
Avoir un registre de proxy rend le processus plus transparent pour votre équipe, tout est centralisé et plus efficace, IHMO.
J'espère que cela aide.