Библиотека Publi sh angular на предприятии - PullRequest
2 голосов
/ 29 марта 2020

Когда у меня настроен репозиторий npm на предприятии JFrog, создаются следующие 5 npm репозиториев:

npm-local
npm-release local
npm-generic-local
npm-central
npm-central-cache

И всякий раз, когда я пытаюсь опубликовать библиотеку sh angular с помощью npm publi sh команда, которую я могу получить sh артефактов в npm -local хранилище. Но когда я пытаюсь выполнить установку npm (в пакете. json упоминаются оба publi c и наши зависимости), выдает ошибку 404 not found , похоже, что она не может вытащить publi c артефакты из npmjs реестра ссылка .

Точно так же я могу получить артефакты publi c из npmjs реестра, если я указываю на npm -central хранилище в JFrog, но не могу опубликовать sh нашу angular библиотеку там. Выдает 400 ошибочных запросов. (Ниже журналы ошибок)

18 http fetch PUT 400 <JFrog_Url>/api/npm/npm-release-local/@ca-platform%2fcore 1592ms
19 verbose stack Error: 400 Bad Request - PUT <JFrog_Url>/api/npm/npm-release-local/@ca-platform%2fcore
19 verbose stack     at res.buffer.catch.then.body (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-registry-fetch\check-response.js:104:15)
19 verbose stack     at process._tickCallback (internal/process/next_tick.js:68:7)
20 verbose statusCode 400
21 verbose pkgid @ca-platform/core@1.0.0
22 verbose cwd C:\Decomposition Projects\ca-ui-platform\ca-ui-platform\dist\core
23 verbose Windows_NT 10.0.17763
24 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "publish"
25 verbose node v10.19.0
26 verbose npm  v6.13.4
27 error code E400
28 error 400 Bad Request - PUT <JFrog_Url>/api/npm/npm-release-local/@ca-platform%2fcore
29 verbose exit [ 1, true ]

Может кто-нибудь, пожалуйста, помогите мне понять, в каком npm хранилище я должен указать в JFrog, чтобы я мог pu sh наших библиотеки, а также извлекать артефакты publi c из того же репозитория npm.

PS: Я использую приведенную ниже конфигурацию в файле .npmr c для указания на любой npm хранилище в JFrog:

strict-ssl=false
registry=<JFrog_Url>/api/npm/npm-central/ 
_auth = <auth_token>
email = <email-id>
username= <username>
always-auth=true

1 Ответ

3 голосов
/ 29 марта 2020

npm -local npm -release local npm -generi c -local - все локальные репозитории из моего понимания. Вы можете опубликовать sh и загрузить пакеты из локальных репозиториев в Artifactory.

Однако npm -central - это удаленный репозиторий, который указывает на npmjs .com. Удаленные репозитории позволяют вам проксировать вышестоящий поток (в данном случае npmjs), но они не позволят вам публиковать в нем новые пакеты.

Вы хотите иметь возможность публиковать sh и разрешать (т.е. загружать) пакеты из одного репозитория, и именно здесь вступают в игру виртуальные репозитории.

Виртуальные репозитории позволяют вам объединять один или несколько локальных, удаленных и даже виртуальных репозиториев в одном репозитории и тем самым предоставлять вам доступ ко всем вашим пакетам во всех вышеупомянутых репозиториях. Это позволит вам загружать и публиковать пакеты.

Поэтому я предлагаю создать виртуальный репозиторий> агрегат npm -local и npm -central, например (вы можете добавить все удаленные и локальные репозитории, которые вы добавили)> указать хранилище развертывания по умолчанию это локальный репозиторий, в котором будут храниться опубликованные пакеты (т. е. когда вы используете команду 'npm publi sh')> обновить файл .npmr c (не забудьте сделать 'npm войти в новый виртуальный репозиторий).

Таким образом, у вас будет один (виртуальный) репозиторий, позволяющий загружать пакеты из npmjs (и пакеты в ваших локальных репозиториях) и публиковать пакеты в выбранном вами локальном репозитории.

...