Версия NPM изменяется при отправке в локальное хранилище артефактов. - PullRequest
1 голос
/ 30 сентября 2019

С тех пор, как мы обновили Artifactory до версии 6.12.1, при публикации наших пакетов node.js появилось новое поведение. Вот как в основном выглядит наш package.json (некоторые данные были изменены для обеспечения конфиденциальности):

{
  "name": "@org/module-test",
  "version": "1.0.0-12345",
  "description": "Module's description",
  "scripts": {
     <scripts>
  },
  "repository": {
    "type": "git",
    "url": "<git repo url>"
  },
  "license": "UNLICENSED",
  "devDependencies": {
    "husky": "^1.3.1"
  },
  "publishConfig": {
    "registry": "https://<artifactory_url>/api/npm/npm-local/",
    "_auth": "<API token>"
  },
  "files": [
    "<app-folder>"
  ],
  "husky": {
    "hooks": {
      <several hooks>
    }
  }
}

Важной частью здесь является параметр версии. Если я выполню npm publish, в этой конфигурации все будет работать нормально, а файлы json и tgz имеют одинаковое имя. Однако, когда версия выглядит следующим образом:

"version": "1.0.0-123abc"

Имя файла tgz как таковое, но версия на вкладке npm info и соответствующая json файлы записываются так:

module-test-1.0.0-123-abc.json

Каждый раз, когда в версии есть цифры и буквы в этом формате, добавляется тире (-), что мешает нам автоматизировать наши конвейеры, использующие эти пакеты. Это проблематично, потому что мы вводим наши хиты git commit в качестве номера версии, поэтому всякий раз, когда хеш начинается с цифр и начинается с букв, проблема возникает.

Проблема не возникала в нашей предыдущей версии 6.1.0. Никаких существенных различий между предыдущим и фактическим конфигом нет, что касается репозиториев npm. Несмотря на проблемный номер версии, в файле event.log показано следующее:

1569867062896|create|npm-local/@org/module-test/-/@org/module-test-1.0.0-123abc.tgz
1569867062896|props|npm-local/@org/module-test/-/@org/module-test-1.0.0-123abc.tgz
1569867062896|create|npm-local/.npm/@org/module-test/@org/module-test-1.0.0-123-abc.json
1569867062896|props|npm-local/@org/module-test/-/@org/module-test-1.0.0-123abc.tgz
1569867063055|props|npm-local/@org/module-test/-/@org/module-test-1.0.0-12abc.tgz

Как мы видим, изменено только имя файла json.

Проблема исчезнет, ​​если мы вставим символьную строку между основной версией и subversion, например, так:

"version":"1.0.0-string-123abc"

Это должен быть временный обходной путь, поскольку он не"чистый" идентификатор версии по нашим стандартам.

Не уверен, что это связано, но это макет репозитория npm-default, используемый репозиторием npm-local:

<repoLayout>
            <name>npm-default</name>
            <artifactPathPattern>[orgPath]/[module]/[module]-[baseRev](-[fileItegRev]).tgz</artifactPathPattern>
            <distinctiveDescriptorPathPattern>false</distinctiveDescriptorPathPattern>
            <folderIntegrationRevisionRegExp>.*</folderIntegrationRevisionRegExp>
            <fileIntegrationRevisionRegExp>.*</fileIntegrationRevisionRegExp>
</repoLayout>

Документацияиз repoLayout можно найти здесь

Мы бы хотели, чтобы файл json, архив tgz и идентификатор версии оставались неизменными, независимо от того, какой может быть номер версии. Почему эта черта добавлена, мы не знаем, но нам нужно, чтобы она исчезла. Это новая конфигурация, о которой мы не знаем, или ошибка?

1 Ответ

2 голосов
/ 03 октября 2019

Эта проблема появилась в недавнем выпуске. Мы планируем исправить это в одном из следующих выпусков. Вы можете следовать https://www.jfrog.com/jira/browse/RTFACT-20247 для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...