На angular.io есть руководство по быстрому запуску, в котором используются typescript и systemjs. Теперь, когда у меня запущен этот miniapp, как мне создать что-то развертываемое? Я не мог найти никакой информации об этом.
Нужны ли мне дополнительные инструменты, какие-либо дополнительные настройки в System.config?
(Я знаю, что могу использовать webpack и создать один файл bundle.js, но я бы хотел использовать systemjs, как он используется в учебнике)
Может ли кто-нибудь поделиться своим процессом сборки с этой настройкой (Angular 2, TypeScript, systemjs)
typescript
angular
systemjs
Брайан Г. Белл
источник
источник
Ответы:
Ключевой момент, который нужно понять на этом уровне, заключается в том, что, используя следующую конфигурацию, вы не можете напрямую объединять скомпилированные файлы JS.
В конфигурации компилятора TypeScript:
В HTML
На самом деле эти JS-файлы будут содержать анонимные модули. Анонимный модуль - это файл JS, который использует
System.register
имя модуля в качестве первого параметра, но без него. Это то, что компилятор машинописного текста генерирует по умолчанию, когда systemjs настроен как диспетчер модулей.Итак, чтобы все ваши модули были в одном JS-файле, вам необходимо использовать это
outFile
свойство в конфигурации компилятора TypeScript.Для этого вы можете использовать следующий глоток:
Это может быть объединено с другой обработкой:
app.js
файлvendor.js
файл для сторонних библиотекboot.js
файл для импорта модуля, запускающего приложение. Этот файл должен быть включен в конец страницы (когда вся страница загружена).index.html
чтобы учесть эти два файлаВ задачах gulp используются следующие зависимости:
Ниже приведен образец для адаптации.
Создать
app.min.js
файлСоздать
vendors.min.js
файлСоздать
boot.min.js
файлconfig.prod.js
Просто содержит следующее:Обновите
index.html
файлЭто
index.html
выглядит так:Обратите внимание, что
System.import('boot');
необходимо сделать это в конце тела, чтобы дождаться, пока все компоненты вашего приложения будут зарегистрированы изapp.min.js
файла.Я не описываю здесь способ обработки минификации CSS и HTML.
источник
Вы можете использовать команду сборки angular2-cli
https://github.com/angular/angular-cli/wiki/build#bundling
Обновить
Этот ответ был отправлен, когда angular2 был в rc4
Я попробовал еще раз на angular-cli beta21 и angular2 ^ 2.1.0, и он работает, как ожидалось
Этот ответ требует инициализации приложения с помощью angular-cli, который вы можете использовать
Или на существующем
Обновление 08.06.2018
Для angular 6 синтаксис другой.
Проверить документацию
источник
Вы можете создать проект Angular 2 (2.0.0-rc.1) в Typescript, используя SystemJS с Gulp и SystemJS-Builder .
Ниже представлена упрощенная версия сборки, объединения и минимизации Tour of Heroes под управлением 2.0.0-rc.1 ( полный исходный код , живой пример ).
gulpfile.js
system.config.js
источник
gulp <taskname>
где «taskname» - это имя задачи, которая вызывает построитель SystemJS, в моем примере выше это такbundle:app
. В этой задаче Gulp вы можете использовать модуль npm systemjs-builder, чтобы указать конфигурацию вашей системы и файл Outfile.Вот мой шаблон MEA2N для Angular 2: https://github.com/simonxca/mean2-boilerplate
Это простой шаблон, который используется
tsc
для объединения вещей. (На самом деле использует grunt-ts , который по своей сути является простоtsc
командой.) Нет необходимости в Wekpack и т.д.Независимо от того, используете ли вы grunt, идея такова:
ts/
(пример:public/ts/
)tsc
для зеркального отображения структуры каталогов вашейts/
папки вjs/
папку и просто ссылки на файлы вjs/
папке в вашемindex.html
.Чтобы заставить grunt-ts работать (должна быть эквивалентная команда для простого tsc, Gulp и т. Д.), У вас есть свойство в
tsconfig.json
вызываемом файле, и укажите"outDir": "../js"
его в своемgruntfile.js
с помощью:Затем запустите
grunt ts
, что приведет кpublic/ts/
отображению вашего приложенияpublic/js/
.Там. Очень легко понять. Не лучший подход, но хороший для начала.
источник
Самый простой способ связать angular rc1 для systemJs, который я нашел, - это использовать
gulp
иsystemjs-builder
:Как указано в комментариях, у systemJs в настоящее время есть проблемы при объединении компонентов с использованием
moduleId: module.id
https://github.com/angular/angular/issues/6131
Текущая рекомендация (angular 2 rc1), похоже, заключается в использовании явных путей, т.е.
moduleId: '/app/path/'
источник
@Component
декораторе относительные пути к внешним шаблонам .bundle.js
пытается разрешить пути как абсолютные, даже если они относительные, что вызывает ошибку 404 (см. stackoverflow.com/questions/37497635/… ). Как вы с этим справились?moduleId
относительный путь?moduleId: module.id
в@Component
templateUrl
и сводит на нет цель иметьmoduleId
в первую очередь. Я пытаюсь использовать относительные пути в соответствии с рекомендациями ( angular.io/docs/ts/latest/cookbook/… )moduleId: '/app/components/home/'
Я использовал expressjs на бэкэнде для обслуживания моего проекта ng2. Вы можете проверить это на моей странице github: https://github.com/echonax/ng2-beta-and-test-framework
источник
На веб-сайте Angular.io в разделе Advanced / Deployment рекомендуется, чтобы самый простой способ развертывания - «скопировать среду разработки на сервер».
пройдите по разделу: Возможно простейшее развертывание. Окончательные файлы проекта показаны внутри раздела кода. Обратите внимание, что он уже настраивает код для загрузки файлов пакета npm из Интернета (вместо локальной папки npm_modules).
убедитесь, что он запущен на вашем локальном компьютере (запуск npm). Затем в папке проекта скопируйте все, что находится в подпапке '/ src', в корзину S3, которую вы настроили. Вы можете использовать перетаскивание для копирования, во время этого процесса вы получаете возможность выбрать настройку разрешений для файлов, сделав их «доступными для чтения» для «всех».
на вкладке «Свойства» сегмента найдите панель «Хостинг статического веб-сайта», установите флажок «Использовать этот сегмент для размещения веб-сайта» и укажите «index.html» как в индексном документе, так и в документе с ошибкой.
нажмите на конечную точку статического веб-сайта, ваш проект будет запущен!
источник