Эта история предназначена для людей, которые подписались на плейлисты YouTube MEAN Stack Front To Back, чтобы настроить среду MEAN.
Я не хотел запускать ng build
каждый раз при развертывании на heroku. Итак, вот как запустить его автоматически. Мы будем использовать npm postbuild
и postinstall
.
Запустите npm install для вашего приложения angular
Когда ваше среднее приложение будет развернуто на heroku, они будут использовать package.json в корневом каталоге. npm install
должен быть запущен для вашего приложения angular.
Откройте package.json
в родительском каталоге и вставьте следующую строку в scripts
tag:
"scripts": { ... "heroku-postbuild": "cd ANGULAR_APP_FOLDER && npm install" }
heroku-postbuild
- это тег, используемый только в среде Heroku. Он запускает указанную команду после того, как Heroku построит ваше приложение. (Пояснение к Heroku Devcenter)
Запустите ng build после установки пакета
Перейдите в папку приложения angular и откройте package.json
(ПРИМЕЧАНИЕ: это приложение ANGULAR package.json. В отличие от package.json на предыдущем шаге). Вставьте следующую строку в scripts
tag:
"scripts": { ... "postinstall": "ng build --aot -prod" }
Команда в postinstall
выполняется после установки пакета npm. Пришло время создать приложение angular. Вы можете проверить параметры клика здесь.
Изменить devDependencies и dependencies
Не закрывайте приложение Angular package.json
open. Вставьте следующие пакеты в dependencies
.
Angular CLI работает в среде heroku, в которой Angular CLI не установлен по умолчанию. Поэтому нам нужно установить Angular CLI в производственной среде.
"@angular/cli": "^1.0.1", "@angular/compiler-cli": "^2.3.1", "typescript": "^2.0.3"
Удалите следующие библиотеки из devDependencies
. Поскольку они устанавливаются в производственной среде, нам не нужно хранить их в среде разработки.
"@angular/compiler-cli" "typescript"
Укажите, какой узел и версию npm вы хотите использовать
Откройте package.json
под папкой вашего проекта. Вставьте следующие строки:
"engines": { "node": "7.8.0", "npm": "4.6.1" }
Без этого npm жалуется на UNMET DEPENDENCIES, когда вы нажимаете на heroku.
Эти две ссылки очень помогли решить проблему. Спасибо.