Что такое node_modules каталог в AngularJS?
Я изучаю проект AngularJS и нашел, что он имеет node_modules
каталог внутри, размер которого составляет 60 мегабайт.
Простой клиентский javascript-проект действительно нуждается в таком огромном корпусе неизвестных данных?
Я попытался удалить этот каталог, и проект все еще работает. Я подозреваю, что это как-то связано с node.js
и это npm
, но как? Предположим, мне нужно запустить мой проект на каком-то обычном веб-сервере (не node.js), то как узнать, какие файлы/каталоги не нужны?
Многим библиотекам javascript требуется использовать беседку для их установки. Если я использую беседку, значит ли это, что мне нужно сохранить node_modules
?
Ответы
Ответ 1
Каталог node_modules
предназначен только для инструментов сборки.
Файл package.json
в корне приложения определяет, какие библиотеки будут установлены в node_modules
при запуске npm install
.
Очень часто с приложением angular на вашей машине разработчика или на сервере сборки вы используете другие библиотеки Javascript из npm (менеджер пакетов node.js) для создания своего приложения angular. Задачи могут заключаться в конкатенации ресурсов, с использованием препроцессоров CSS, таких как LESS или SASS, минимизации, замены значений и т.д. И т.д. Наиболее распространенными инструментами для управления и запуска этих задач называются grunt и gulp, которые также устанавливаются через npm.
При развертывании приложения вы распространяете только собранную сборку, а не на исходные файлы или инструменты сборки.
Конечно, можно написать приложение AngularJS, не создавая ничего.
отредактируйте из комментариев: когда вы погружаетесь в angular больше, есть более сложные методы использования библиотек, установленных на npm даже в клиентском приложении, тогда вы выборочно выбираете те, которые вам нужны, а не все 50MB+. Я бы рекомендовал оставаться с базовыми подходами, пока вы не поймете их хорошо.
Ответ 2
NPM - это менеджер пакетов node, который локально устанавливает пакеты в проект, в частности, в папку node_modules
. Оттуда код пакета может быть включен в проект, да, может это важное слово.
В браузере нет способа включать модули в код (пока), поэтому вам нужно использовать библиотеку, которая может выставлять модули стиля node commonJS. Browserify и Webpack - два популярных способа сделать это.
Angular усложняет это, введя свою собственную модульную систему, которая более близко напоминает модули в стиле AMD. Есть способы обойти это, так что вы можете использовать node -стильные модули, возможно, ваш проект использует их.
Использование npm
для управления зависимостями - отличная идея, это фантастический менеджер пакетов. Вероятно, в вашем случае, что проект построен только с помощью node
и что папка node_modules
содержит зависимости, относящиеся только к сборке.