Мне любопытно узнать, почему, когда я создаю новый проект Aurelia, каждый проект устанавливает +600 node_modules. Понятно, что модули коллективно не занимают много места, но нужны ли все эти модули? У меня создалось впечатление, что цель Aurelia заключалась в том, чтобы помочь разработчикам отойти от зависимости от сторонних библиотек, поэтому кажется странным, что каждый проект поставляется с массивным дампом сторонних библиотек.Почему Aurelia устанавливает столько зависимостей?
ответ
Я предполагаю, что вы запускаете свой проект из CLI - который поставляется с предустановленным HTTP-сервером, ES6/2015, SASS, перепрограммированием и другими.
Я создал чистый проект Aurelia и посмотрел на package.json - было 5 зависимостей и 34 зависимостей dev. Использование всех вышеперечисленных инструментов несколько стандартизировано в современной веб-разработке JS, а генерация проекта из CLI сокращает время, необходимое для предварительной настройки. Все эти функции имеют свои собственные зависимости, поэтому папка node_modules/
быстро растет.
Суть в том, что вы можете начать новый проект Aureila с гораздо меньшим количеством зависимостей. На их домашней странице вы найдете starter project всего три. Но это также означает, что у вас не будет доступа к большинству инструментов, используемых сегодня.
Кроме того, и исправьте меня, если я ошибаюсь, у меня не сложилось впечатление, что Aurelia когда-либо стремилась переместить разработчиков из сторонних библиотек и модулей, чтобы быть современными, быстрыми и ненавязчивыми.
Отличный и абсолютно правильный ответ! –
Да, определенно, используя CLI. Мое замешательство с моим сторонним заявлением происходит от прослушивания Роба Эйзенберга по протоколам Hansel Minutes и чтения его сообщения [здесь] (http://eisenbergeffect.bluespire.com/introducing-aurelia/). Я новичок в Aurelia, поэтому моя первоначальная реакция заключалась в том, что он имел в виду сторонние библиотеки, но теперь я полагаю, что он имел в виду, что основная структура Aurelia не имеет сторонних зависимостей? –
Все современные веб-каркасы имеют множество инструментов. Причины в каком-либо конкретном порядке:
1. Пересылка ESNext или TypeScript - если вы хотите писать в будущем JavaScript, но работать он во всех браузерах, вам нужен этот шаг. Оба инструмента Babel и TypeScript поставляются с дополнительными материалами. Если вы хотите увидеть покрытие (у всех есть), есть еще один инструмент.
2. Тестирование - Тестирование модулей и тестирование конца до конца требуют тестирования фреймворков, тестовых бегунов, и если вы хотите написать, как указано выше (esnext или TypeScript), вам также необходимо перевести.
3. Модуль загрузки/Группирование - Require.js, JSPM/System.js, WebPack и т.д ... используются, чтобы ваш код на самом деле запустить в браузере. Без загрузчика модуля вы не смогли бы разбить свой код на отдельные файлы. Без комплектатора вы будете загружать много дополнительных файлов в производство.
4. Обслуживание вашего приложения - Если вы хотите запускать свое приложение локально, вам необходимо подать его и посмотреть на изменения.
5. Отладка - Вы хотите отладить? Теперь вам нужен способ отладки файла, который будет отправлен в браузер обратно к исходному источнику.
6. Linting - Настройте кодовую базу для консистенций стиля.
Каждый из этих пакетов обычно имеет свои собственные зависимости, и их также сбрасывают.
Это соглашение небольших пакетов, которые имеют один фокус, возможно, лучше, чем массивные пакеты, которые делают все для вас. Это позволяет удалить пакет и заменить его тем, который делает то же самое, но так, как вы этого хотите.
- 1. Почему Джасперу требуется столько зависимостей?
- 2. Aurelia обновления зависимостей свойств
- 3. Почему npm устанавливает столько модулей с этим пакетом. Json?
- 4. Windsor не устанавливает зависимостей
- 5. Maven не устанавливает зависимостей
- 6. NPM не устанавливает зависимостей
- 7. `npm install` устанавливает десятки зависимостей
- 8. Что такое контейнеры в инъекции зависимостей Aurelia
- 9. Инъекция зависимостей Aurelia при создании объектов
- 10. Почему у Ruby столько увольнений?
- 11. Почему CanxxxCommandExecute запускается столько раз?
- 12. Почему Cascade возвращает столько лиц?
- 13. Почему MongoDB занимает столько места?
- 14. Почему браузеры используют столько памяти?
- 15. Почему Джулия выделяет столько памяти?
- 16. Почему cassandra использует столько CPU
- 17. Почему createCriteria возвращает столько объектов?
- 18. Почему CATextlayer использует столько памяти
- 19. Почему композитору нужно столько памяти?
- 20. Почему Вудсток занимает столько памяти?
- 21. Почему Шеф требует столько атрибутов?
- 22. Почему AFNetworking Употребляет столько памяти?
- 23. Если Aurelia понимает «импорт», зачем использовать инъекцию зависимостей?
- 24. Почему cognos занимает столько времени, чтобы установить?
- 25. Почему приложения Cocoa используют столько памяти?
- 26. Почему этот метод занимает столько памяти?
- 27. Почему команда «meteor deploy» загружает столько данных?
- 28. Почему менеджер контента занимает столько кучи?
- 29. Почему применение JSON.stringify занимает столько памяти?
- 30. Почему UTF-8 тратит столько битов?
90% этих node_modules являются инструментами построения. Хотя они не нужны, они могут облегчить вашу жизнь. –