@kari_morozova

Добрый вечер! Пытаюсь установить vue.js глобально в проект. Но в терминале выдаёт ошибку permission denied, access. Сделала все команды, которые нашла в гугле и stack overflow, не помогает. У меня мак. Возможно, кто-то может со мной связаться и помочь. Буду очень благодарна

2022-03-25 18:47:38

@icerly

Если вы пытаетесь поставить npm пакет глобально (с флагом -g) то возможно потребуется запустить команду из-под sudo лучше использовать npx

2022-03-26 07:07:00

@p_himik

Решение на все случаи жизни - не устанавливайте пакеты NPM глобально. Никакие. Вот прям вообще.
Устанавливайте локально, а если они хотят, чтобы вы пользовались их командами, запускайте их через npx.

sudo использовать не надо. Мы про NPM говорим, а не про пакеты здорового человека.

2022-03-25 18:50:18

@icerly

Согласен, совет так себе, поторопился. Даже офф дока https://docs.npmjs.com/downloading-and-installing-packages-globally советует теперь использовать npx. Я просто давно фронт не трогал, отстал от трендов

2022-03-25 18:51:18

@p_himik

Если хочется душераздирающих историй, посмотрите новости последних недель по node-ipc. :)

2022-03-25 18:52:40

@icerly

Видел. Прискорбное сумашествие конечно :(

2022-03-25 18:53:07

@p_himik

И в глобальном плане это - не исключение, а следствие неадекватности экосистемы.
В данном случае, кстати, и без sudo можно неплохие проблемы заработать. Один знакомый уже зарёкся npm только внутри докера запускать.

2022-03-25 18:54:32

@alexeysetevoi

Дык, давно пора.

2022-03-25 19:53:10

@icerly

Система то адекватна на мой взгляд. А вот люди некоторые не очень и получаем случаи с node-ipc :) Сам npm вроде норм как экосистема. Или вы про модерацию говорите или что-то подобное?

2022-03-25 18:57:19

@stepanseliuk

Пакеты локать надо, а не последние выкачивать )) особенно на проде

2022-03-25 18:58:13

@icerly

Так вроде npm уже давно лочит версии, разве нет? Они же вслед за yarn побежали в этом плане почти сразу

2022-03-25 18:59:38

@stepanseliuk

Кто-то лок файл в гит не пушит ))

2022-03-25 19:00:29

@p_himik

Он-то лочит. Но работает это только если вы используете npm ci для CI/CD, а не npm i, как каждый первый. :)

2022-03-25 20:05:44

@saitonakamura

Ну вообще npm i писать будет только если в локфайле отсутствует необходимый пакет По идее такая ситуация возникать не должна, равно как отсутствие локфайла в принципе

2022-03-25 19:07:49

@p_himik

Неверно. Я вот только что проверил - в старом проекте запустил npm i. Внезапно package-lock.json поменялся.

npm ci отработал правильно - никакие файлы не поменялись.

2022-03-25 19:09:11

@saitonakamura

А какая версия npm и локфайла?

2022-03-25 19:11:14

@p_himik

8.1.2 и 1.

2022-03-25 21:54:21

@p_himik

Дополню, что integrity никаких пакетов не поменялся.
Я удивлён, если честно, но рассчитывать на подобное поведение я, конечно, не буду - история поведения npm в разных случаях не позволяет.

2022-03-25 19:23:11

@p_himik

Вы имели дело с пакетами в *nix и с Maven? В первом случае более чем суровая модерация, более строгие правила резолва. Во втором случае невозможность исполнения кода во время устрановки. Когда глобальное техническое решение даёт раздолье человеческому фактору, то такое решение лично я считать адекватным не могу.

2022-03-25 18:59:55

@icerly

С maven дела не имел, но и в pypi не упомню такого поведения (хотя и строгой модерации там также нет). Так что да, исполнение кода при установке, выглядит и правда не сильно безопасно.

2022-03-25 19:02:44

@p_himik

В PyPI это регулярно происходило и, я почти уверен, в какой-то степени происходит. Я давно ушёл из шоубизнеса плотной разработки на Питоне, но несколько лет назад было много шуму от того, что наконец нашли кучу пакетов, мимикрирующих под нормальные, но имеющие опечатки в имени - padnas вместо pandas, типа того. И код там был тоже такой, с "опечатками" - опять же, кто во что горазд.

2022-03-25 19:05:07

@saitonakamura

Есть и третий вариант, в ~ сделать что-то вроде .npm-global , прописать его в npmrc и path И пакеты сыты и файлы целы

2022-03-25 18:54:31

@p_himik

Можно, но сложно - больше движущихся частей, надо что-то настраивать, легко сломать. А человеку - видно же, - надо попроще.

2022-03-25 18:55:40

@saitonakamura

Ну cli конечно лучше через npx, согласен У меня глобально так всякие lsp стоят

2022-03-25 18:56:36

@stepanseliuk

Команду в студию )) которая не работает

2022-03-25 18:56:06

@kari_morozova

npm install -g @vue/cli

2022-03-25 19:07:59

@p_himik

Просто сделайте npm i @vue/cli, а потом, если что-то просит запустить команду от Vue (например, vue ui), добавляйте в начало npx (например, npx vue ui).

2022-03-25 19:10:19

@kari_morozova

Спасибо) сейчас попробую

2022-03-25 19:11:50

@stepanseliuk

Да как уже ответили, для -g нужно либо sudo (что опасно), либо npx вместо npm, либо в докере гонять

2022-03-26 05:50:04

@kari_morozova

Sudo не помогло)

2022-03-25 19:11:04