Cli: [ОШИБКА] `npm pack` успешно завершается, даже если` main` отсутствует в пакете

Созданный на 15 мая 2020  ·  3Комментарии  ·  Источник: npm/cli

Что почему

Мы обнаружили это, когда один из внутренних пакетов нашей компании провел некоторый рефакторинг и переместил точку входа в другое место в репозитории, не забыв обновить main в package.json. Конечным результатом было то, что npm pack успешно создан и позволил опубликовать пакет, у которого не было шансов на правильную работу.

Когда

Когда npm pack и, следовательно, когда npm publish выполняются

Где

Как

Текущее поведение

npm pack не проверяет наличие main в архиве, что упрощает создание и публикацию пакетов, которые не могут быть использованы потребителями.

Действия по воспроизведению

  • Создать пустой каталог
  • npm init и шаг за шагом создайте все со значениями по умолчанию. Вы получите package.json вот так
{
  "name": "npm-repro",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
  • Запустите npm pack в этом каталоге и убедитесь, что tarball успешно создан.
npm notice
npm notice 📦  [email protected]
npm notice === Tarball Contents ===
npm notice 205B package.json
npm notice === Tarball Details ===
npm notice name:          npm-repro
npm notice version:       1.0.0
npm notice filename:      npm-repro-1.0.0.tgz
npm notice package size:  241 B
npm notice unpacked size: 205 B
npm notice shasum:        ca39bc17447e27ef2fd0dea656e0e6b473f310d7
npm notice integrity:     sha512-p8tZD8W438r7t[...]7Oo0YMcAoNPzQ==
npm notice total files:   1
npm notice
npm-repro-1.0.0.tgz

Не существует index.js , поэтому, если этот пакет когда-либо попытается использовать, он не сработает.

Ожидаемое поведение

  • npm pack завершится с ненулевым кодом выхода, что также приведет к сбою npm publish и предотвращению пакетов, чьи архивы не содержат main из package.json от публикации в реестре.

Кто

Наша компания столкнулась с этим при попытке публикации в нашем внутреннем реестре.

использованная литература

  • н / д

Самый полезный комментарий

Звучит разумно. По какой-то причине моя компания стала использовать npm pack для проверки успешности публикации. npm publish --dry-run , вероятно, лучший чек.

Все 3 Комментарий

Я не уверен, что это лучше подходит как ошибка для npm-packlist . Я не совсем уверен, как организация npm хочет сохранить разделение интересов между ними. Т.е. должен npm-packlist просто вслепую вернуть список файлов, которые следует попытаться включить без какой-либо проверки, и оставить проверку более высокого порядка в любых пакетах, которые хотят использовать функциональность npm-packlist ?

Это не работа npm-packlist, это работа npm publish всяком случае.

Звучит разумно. По какой-то причине моя компания стала использовать npm pack для проверки успешности публикации. npm publish --dry-run , вероятно, лучший чек.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги