0

В настоящее время я разрабатываю приложение Angular2 и хочу настроить непрерывную интеграцию и непрерывное развертывание с помощью менеджера выпуска Azure.постоянно развертывает приложение Angular2 для Azure Web App с помощью управления релизами и angular-cli

Все, что я до сих пор работал: CI и CD для WebApp, home/site/wwwroot содержит исходные файлы (без node_modules).

Не работает: приложение не запускается. Просмотр URL-адреса приводит к заполнителю (например, «Загрузка ...»). На моей локальной машине я бы назвал «npm install», а затем «npm start», который в свою очередь вызывает «tsc & & одновременно« tsc -w »« lite-server ». По моему мнению, это нормально для среды разработчиков, но не должно использоваться в производстве.

вещей я попытался:

  1. добавление «NPM установки», чтобы построить шаг приводит к очень долго времени сборки Ьса из загрузки пакетов и долгого времени развертывания Ьса из большого числа пакетов
  2. добавление «npm install -production» сокращает время сборки и развертывания, но запуск «npm start» на целевом компьютере выходит из строя, потому что некоторые отсутствующие пакеты (содержатся в DevDependencies)
  3. выполнение «npm install» и «npm start» на целевая машина с консолью, похоже, работает, но не может быть автоматизирована

Поэтому вопрос (ы):

  1. , что такое правильный способ для создания и развертывания приложения Angular2 на лазурном Web App?
  2. Как обращаться с node_modules?

Благодарим вас заранее.

ОБНОВЛЕНИЕ: Поскольку я переключился на угло-кли, все становится понятнее. На моей машине dev я использую «ng build» и «ng serve» для запуска локально. Для развертывания я использую «ng build -prod» и развертываю содержимое созданного каталога «dist» для производства. Однако, это все еще обходной путь, так как я не могу заставить агента сборки делать эти шаги. Я попытался переместить ссылку angular-cli на «Dependencies», а затем вызвать «npm install» и «ng build -prod» для агента, чтобы получить папку «dist». Конфигурация My Deployment затем скопирует содержимое папки dist в веб-приложение. Затем «нг сборки -prod» шаг терпит неудачу

«нг» не является внутренней или внешней командой

Я вроде понимаю, что я не могу установить и запустить любой пакет на сборке агент, но я бы очень хотел использовать angular-cli для создания приложения, так как он включает в себя веб-пакет. Есть ли возможность получить эту работу, как описано?

ответ

1

Вы можете использовать Custom Deployment Script For Azure Web Apps using Git Deployment для достижения ваших требований.

Специально для angular2 в файле package.json есть несколько модификаций, чтобы сделать угловую2 успешно развернутой в Azure Web Apps.

  1. Переместить все модули зависимостей в разделе devDependeccies в раздел dependencies.
  2. Использовать "postinstall": "typings install && tsc" вместо "postinstall": "typings install".

Для вопроса 2 вам не нужно нажимать папку node_modules с вашим проектом. Если вы указали в своих зависимостях в своем package.json, тогда kudu будет клонировать ваш проект и запускать npm install –production, чтобы загрузить правильные вещи.

+0

Извините, что спросила, но я новичок в Angular, и некоторые понятия все еще меня путают. Означает ли это, что процесс сборки просто копирует файлы в vm, а kudu запускает сценарий postinstall, который, в свою очередь, устанавливает все узловые модули? Если я прав, какой смысл строить тогда? Как измерить качество сборки? И если я переведу все «DevDependencies» в «Dependencies», то в чем смысл использования devDependencies? Разве они не должны использоваться только в разработке? – user3838018

+0

Аналогичный вопрос можно найти здесь [http://stackoverflow.com/questions/40231071/error-app-main-js-404-not-found-on-azure) –

+0

На пути к вашим запутанным концепциям я буду сделайте несколько объяснений. Как только вы нажмете свой код (через git push) с локального git repo на azure remote, kudu синхронизирует 'repository' с' wwwroot', затем запустит 'npm install --production' и, наконец, команду' postinstall' (сценарий npm) который будет запускаться автоматически после установки пакета. –