Как лучше всего связать Angular (версии 2, 4, 6, ...) для производства на живом веб-сервере.
Пожалуйста, включите версию Angular в ответы, чтобы мы могли лучше отслеживать ее при переходе к более поздним версиям.
Как лучше всего связать Angular (версии 2, 4, 6, ...) для производства на живом веб-сервере.
Пожалуйста, включите версию Angular в ответы, чтобы мы могли лучше отслеживать ее при переходе к более поздним версиям.
Ответы:
2.x, 4.x, 5.x, 6.x, 7.x, 8.x, 9.x
(TypeScript) с угловым CLIНастройка OneTime
npm install -g @angular/cli
ng new projectFolder
создает новое приложениеШаг связывания
ng build --prod
(запускается в командной строке, когда каталог естьprojectFolder
)Пометить
prod
комплект для производства (см. документацию Angular для списка опций, включенных в производственный флаг).Сжатие с использованием Brotli, сжатие ресурсов с помощью следующей команды
for i in dist/*; do brotli $i; done
пакеты по умолчанию генерируются в projectFolder / dist (/ $ projectFolder для 6)
Вывод
Размеры с Angular
9.0.0
с CLI9.0.1
и опцией CSS без угловой маршрутизацииdist/main-[es-version].[hash].js
Ваше приложение в комплекте [размер ES5: 158 КБ для нового приложения Angular CLI пусто, сжато 40 КБ ].dist/polyfill-[es-version].[hash].bundle.js
связанные с полифиллом зависимости (@angular, RxJS ...) [размер ES5: 127 КБ для нового приложения Angular CLI пусто, 37 КБ сжато].dist/index.html
точка входа вашего приложения.dist/runtime-[es-version].[hash].bundle.js
веб-загрузчикdist/style.[hash].bundle.css
определения стиляdist/assets
ресурсы, скопированные из конфигурации ресурсов Angular CLIразвертывание
Вы можете получить предварительный просмотр вашего приложения с помощью
ng serve --prod
команды, которая запускает локальный HTTP-сервер, чтобы приложение с рабочими файлами было доступно по адресу http: // localhost: 4200 .Для производственного использования вы должны развернуть все файлы из
dist
папки на HTTP-сервере по вашему выбору.источник
2.0.1 Final
используя Gulp (TypeScript - Target: ES5)Настройка OneTime
npm install
(запускается в cmd, когда direcory является projectFolder)Шаги объединения
npm run bundle
(запускается в cmd, когда direcory является projectFolder)пакеты генерируются в projectFolder / bundles /
Вывод
bundles/dependencies.bundle.js
[ размер: ~ 1 МБ (как можно меньше)]bundles/app.bundle.js
[ размер: зависит от вашего проекта , мой ~ 0,5 МБ ]Файловая структура
dist-systemjs.config.js
тега после тегов комплекта по-прежнему позволяет программе запускаться, но комплект зависимостей будет игнорироваться и зависимости будут загружаться изnode_modules
папки.Лучшее, что я мог сделать еще :)
источник
inline-templates
запуске он вставляет шаблоны, а затем создает копию всех папок и файлов приложения вdist/app
. Тогда вdist-systemjs.config.js
сопоставленииapp
сdist/app
которой находится папка , в которой не будет существовать , если вы используетеdist
папку в корневом каталоге. Разве вы не хотите запускать свое приложение изdist
папки? И если это так, у вас не будетdist
папки, вложенной в корневуюdist
папку. Должно быть, я что-то здесь упускаю. Вам не нужно указывать systemjs использовать ваши связанные файлы, а не обычные файлы, найденные вdist/app
папке?Angular 2 с Webpack (без настройки CLI)
1- Учебник от команды Angular2
Команда Angular2 опубликовала руководство по использованию Webpack
Я создал и поместил файлы из учебника в небольшой начальный проект GitHub . Таким образом, вы можете быстро попробовать рабочий процесс.
Инструкции :
установка npm
нпм начало . Для разработки. Это создаст виртуальную папку «dist», которая будет загружена в реальном времени по адресу вашего локального хоста.
npm запустить сборку . Для производства. «Это создаст физическую версию папки« dist », которую можно отправить на веб-сервер. Папка dist имеет размер 7,8 МБ, но для загрузки страницы в веб-браузер требуется всего 234 КБ».
2 - Стартовый комплект Webkit
Этот стартовый комплект Webpack предлагает больше возможностей для тестирования, чем приведенный выше учебник, и кажется довольно популярным.
источник
Рабочий процесс Angular 2 с помощью SystemJs builder и gulp
У Angular.io есть краткое руководство. Я скопировал этот учебник и расширил его несколькими простыми задачами для объединения всего в папку dist, которую можно скопировать на сервер и работать точно так же. Я попытался оптимизировать все, чтобы хорошо работать на Jenkis CI, поэтому node_modules можно кэшировать и не нужно копировать.
Исходный код с примером приложения на Github: https://github.com/Anjmao/angular2-production-workflow
Шаги к производствуУзел : Хотя вы всегда можете создать свой собственный процесс сборки, но я настоятельно рекомендую использовать angular-cli, потому что у него есть все необходимые рабочие процессы, и он отлично работает сейчас. Мы уже используем его в производстве и не имеем никаких проблем с angular-cli.
источник
Angular CLI 1.xx (работает с Angular 4.xx, 5.xx)
Это поддерживает:
Начальная настройка
Вы можете добавить
--style=scss
поддержку SASS .scss.Вы можете добавить
--ng4
для использования Angular 4 вместо Angular 2.После создания проекта CLI автоматически запустится
npm install
для вас. Если вы хотите использовать вместо этого Yarn или просто хотите посмотреть на скелет проекта без установки, проверьте, как это сделать, здесь .Bundle Steps
Внутри папки проекта:
В текущей версии вам нужно указать--aot
вручную, потому что это может быть использовано в режиме разработки (хотя это не практично из-за медлительности).Это также выполняет компиляцию AoT для еще меньших пакетов (без углового компилятора, вместо этого генерируется вывод компилятора). Пакеты намного меньше с AoT, если вы используете Angular 4, так как сгенерированный код меньше.
Вы можете протестировать свое приложение с AoT в режиме разработки (исходные карты, без минификации) и AoT, запустив
ng build --aot
.Вывод
Выходной каталог по умолчанию - это
./dist
, хотя его можно изменить в./angular-cli.json
.Развертываемые файлы
Результатом шага сборки является следующее:
(Примечание:
<content-hash>
относится к хешу / отпечатку пальца содержимого файла, предназначенного для очистки кеша, это возможно, поскольку Webpack сам пишетscript
теги)./dist/assets
Файлы скопированы как есть
./src/assets/**
./dist/index.html
От
./src/index.html
, после добавления сценариев webpack к нему,файл исходного кода настраивается в
./angular-cli.json
./dist/inline.js
Небольшой погрузчик для веб-пакетов / с полифилом
./dist/main.<content-hash>.bundle.js
Основной файл .js, содержащий все созданные и импортированные скрипты .js.
./dist/styles.<content-hash>.bundle.js
Когда вы используете загрузчики Webpack для CSS, что является способом CLI, они загружаются через JS здесь
В более старых версиях он также создавал gzip-версии для проверки их размера и
.map
файлы исходных карт, но этого больше не происходит, так как люди постоянно просили их удалить.Другие файлы
В некоторых других случаях вы можете найти другие нежелательные файлы / папки:
./out-tsc/
Из
./src/tsconfig.json
-хoutDir
./out-tsc-e2e/
Из
./e2e/tsconfig.json
-хoutDir
./dist/ngfactory/
Из компилятора AoT (не настраивается без разветвления CLI начиная с бета-версии 16)
источник
<content-hash>
из комплекта в prod. это может вызвать проблемы при получении последней комплектации?На сегодняшний день я все еще нахожу кулинарную книгу с опережением времени как лучший рецепт для комплектации. Вы можете найти его здесь: https://angular.io/docs/ts/latest/cookbook/aot-compiler.html
До сих пор мой опыт работы с Angular 2 заключался в том, что AoT создает самые маленькие сборки практически без времени загрузки. И самое главное, поскольку вопрос здесь о - вам нужно только отправить несколько файлов в производство.
Похоже, это связано с тем, что компилятор Angular не будет поставляться с производственными сборками, поскольку шаблоны компилируются «впереди времени». Также очень здорово видеть, как разметка вашего HTML-шаблона преобразована в инструкции javascript, которые было бы очень трудно преобразовать в исходный HTML-код.
Я сделал простое видео, где демонстрирую размер загрузки, количество файлов и т. Д. Для приложения Angular 2 в сборке dev против AoT - вы можете увидеть здесь:
https://youtu.be/ZoZDCgQwnmQ
Вы найдете исходный код, используемый в видео здесь:
https://github.com/fintechneo/angular2-templates
источник
источник
Вы можете развернуть ваше угловое приложение,
github
используя angular-cli-ghpagesПроверьте ссылку, чтобы найти, как развернуть с помощью этого Cli.
развернутый сайт будет храниться в какой - либо ветви в
github
типичноGH-страница
use может клонировать ветку git и использовать ее как статический сайт на вашем сервере
источник
«Лучший» зависит от сценария. Есть моменты, когда вы заботитесь только о наименьшем возможном единственном пакете, но в больших приложениях вам может потребоваться отложенная загрузка. В какой-то момент становится нецелесообразным обслуживать все приложение как единый пакет.
В последнем случае Webpack, как правило, лучший способ, так как он поддерживает разбиение кода.
Для одного пакета я бы рассмотрел Rollup или компилятор Closure, если вы чувствуете себя смелым :-)
Я создал образцы всех угловых пакетов, которые я когда-либо использовал здесь: http://www.syntaxsuccess.com/viewarticle/angular-production-builds
Код можно найти здесь: https://github.com/thelgevold/angular-2-samples
Угловая версия: 4.1.x
источник
Просто установите angular 4 с помощью webpack 3 в течение одной минуты, и ваш комплект ENV для разработки и производства будет готов без каких-либо проблем, просто следуйте приведенному ниже документу github.
https://github.com/roshan3133/angular2-webpack-starter
источник
Пожалуйста, попробуйте команду CLI ниже в текущем каталоге проекта. Это создаст пакет папок dist. так что вы можете загрузить все файлы в папке dist для развертывания.
ng build --prod --aot --base-href.
источник
ng serve работает для обслуживания нашего приложения в целях разработки. Как насчет производства? Если мы посмотрим на наш файл package.json, то увидим, что есть сценарии, которые мы можем использовать:
Сценарий сборки использует сборку Angular CLI ng с флагом --prod. Давайте попробуем это сейчас. Мы можем сделать это одним из двух способов:
# используя сценарии npm
# используя cli напрямую
На этот раз нам дается четыре файла вместо пяти. Флаг --prod указывает Angular, чтобы сделать наше приложение намного меньше по размеру.
источник