Транспилятор Angular2 TypeScript с Minification/Uglify

Я разрабатываю веб-приложение в Visual Studio 2015 с помощью Angular2 и TypeScript. Я использую Gulp для создания распределенных мини-файлов js. С Angular2 я вижу, что нет необходимости транспилировать TypeScript ни с Visual Studio, ни с Gulp как< strong>SystemJs делает это при импорте модуля.

Теперь вопрос:

Как SystemJs работает с минификацией, укрупнением и так далее?

System.import('app/main').then(null, console.error.bind(console));

Как мне уменьшить или уменьшить это?


comment
Проанализировав немного больше, я вижу, что System.config имеет свойство с именем bundle, где я могу связать несколько своих модулей. Я не нашел ничего, кроме уродства.   -  person DAG    schedule 05.03.2016
comment
Эти параметры принадлежат SystemJS Builder. Учебники Angular2 не используют SystemJS Builder   -  person Eric Martinez    schedule 05.03.2016


Ответы (1)


SystemJS это

Универсальный загрузчик динамических модулей — загружает модули ES6, AMD, CommonJS и глобальные скрипты в браузере и NodeJS. Работает как с Traceur, так и с Babel.

На самом деле существует два способа использования SystemJS:

  • Перенесите файлы TypeScript в браузер. Это означает, что SystemJS загружает ваши модули, загружает соответствующие файлы TypeScript и транспилирует их на лету. В этом случае можно использовать следующую конфигурацию:

    <script>
      System.config({
        transpiler: 'typescript', 
        typescriptOptions: {
          emitDecoratorMetadata: true
        },
        packages: {
          'app': {
            defaultExtension: 'ts'
          }
        } 
      });
      System.import('app/main')
         .then(null, console.error.bind(console));
    </script>
    
  • Использовать ранее транспилированные файлы. В этом случае вам нужно использовать компилятор TypeScript для генерации файлов JS из файлов TypeScript. Эти файлы JS напрямую зависят от SystemJS API для регистрации и импорта модулей.

    <script>
      System.config({
        packages: {
          'app': {
            defaultExtension: 'js'
          }
        } 
      });
      System.import('app/main')
         .then(null, console.error.bind(console));
    </script>
    

Этот вопрос также может помочь вам:

Это для контекста. Что касается вашего вопроса, похоже, вы используете первый вариант. Чтобы ответить на ваш вопрос, минимизация вещей имеет смысл только для второго варианта. На самом деле это соответствует оптимизации элементов для загрузки для ваших приложений (количество сетевых вызовов, размеры файлов). Поскольку вы используете скомпилированные JS-файлы для этой опции, вы можете их уменьшить/уменьшить. Если вы хотите создать только один файл JS, вы можете рассмотреть свойство outFile компилятора TypeScript.

См. этот вопрос для более подробной информации:

person Thierry Templier    schedule 05.03.2016
comment
Это блестяще. Большое спасибо. Как я вижу в упомянутом посте, даже System.config больше не нужен. Ты знаешь почему? - person DAG; 05.03.2016
comment
Пожалуйста! Вам не нужен System.config, так как модули outFile явно зарегистрированы с помощью System.register в выходном файле. Вам не нужно делать конфигурацию соответствия между модулями и именами файлов (что нужно без опции)... - person Thierry Templier; 07.03.2016