Структура пакета NPM

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 ม.ค. 2025

ความคิดเห็น • 22

  • @kostyaji5197
    @kostyaji5197 7 ปีที่แล้ว +7

    CONTENTS
    0:00 заглядываем внутрь пакета
    0:40 поля name, description, version
    2:47 установка пакета с github
    3:17 установка скачанного пакета
    3:36 поля author, contributors, dependencies
    4:37 номер версии в dependencies
    5:32 поле devDependencies
    6:30 поля keywords, repository, main, scripts
    7:55 заключение

  • @Disorrder
    @Disorrder 8 ปีที่แล้ว +9

    Хотел оставить небольшой ехидный комментарий, а получилась целая рецензия :) Будет полезно новичкам.
    Вообще, есть обратная сторона медали зависимостей. Когда ставишь, скажем, babel, они у себя использует довольно большое количество модулей, каждый из которых тоже имеет зависимости, каждый из которых... Ну, вы поняли. И это дерево может распространяться сколь угодно глубоко. И тот же babel, установленный в windows, так просто не удалить, потому что система не поддерживает такие длинные имена файлов. Надо перенести слишком глубокие файлы на несколько уровней выше, а затем уже удалять.
    И таким образом директория Node_modules разрастается на десятки тысяч файлов. Для сборщика, который использует gulp, webpack, babel, jade и stylus загружается около 120 000 файлов и занимает это хозяйство 300-400 мб на диске. Серьёзно, это всего лишь сборщик! Там даже тестов нет! А если ставить karma, mocha, что, я полдиска займу этими микрофайлами?)
    А если у меня 10 таких проектов? (на самом деле, за 3 года работы гораздо больше) Конечно, я могу поставить node_modules на уровень выше, скажете вы, но! Пока я закончу один проект, модули обновятся, в следующем проекте я буду использовать более новые их версии, скорее всего. И в каждом будет примерно одинаковый сборщик на gulp с копией всех своих зависимостей. В общем, это самый настоящий файловый кошмар.
    А если это не babel, а, скажем, Three.js?! У него 30к коммитов в репозитории, 15 МЕГАБАЙТ исходников, имеет у себя около 2000 файлов и вообще, сам по себе он устанавливается минуты две. А есть ещё a-frame, который использует Three.js. Вуаля, у меня два three.js в проекте! (на самом деле, нет, ведь после a-frame three.js ставить не обязательно, он используется внутри и выводится в глобальную область видимости, но всё равно!)
    Кстати, про Three.js: все эти мегабайты и тысячи файлов на самом деле не исходники, а примеры и они указаны в ignore, так что de jure эти файлы не попадают в файловую систему и не записываются на диск, но по факту npm всё равно обязан скачать весь пакет и только потом отфильтровать ненужные файлы. А трафик-то идёт!
    Как искать выход из ситуации с такой архитектурой, я не знаю :))
    ЗЫ.: Конечно, теперь npm немного изменил свою политику установки зависимостей. Теперь какие-то общие модули (или самые свежие, я пока так и не понял) устанавливаются в каталог проекта, а если другие модули используют те же зависимости, то заново они не скачиваются и не устанавливаются, а используются уже установленные. Но! Всё же, если версия не самая свежая, то устанавливается по-старому. Так что проблема решена лишь частично.

    • @q123zxcv4
      @q123zxcv4 7 ปีที่แล้ว

      Спасибо от новичка. Так получается nodejs не так хорош, как говорят ?

  • @АлексейМ-ч6ю9ш
    @АлексейМ-ч6ю9ш 9 ปีที่แล้ว +3

    Пытался повторять действия, возникли проблемы (win7):
    В своем пакете my_chat в .json прописал как в видео на 5:20-530: ..."dependencies": { "express" : "3" }..., но nmp установил все в my_chat/node_modules (создал там десятки папок, в т.ч. my_chat/node_modules/express), а не в my_chat/express/node_modules.
    Кроме этого после "nmp i my_chat" я мог найти свой модуль на сайте, а также мог установить его в произвольную папку с помощью "npm i my_chat", НО я не мог найти его с помощью "npm s mt_chat".

  • @АлексейМ-ч6ю9ш
    @АлексейМ-ч6ю9ш 9 ปีที่แล้ว +1

    Прошу прощения за опечатки в предыдущем комментарии. "npm s my_chat" ничего не находило (сейчас и не найдет, т.к. я сделал unpublish пакета, чтобы не засорять репозиторий).

  • @materna432
    @materna432 7 ปีที่แล้ว +1

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

  • @Илья-х8з9ъ
    @Илья-х8з9ъ 8 ปีที่แล้ว +1

    репозитОрий же

  • @DemiGoodUA
    @DemiGoodUA 9 ปีที่แล้ว +7

    Express поставил свои модули в общую node_ modules, это нормально?

    • @yupe_team
      @yupe_team 8 ปีที่แล้ว +2

      +Cop pop аналогично, думаю что за 3 года в node много изменилось =)

    • @АндрейУсков-х1т
      @АндрейУсков-х1т 7 ปีที่แล้ว

      аналогичная ситуация, и не только с модулем express

  • @yakut54
    @yakut54 6 ปีที่แล้ว +1

    блин, всё работает!!!! =) я в шоке!

    • @EvilYou
      @EvilYou ปีที่แล้ว

      Все работает и спустя 5 лет после твоего коммента :)
      P.S. npm help json выдает ошибку только

    • @yakut54
      @yakut54 ปีที่แล้ว

      @@EvilYou 🤝

    • @yakut54
      @yakut54 ปีที่แล้ว +1

      @@EvilYou Круто!

  • @SergeyTish
    @SergeyTish 8 ปีที่แล้ว

    Кажется автор не упомянул о том, как обновлять версии своих модулей, опубликованных на NPM... Подскажите, пожалуйста, кто-нибудь, как это делается...а то в знании остался пробел.

    • @ARMALON87
      @ARMALON87 8 ปีที่แล้ว

      npm up
      ?

    • @ADFrozz
      @ADFrozz 8 ปีที่แล้ว

      В предыдущем ролике.

  • @docean9946
    @docean9946 8 ปีที่แล้ว +17

    Попов поставил дизлайк

    • @kingarthur7898
      @kingarthur7898 8 ปีที่แล้ว

      Nifiga, ya like postavil

    • @vasya8441
      @vasya8441 6 ปีที่แล้ว

      3 попова ахахах

  • @dima3812
    @dima3812 11 ปีที่แล้ว

    на 4,55-5,00 автор пошел покурить))

  • @armeniangamer2052
    @armeniangamer2052 7 ปีที่แล้ว

    эти уроки явно не для новичков.....