The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Нарушение обратной совместимости в популярном NPM-пакете привело к сбоям в различных проектах

16.01.2022 11:06

В репозитории NPM наблюдается очередной массовый сбой в работе проектов из-за возникновения проблем в новой версии одной из популярных зависимостей. Источником проблем стал новый выпуск пакета mini-css-extract-plugin 2.5.0, предназначенного для извлечения CSS в отдельные файлы. Пакет насчитывает более 10 млн еженедельных загрузок и используется в качестве прямой зависимости у более чем 7 тысяч проектов.

В новой версии были внесены изменения, нарушающие обратную совместимость при импорте библиотеки и приводившие к выводу ошибки при попытке использования ранее допустимой и описанной в документации конструкции "const MiniCssExtractPlugin = require('mini-css-extract-plugin')", которую при переходе на новую версию потребовалось заменить на "const MiniCssExtractPlugin = require("mini-css-extract-plugin").default".

Проблема проявилась в проектах, не применяющих явную привязку к номеру версии при подключении зависимостей. В качестве обходного пути решения проблемы рекомендовано зафиксировать привязку к прошлой версии 2.4.5 через добавление '"overrides": {"mini-css-extract-plugin": "2.4.5"}' в Yarn или использовав команду "npm i -D --save-exact [email protected]" в NPM.

В числе пострадавших оказались пользователи развиваемого компанией Facebook пакета create-react-app, подключающего mini-css-extract-plugin в качестве зависимости. Из-за отсутствия привязки к номеру версии mini-css-extract-plugin попытки запуска create-react-app завершались выводом ошибки "TypeError: MiniCssExtractPlugin is not a constructor". Проблема также затронула пакеты @wordpress/scripts, @auth0/auth0-spa-js, sql-formatter-gui, LedgerSMB, vip-go-mu-plugins, cybros, vue-cli, chore и т.д.

  1. Главная ссылка к новости (https://www.bleepingcomputer.c...)
  2. OpenNews: Разработчик внёс деструктивные изменения в NPM-пакеты colors и faker, применяемые в 20 тысячах проектов
  3. OpenNews: Уязвимость, позволявшая выпустить обновление для любого пакета в репозитории NPM
  4. OpenNews: В NPM-пакеты coa и rc, насчитывающие 9 и 14 млн загрузок в неделю, внедрено вредоносное ПО
  5. OpenNews: Незащищённость NPM к атакам по внедрению вредоносных модулей-червей
  6. OpenNews: Атака на зависимости позволила выполнить код на серверах PayPal, Micrоsoft, Apple, Netflix, Uber и ещё 30 компаний
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/56517-npm
Ключевые слова: npm, dependency
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (99) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Linuxoid85 (ok), 11:11, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +27 +/
    Никогда такого не было, и вот опять
     
     
  • 2.3, Корец (?), 11:14, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Не, в этот раз что-то новенькое, обычно только про уязвимости пишут.
     
  • 2.11, . (?), 11:58, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Помнити leftpad!

     
     
  • 3.19, anonymous (??), 12:29, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +11 +/
    Он и так весь помятый.
     
  • 2.69, AKTEON (?), 00:08, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Надо откатить на предыдущий интерфейс и заблокировать автора, чтоб неповадно было .хе-хе
     

  • 1.2, Онаним (?), 11:14, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +18 +/
    Отличная новость, побольше таких.
     
     
  • 2.10, OpenBotNET (ok), 11:45, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Вы - мазохист? Или любите на Gentoo экстримом заниматся?
     
     
  • 3.12, КО (?), 11:59, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Больше факапов с одной и той же нерешенной проблемой всегда приносит улыбку
     
     
  • 4.17, onanim (?), 12:16, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    "эту" проблему может решить только глобальный катаклизм типа термоядерной войны или какого-нибудь супервируса. но мало кто согласится на такое.
     
  • 3.14, Аноним (14), 12:08, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >экстримом заниматся?

    Это вы так круто "ждать ебилдов" завуалировали.

     

  • 1.4, бугурма (?), 11:32, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    вот это вот всё показывает на сколько беспечны бывают вот эти вот люди
     
     
  • 2.6, псевдонимус (?), 11:35, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Да им просто похер.
     

  • 1.5, псевдонимус (?), 11:34, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    >очередной массовый сбой в работе проектов из-за возникновения проблем в новой версии одной из популярных зависимостей.

    Не может быть!

     
  • 1.7, псевдонимус (?), 11:40, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    >В числе пострадавших оказались пользователи развиваемого компанией Facebook пакета

    Прекрасная новость!
    Пойду боярки накачу.

     
  • 1.8, Аноним (8), 11:41, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +12 +/
    Гитхаб уже заблокировал его аккаунт?
     
     
  • 2.30, Аноним (30), 12:54, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Ещё можно принять закон, чтобы наказывать опенсорсных и работающих за бесплатно программистов рублём и тюремным заключением. Только потом не надо удивляться, что программировать вообще никто не захочет.
     
     
  • 3.40, Аноним (-), 15:23, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    наказывать погромистов за убытки, если херак херак и прокдашин.
     
  • 3.53, Онаним (?), 19:14, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    В смысле начинать выплачивать им рублёвые зарплаты?
    Да, это достаточно страшная кара.
     

  • 1.9, pashev.me (?), 11:43, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Террористическое программирование.
     
     
  • 2.36, псевдонимус (?), 14:05, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Экстремистское же! "13000000 экстремистов" ;-)
     
  • 2.37, Аноним (37), 14:06, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нет, это копипасторское программирование. Если есть пример на stackoverflow, то читать документацию не нужно.
     
     
  • 3.80, pashev.me (?), 07:03, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А ты читал документацию? Что там написано по главной ссылке к новости?
     
  • 2.96, Злой Аноним (?), 15:08, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    JS-макак, JS-макак, кодер-террорист
    держит lint огромный в руке неоджесист
    JS-макак, JS-макак, делает push в npm
    дебаг без остановки выбирает мэн
     

  • 1.13, Аноним (13), 12:01, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    аминь
     
     
  • 2.58, Аноним (58), 20:39, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    земля пухом
     

  • 1.15, kusb (?), 12:13, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Башня из зависимостей. Глобальная. Связанная.
     
     
  • 2.52, Аноним (52), 18:52, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    UNIX-way же.
     
     
  • 3.56, Аноним (56), 20:18, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    dll-hell пошёл от микрософта.
     
     
  • 4.64, Аноним (64), 22:33, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    А туда, в свою очередь, пришёл из кучи разрозненных проектов, попадающих под определение так называемого "UNIX way"
     
  • 3.59, Аноним (58), 20:40, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это не юникс вей - это маразм.
     
  • 3.97, Злой Аноним (?), 15:11, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    unix-way - это когда suckless.org, а не когда leftpad.js.
     

  • 1.16, onanim (?), 12:14, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    не перестаю офигевать с объёмов загрузок.

    все эти "популярные NPM пакеты" качаются 10-100 раз _в секунду_. это ж охренеть можно, насколько быдлокодеры обыдлились, что не поставляют пакет со своим софтом, а каждый раз выкачивают заново.

     
     
  • 2.21, Аноним (21), 12:32, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Нормальные пакеты ставятся в систему и поддерживают совместимость только с последней версией.
     
     
  • 3.29, Аноним (29), 12:52, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нормальные пакеты не меняют свои интерфейсы спонтанно.
    А если меняют - выкатывают новую версию(грубо говоря сменил интерфейсы, сломал совместимость, сделал версию n+1).
     
     
  • 4.39, JL2001 (ok), 14:39, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Нормальные пакеты не меняют свои интерфейсы спонтанно.
    > А если меняют - выкатывают новую версию(грубо говоря сменил интерфейсы, сломал совместимость,
    > сделал версию n+1).

    так там версия сменилась
    но зависимые не указали версию либы и пакетменеджер скачал последнюю доступную

     
     
  • 5.49, Аноним (49), 17:58, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Там автор сменил не мажорную, а минорную версию.
     
     
  • 6.74, x3who (?), 01:19, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    так при мажорном апгрейле там может вовсе арзитектуру зависимых проектов поменять придется.
     
  • 2.31, another_one (ok), 12:55, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Это скорее всего системы непрерывной интеграции, которые собирают проект с нуля на каждый коммит (тестирование). Почему они не поднимают кэш пакетов локально - это вопрос к администраторам этих систем (привет, GitHub).
     
     
  • 3.51, Роман (??), 18:21, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    понятно почему - в статье на StackOverflow написано что скопипастить в .gitlab-ci.yml для запуска yarn на бесплатном gitlab-runner'e в докере, а как менеджить кэш, ttl и как вообще это вот всё - уже начинает "парить", интернет быстрый, проще скачать.
     

  • 1.18, Аноним (18), 12:20, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Костыльщики. Сначала всё в 1 упаковывают, потом экстрагируют. Но оно всё равно по нескольку мегабайт выкачивать будет при запуске сайта, да еще и это в браузер встраивают под видом приложений. "После нас хоть потоп. Я могу всё что угодно разработать, но только с импортами".
     
     
  • 2.20, Аноним (20), 12:31, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Сначала всё в 1 упаковывают, потом экстрагируют

    Логика в этом есть. Видишь ли, содержание CSS-файла прямо зависит от того, как его использует JavaScript. Именно JavaScript-часть приложения диктует, какие стили понадобятся в CSS, а какие нет. Если писать CSS вручную (даже при помощи SASS), в нем постепенно начнут накапливаться стили, которые в JavaScript никак не задействуются.

     
     
  • 3.25, Аноним (29), 12:40, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще, логика использования такого объема JS - сомнительна.
    Это не маразм типа нынешнего "майнинга"(не путать с нормальным(дата майнингом)) но тоже и море ресурсов в никуда, и толку мало.

    Не говоря уже о том что браузеры стали монстрами что жрут ресурсов(при 1 пустой странице) больше чем вся ОС.

     
     
  • 4.26, Аноним (20), 12:48, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > логика использования такого объема JS - сомнительна

    Большинство пакетов в node_modules (включая сабж) нужны только при сборке и в финальный бандл не попадают, а оставшаяся часть попадет в усеченном виде.

     
     
  • 5.98, Аноним (98), 16:37, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Большинство пакетов в node_modules (включая сабж) нужны только для того, чтобы было где спрятаться бэкдору.
     

  • 1.22, лолшто (?), 12:34, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    В проекте должен быть свой .npmrc, содержащий строку

    save-exact = true

    А так, конечно, веб - это карточный домик.

     
     
  • 2.54, Онаним (?), 19:15, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Картонная будка уже.
     
     
  • 3.73, Аноним (73), 01:06, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Кто внутри?
     
     
  • 4.81, псевдонимус (?), 09:47, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Почти все пользователи интернет.
     
  • 4.99, Онаним (?), 20:44, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Кто внутри?

    Хомячок. Возможно даже хомячки. И имя им - легион.

     

  • 1.23, YetAnotherOnanym (ok), 12:35, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Поэтому, если рассудок и жизнь дороги вам, держитесь подальше от средств, позволяющих программировать, не включая голову.
     
  • 1.24, Аноним (29), 12:35, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Я до реального погромирования так и не добрался(да и вообще все еще учусь), но везде в книгах и туторах говорится что как только "API"(в том числе и интерфейсы классов\библиотек) устаканен - его внезапно менять верх непрофессионализма.
    Тут или сиди на старой, или делай новую версию ПО, или новую версию API(v2, v3, ... vN). Ну или хотя-бы долби пол года ворнингами.
    Но лучше не менять.

    Почему все эти борцы за свободное ПО, GNUсы и прочие гитхабы не борются с плохим качеством опенсурса?

    Оно так то прикольно(я про гитхаб) - сломал удалив пакет - бан, сломал сменил API - пофиг(хотя-бы ачивку "мудак" давали бы).

     
     
  • 2.70, Ordu (ok), 00:22, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Читай внимательно новость Изменилось API, изменилась версия Но разрабам ведь в... большой текст свёрнут, показать
     
     
  • 3.71, Урри (ok), 00:49, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Спросите теоретика можно ли взломать RSA. И он ответит вам - "элементарно, просто факторизуйте вот это число". А теперь спросите практика...
     
  • 2.82, псевдонимус (?), 09:50, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Гляди как тебя заминусили омноклепы. Это люди без уважения к себе и своей работе. Правильно, учись делать хорошо. Плохо и так получится.
     
  • 2.104, arisu (ok), 12:27, 21/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > его внезапно менять верх непрофессионализма.

    ну так пусть требуют назад свои деньги.

     

  • 1.27, Аноним (29), 12:50, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Ха.
    А вот в Арче нельзя иметь 2 одинаковых пакета.
    И когда 1 пакет хочет пакет жопка.13* а второ хочет жопка.12* то жопка настает уже обновлению(пакетный манагер как бы говорит нам "я не могу затащить зависимости, чини их").
    В итоге часто что-то будет не обновлено(в игнор закинуто) потому что вот.

    А что-то обновится но отвалится от этого.
    Так то я За первые пол года на Арче узнал о линуксе больше чем за 20 лет до этого, даже онлайн курсы по линю прошел. Но это Линукс.

    А что даст подобная долботня с JS\Python\Подобным?

     
     
  • 2.60, Аноним (58), 20:42, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Но это Линукс.

    Осталоьс понять причем здесь линукс и пакетный менеджер конкретного дистра.

     

  • 1.28, Аноним (30), 12:50, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Не понимаю что происходит. Человек решил поменять API в своём собственном проекте и не хочет заниматься хаками и поддержкой легаси кода. Вместо того чтобы изменить одну строчку с импортом, все начали наезжать на него и учить жизни. Не пойти ли вам нафиг! Если у вас что-то сломалось, это ваши собственные проблемы, это опенсорс и вы не в магазине, чтобы предъявлять свои претензии.
     
     
  • 2.32, another_one (ok), 13:00, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Сменить строчку не проблема, проблема в том, что отломался весь существующий код, его использующий. Но это не критично, т.к. вроде используется только для билда проектов и на прод не попадет. По хорошему автору надо было всего лишь выставить версию "3.0.0". Событие не тянет на новость.
     
  • 2.34, Аноним (34), 13:10, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Баба Маня ежедневно бесплатно кормила тебя конфетами. Например, M&Ms. Однажды баба Маня заменила все коричневые конфеты козьими экскриментами и снова тебя покормила. Хорошо ли поступила баба Маня?
     
     
  • 3.41, Аноним 80_уровня (ok), 15:42, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Не так.
    Баба Маня ежедневно выкладывала на завалинку конфеты, а ты их бесплатно ел, проходя мимо.
    Но однажды баба Маня вместо конфет положила на завалинку козьи экскременты, а ты опять...
    Это баба Маня нехороший человек, правда ведь?
     
  • 3.42, Аноним (42), 15:57, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Баба маня оставляла конфеты на подоконнике, а ты их ежедневно оттуда брал не предоставляя ничего в замен. Баба маня решила рефакторнуть подоконник по собственным соображениям, так как это ее подоконник и на место конфет положила козинные ммдемсы, а конфеты положила на другой край подоконника.
     
     
  • 4.50, Аноним (34), 18:18, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Отвечаю сразу обоим:
    Баба Маня опубликовала код не у себя в локальном паразитории, а в публично доступном месте, созданном специально для распространения кода. Так что и оба раза мимо.
     
     
  • 5.75, x3who (?), 01:36, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Не ппавильная ана логия. Баба Маня вкладывала конфеты в фантике, а тут выложила в другоммфантике и ещё указала, что это другая версия подачки. Те, кто неглядя жрали конфеты прямо с фантиком, получили расстройство желудка.
     
  • 5.102, gogo (?), 14:26, 18/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Подоконник бабы Мани доступен публично.
    Вот только она конфеты не для тебя конкретно делала, а с целью покормить зеленю птичку. И не возражала, чтобы и ты их ел.
     
  • 3.95, john_erohin (?), 14:45, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    надо ввести правило типа закона Годвина:
    кто первый перешел на аналогии без КРАЙНЕЙ необходимости - тот лох и лузер.
     
  • 2.55, Онаним (?), 19:16, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Макаки удивились, обнаружив, что автообновление лефтпада может что-то сломать.
     
  • 2.63, kai3341 (ok), 22:24, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Проебахтунг тут только в одном -- следовало заморочаться обратной совместимостью, сохранив совместимость и с require, и с import. Но это, скорее, мне самому на будущее
     
     
  • 3.65, Онаним (?), 22:45, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Зачем, особенно если бесплатно? Проблемы end user, никто ничего никому не обещал.
     
     
  • 4.68, kai3341 (ok), 23:48, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    За шкафом. Разработчик не анонимен
     
     
  • 5.76, x3who (?), 01:40, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Отлично, можно ему задрнатить за бэкпорт фичей в ветку 2.4 если так надо что-то из 2.5, а дописывать ".default" чота лень.
     
     
  • 6.78, kai3341 (ok), 02:11, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Issue открыто: https://github.com/webpack-contrib/mini-css-extract-plugin/issues/896
    Называют они это временным workaround
    Открытых PR я не вижу
    Недоумеваю, как умудрился не сломаться билд нашего проекта
     
  • 5.100, Онаним (?), 21:12, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    И?
    Это не проблемы разработчика, он этот код предоставляет без каких-либо гарантий.
     
  • 3.84, псевдонимус (?), 09:54, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >следовало заморочаться обратной совместимостью, сохранив совместимость и с require, и с import

    Не, не стОит. Это для лохов.

     
  • 3.86, Аноним (86), 11:00, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > совместимость и с require, и с import

    В целях саморазвития: не подскажете, как это реализовать, учитывая, что импорт может содержать и определения типов, тогда как реквайр - только экспортируемый код?

     
  • 2.83, псевдонимус (?), 09:53, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вот и шел он нахер, очередной "никамунедолжный" п-ас вместе со своими мозговыми испражнениями.
     

  • 1.33, BrainFucker (ok), 13:09, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Проблема проявилась в проектах, не применяющих явную привязку к номеру версии при подключении зависимостей.

    Ну пофиксят эти проекты свои package.json, нашли проблему. Офигеть повод для новости.

     
  • 1.35, Аноним (35), 13:56, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Эффект домино? Как этого избежать?
     
     
  • 2.43, martyr.js (?), 16:19, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Дбавлять package-lock.json в систему контроля версий (напр. git).
    Тогда при установке зависимотей у пользовалетей (т.е. при выполнении 'npm install') будет устанавливаться зафиксированная версия.
    В противном случае может устанавливаться совместимая по semver (в зависимости от того, как зависимости указаны в других пакетах)

    https://docs.npmjs.com/cli/v8/configuring-npm/package-json#dependencies
    https://github.com/npm/node-semver#versions
    https://semver.org/lang/ru/

     
  • 2.44, Аноним (44), 16:20, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как избежать чего? Того что при обновлении библиотеки придётся обновить и использующий её код? Никак Это нормально. Не нормально это каждый раз выкачивать последнюю версию зависимостей и надеяться, что они не изменятся.
     
     
  • 3.57, Аноним (58), 20:38, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >  Не нормально это каждый раз выкачивать последнюю версию зависимостей и надеяться, что они не изменятся.

    По умолчанию выкачивается последняя совместимая по семверу. Другое дело, что авторы пакетов этот принцип нарушают.

     
     
  • 4.101, Онаним (?), 21:13, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А обещали где-то не нарушать? Покажите договор.
     
  • 2.45, Аноним (45), 16:25, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    пинить точные версии зависимостей, прогонять тесты в ci при их изменении, узнать что такое культура разработки и повысить ее
     
  • 2.66, Онаним (?), 22:46, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Не тянуть в рот свеженькое прямо из-под выхлопа.
     

  • 1.38, JL2001 (ok), 14:36, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    какие системы зависимостей имеют поле версии зависимости "проверенно рабочая версия зависимости"?
    чтоб можно было в случае проблем откатываться на эти версии автоматом
     
  • 1.46, Аноним (46), 17:00, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Потому что нужно использовать git submodule вместо всего этого мусора npm, pip, compose, git go
     
     
  • 2.47, Аноним (46), 17:01, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    вместо git go имел ввиду go get конечно же
     

  • 1.48, Kuromi (ok), 17:51, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    И что, сейчас опять забанят автора, потом откатят и конфискуют его пакет на соображениям "не допустим вандализма и разрушительных изменений"? Схема-то уже отработана.
     
     
  • 2.62, Аноним (58), 20:45, 16/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно забанят. Его бы еще прилюдно унизить нужно за незнание семвера.
     
     
  • 3.72, Урри (ok), 00:52, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Семвер уже несколько лет как не моден ибо не позволяет переставляя кровати делать вид, что ты что-то действительно меняешь.
     
     
  • 4.77, x3who (?), 01:49, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну новость тому иллюстрация - изменение не тянет на мажорную версию, хотя формально да - вон АПИ афигеть как драматически поменялось.
     

  • 1.67, Аноним (67), 23:40, 16/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    В качестве обходного пути решения проблемы рекомендовано сменить язык программирования
     
  • 1.79, Ананоним (?), 06:32, 17/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Попробовал я этот ваш NPM. Две программы пытался поставить, каждую раз 10, и так и сяк, не вышло. Как вы там вообще с этим живёте? Это ж сломано по проекту.
     
     
  • 2.90, ЖСразработчик (?), 12:07, 17/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Так и живём. Кактус хоть и колючий, но жрать его приходится!
     

  • 1.85, Аноним (85), 10:50, 17/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Чей это такое ваш "npm репозиторий". Ни разу не пользовался.
     
  • 1.87, Аноним (85), 11:10, 17/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Так, а куда смотрит команда гитхаба, срочно заблокировать учетку автора, и вернуть старую версию!
     
  • 1.88, Аноним12345 (?), 11:16, 17/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    нпм - зло
     
  • 1.89, Аноним (89), 11:29, 17/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Поменял версию - положил интернет. Как удобно!
     
  • 1.103, Аноним (103), 18:40, 20/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Использование NPM привело к сбоям в различных проекта.

    Для решения подобных проблем в будущем создана инициативная группа по геноциду NPM

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру