Для чего нужна папка node_modules? - PullRequest
0 голосов
/ 07 августа 2020

Я хотел бы знать, что такое папка node_modules и для чего она нужна. Я знаю, что когда мы загружаем любую библиотеку с npm, библиотека переходит в node_modules, но я знаю, что когда мы собираемся загрузить ее в github, мы должны игнорировать папку node_modules, потому что она занимает много места. Через package. json мы можем загрузить все зависимости, используя npm i, у меня вопрос ... Скажем, я хочу развернуть свое приложение / веб-сайт на каком-то сервере / хосте, нужно ли мне также загружать папку node_modules на сервер ? И еще: обычно я загружаю свои jquery и bootstrap с веб-сайта и копирую в папку css / js внутри своего проекта, но на этот раз я пробовал с npm, и все переходит в node_modules, и я использую cordova, когда я выполняю команду cordova build, ни мой jquery, ни мой bootstrap не генерируются. Итак, мой вопрос: если я хочу разместить свой проект, действительно ли мне нужно загружать node_modules? а когда это cordova или ioni c, мне также нужно скопировать node_modules в www folder?, если да, то какой смысл использовать npm для загрузки библиотек? это как на самом деле это делается? Какой лучше? зайдя на сайт скачайте файл и вставьте внутрь www or скачать через npm?

1 Ответ

0 голосов
/ 07 августа 2020

Какова цель папки node_modules?

Вы можете думать о папке node_modules как о кэше для внешних модулей, от которых зависит ваш проект. Когда вы npm install их, они загружаются из Интернета и копируются в папку node_modules, а nodejs обучается искать их там, когда вы импортируете их (без указания c пути). Я называю это кешем, потому что папку node_modules можно полностью воссоздать с нуля в любое время, просто переустановив все зависимые модули (которые должны быть указаны в папках вашего проекта).

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

Это потому, что нет причин хранить копии всех ваших зависимых модулей в вашем собственном проект на github. Точная версия, которую вы использовали, известна и хранится в ваших package.json или package-lock.json, поэтому в любое время вы или кто-либо другой, использующий ваш проект, можете загрузить ваш код, а затем удалить все другие зависимые модули из их исходного источника (включая даже точно такие же версии, которые вы использовали). Итак, нет причин хранить отдельные дубликаты всех этих зависимых модулей в вашем собственном проекте. Это было бы расточительно и усложнило бы обновление до более новой версии всех этих зависимых модулей.

Итак, вот мой вопрос, если я хочу разместить свой проект, действительно ли мне нужно загружать node_modules как ну?

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

...